// @<COPYRIGHT_START>@
// ===============================================
// Copyright 2010 Siemens PLM Software. All Rights Reserved.
// ===============================================
// @<COPYRIGHT_END>@

/**
    @file

    Abstract base class for a family of client cache manager classes. This
    class defines the required methods the derived classes must provide and also
    contains a number methods used by these classes.
*/


#include <common/library_indicators.h>

#ifdef EXPORTLIBRARY
#define EXPORTLIBRARY something else
#error ExportLibrary was already defined
#endif

#define EXPORTLIBRARY            libclientcache

#if !defined(IPLIB)
#   error IPLIB is not defined
#endif

/* Handwritten code should use CLIENTCACHE_API, not CLIENTCACHEEXPORT */

#define CLIENTCACHE_API CLIENTCACHEEXPORT

/* Support CLIENTCACHEEXPORT for autogenerated schema/pif code only */

#if IPLIB==libclientcache
#   if defined(__lint)
#       define CLIENTCACHEEXPORT       __export(clientcache)
#       define CLIENTCACHEGLOBAL       extern __global(clientcache)
#       define CLIENTCACHEPRIVATE      extern __private(clientcache)
#   elif defined(_WIN32)
#       define CLIENTCACHEEXPORT       __declspec(dllexport)
#       define CLIENTCACHEGLOBAL       extern __declspec(dllexport)
#       define CLIENTCACHEPRIVATE      extern
#   else
#       define CLIENTCACHEEXPORT
#       define CLIENTCACHEGLOBAL       extern
#       define CLIENTCACHEPRIVATE      extern
#   endif
#else
#   if defined(__lint)
#       define CLIENTCACHEEXPORT       __export(clientcache)
#       define CLIENTCACHEGLOBAL       extern __global(clientcache)
#   elif defined(_WIN32) && !defined(WNT_STATIC_LINK)
#       define CLIENTCACHEEXPORT      __declspec(dllimport)
#       define CLIENTCACHEGLOBAL       extern __declspec(dllimport)
#   else
#       define CLIENTCACHEEXPORT
#       define CLIENTCACHEGLOBAL       extern
#   endif
#endif

