//
//    
//  Copyright 2000 Compaq Computer Corporation
//
//  COMPAQ Registered in U.S. Patent and Trademark Office.
//
//  Confidential computer software. Valid license from Compaq required for
//  possession, use or copying. Consistent with FAR 12.211 and 12.212,
//  Commercial Computer Software, Computer Software Documentation, and
//  Technical Data for Commercial Items are licensed to the U.S. Government
//  under vendor's standard commercial license.
//
//

#ifndef __STL_MACROS
#define __STL_MACROS

#if defined(__DECCXX)
#   ifdef __PRAGMA_ENVIRONMENT
#      pragma __environment __save
#      pragma __environment __cxx_header_defaults
#   endif
#endif

#if defined(__VMS) && defined(__DECCXX) && !defined(__DECFIXCXXL1158)
#pragma __extern_prefix __save
#pragma __extern_prefix "CXXL$" 
#endif

#if defined(__DECCXX) && (defined(__STD_CFRONT) || defined(__STD_MS))
#define __DECPROTECTED	public
#define __DECPRIVATE 	public
#else
#define __DECPROTECTED	protected
#define __DECPRIVATE	private
#endif

#if defined (__VMS)
#define __CXX_MUTEX_CREATE CXX_MUTEX_CREATE
#define __CXX_MUTEX_DESTROY CXX_MUTEX_DESTROY
#define __CXX_MUTEX_LOCK CXX_MUTEX_LOCK
#define __CXX_MUTEX_UNLOCK CXX_MUTEX_UNLOCK
#else
#define __CXX_MUTEX_CREATE __cxx_mutex_create
#define __CXX_MUTEX_DESTROY __cxx_mutex_destroy
#define __CXX_MUTEX_LOCK __cxx_mutex_lock
#define __CXX_MUTEX_UNLOCK __cxx_mutex_unlock
#endif

//
// run-time entrypoints for the threadsafe support
//
extern void __CXX_MUTEX_LOCK(void*&);
extern void __CXX_MUTEX_UNLOCK(void*&);
#if defined(__DECCXX) && !defined(__DECFIXCXXL1564) && !defined(__linux) \
    && ((defined(__MODEL_ARM) \
    && (defined(__unix) || (defined(__VMS) && (__VMS_VER >= 70000000)))) \
    || (defined(__VMS) && (__VMS_VER < 70000000)))
extern int  __CXX_MUTEX_CREATE(void*&);
#else
extern void __CXX_MUTEX_CREATE(void*&);
#endif
extern void __CXX_MUTEX_DESTROY(void*&);

#if defined(__VMS) && defined(__DECCXX) && !defined(__DECFIXCXXL1158)
#   pragma __extern_prefix __restore
#endif

#if defined(__DECCXX)
#   ifdef __PRAGMA_ENVIRONMENT
#      pragma __environment __restore
#   endif
#endif

#endif /* __STL_MACROS */
