/*
******************************************************************************
* Copyright (C) 1996-2001, International Business Machines Corporation and   *
* others. All Rights Reserved.                                               *
******************************************************************************
*/
//  FILE NAME : unicode.cpp
//
//  CREATED
//      Wednesday, December 11, 1996
//  
//  CHANGES
//      Wednesday, February 4,  1998
//      Changed logic in toUpperCase and toLowerCase in order
//      to avoid 0xFFFF to be returned when receiving 
//      confusing Unichar  to lowercase or to uppercase
//      (e.g. Letterlike symbols)
//
//  CHANGES BY
//  Bertramd A. DAMIBA
//
//  CREATED BY
//      Helena Shih
//
//  CHANGES
//      Thursday, April 15, 1999
//      Modified the definitions of all the functions
//      C++ Wrappers for Unicode
//  CHANGES BY
//      Madhu Katragadda
//   5/20/99     Madhu      Added the function u_getVersion()
//  07/09/99     stephen    Added definition for {MIN,MAX}_VALUE
//  11/22/99     aliu       Added MIN_RADIX, MAX_RADIX, digit, forDigit
//****************************************************************************

#include "unicode/utypes.h"

#ifdef ICU_UNICODE_CLASS_USE_DEPRECATES
#include "unicode/uchar.h"
#include "unicode/unicode.h"
U_NAMESPACE_BEGIN

/*
 * Private (sort of) constructors etc., defined only to prevent
 * instantiation and subclassing. Therefore, empty.
 */
Unicode::Unicode() {}
Unicode::Unicode(const Unicode &) {}
Unicode::~Unicode() {}
const Unicode &
Unicode::operator=(const Unicode &) {
    return *this;
}
U_NAMESPACE_END
#endif /* ICU_UNICODE_CLASS_USE_DEPRECATES */
