/*
 * Copyright (c) 1997,1998
 * Babes-Bolyai University, Cluj-Napoca
 *
 * Permission to use, copy, modify, distribute and sell this software
 * and its documentation for any purpose is hereby granted without fee,
 * provided that the above copyright notice appear in all copies and
 * that both that copyright notice and this permission notice appear
 * in supporting documentation.  Babes-Bolyai University makes no
 * representations about the suitability of this software for any
 * purpose.  It is provided "as is" without express or implied warranty.
 */

#ifndef __OCL_DEFS__
#define __OCL_DEFS__

/*
 * Object Constraint Language (OCL) from
 * Unified Modelling Language (UML) Version 1.1
 */

#undef  __UML__
#define __UML__ 0x0110

#undef  __OCL__
#define __OCL__ __UML__

/////////////////////////////////////////////////////////////////////////////
// Configure OCL member implementation

#ifndef __OCL_NO_IMPLEMENTATION
#ifdef RWSTD_COMPILE_INSTANTIATE  // from Rogue Wave Standard C++ Library
#define __OCL_INTERNAL_IMPLEMENTATION
#endif
#define __OCL_INTERNAL_IMPLEMENTATION
#endif  // !__OCL_NO_IMPLEMENTATION

/////////////////////////////////////////////////////////////////////////////
// Configure OCL namespaces

#ifndef __OCL_NO_NAMESPACES
#ifdef __GNUC__  // sorry, namespaces still not implemented in GNU G++
#define __OCL_NO_NAMESPACES
#endif
#if defined __MSC_VER && _MSC_VER < 1100
#define __OCL_NO_NAMESPACES
#endif
#define __OCL_INTERNAL_NAMESPACES
#endif  // !__OCL_NO_NAMESPACES

/////////////////////////////////////////////////////////////////////////////
// Configure OCL using std::

#ifndef __OCL_NO_STD
#ifdef RWSTD_NO_NAMESPACES  // from Rogue Wave Standard C++ Library
#define __OCL_NO_STD
#endif
#ifdef __GNUC__  // sorry, namespaces still not implemented in GNU G++
#define __OCL_NO_STD
#endif
#if defined __MSC_VER && _MSC_VER < 1100
#define __OCL_NO_STD
#endif
#define __OCL_INTERNAL_STD
#endif  // !__OCL_NO_STD

/////////////////////////////////////////////////////////////////////////////
// Configure OCL unicode

#ifndef __OCL_NO_UNICODE
#if (defined WIN32 || defined _WIN32 || defined __WIN32__) && \
     defined UNICODE
#define __OCL_INTERNAL_UNICODE
#endif
#endif  // !__OCL_NO_UNICODE

/////////////////////////////////////////////////////////////////////////////
// Configure external OCL macros

#ifndef __OCL_INTERNAL_IMPLEMENTATION
#define __OCL_NO_IMPLEMENTATION
#endif
#undef  __OCL_INTERNAL_IMPLEMENTATION

#ifndef __OCL_INTERNAL_NAMESPACES
#define __OCL_NO_NAMESPACES
#endif
#undef  __OCL_INTERNAL_NAMESPACES

#ifndef __OCL_INTERNAL_STD
#define __OCL_NO_STD
#endif
#undef  __OCL_INTERNAL_STD

#ifndef __OCL_INTERNAL_UNICODE
#define __OCL_NO_UNICODE
#endif
#undef  __OCL_INTERNAL_UNICODE

/////////////////////////////////////////////////////////////////////////////
// Miscellaneous

#undef max
#undef min

/////////////////////////////////////////////////////////////////////////////

#endif  // __OCL_DEFS__
