102 lines
3 KiB
C
102 lines
3 KiB
C
//
|
|
// DECLSPEC.H: Define the DLL_BASED and DLL_CLASS manifests for
|
|
// DLL export/import decoration
|
|
//
|
|
|
|
// BUGBUG: Temporarily DISABLED until __declspec works better
|
|
//
|
|
// If a fixed header files is needed, define _DECLSPEC_WORKS_ and this
|
|
// header file will work correctly.
|
|
//
|
|
#if !defined(_DECLSPEC_WORKS_)
|
|
#if !defined(_DECLSPEC_H_)
|
|
|
|
#define _DECLSPEC_H_
|
|
|
|
// Create benign definitions for __declspec macros.
|
|
#define DLL_TEMPLATE
|
|
#define DLL_CLASS class
|
|
#define DLL_BASED
|
|
|
|
#endif
|
|
#endif
|
|
|
|
#if !defined(_DECLSPEC_H_)
|
|
|
|
#define _DECLSPEC_H_
|
|
|
|
//
|
|
// DECLSPEC.H: Define the DLL_BASED and DLL_CLASS manifests for
|
|
// DLL export/import decoration
|
|
//
|
|
// This file is based upon the following macro definitions:
|
|
//
|
|
// _CFRONT_PASS_ defined in MAKEFILE.DEF for CFRONT preprocessing;
|
|
//
|
|
// _cplusplus defined for all C++ compilation;
|
|
//
|
|
// NETUI_DLL defined in $(UI)\COMMON\SRC\DLLRULES.MK, which is
|
|
// included by all components which live in NETUI DLLs.
|
|
//
|
|
// DLL_BASED_DEFEAT optional manifest that suppresses __declspec;
|
|
//
|
|
// This file generates two definitions:
|
|
//
|
|
// DLL_BASED which indicates that the external function, data item
|
|
// or class lives in a NETUI DLL; expands to nothing,
|
|
// "_declspec(dllimport)", or "_declspec(dllexport)"
|
|
// depending upon the manifest above.
|
|
//
|
|
// DLL_CLASS which expands to "class", "class _declspec(dllimport)",
|
|
// or "class _declspec(dllexport)" depending on the
|
|
// manifests above.
|
|
//
|
|
// DLL_TEMPLATE expands to nothing outside of the DLLs; expands to
|
|
// DLL_BASED inside the DLLs. In other words, the standard
|
|
// template is local to the defining link scope. To
|
|
// declare a template as "dllimport", another set of
|
|
// macros exists which allows direct specification of the
|
|
// desired decoration.
|
|
//
|
|
|
|
#if defined(_CFRONT_PASS_)
|
|
#define DLL_BASED_DEFEAT
|
|
#endif
|
|
|
|
// Define DLL_BASED for all compiles
|
|
|
|
#if defined(DLL_BASED_DEFEAT)
|
|
// If CFront, no decoration allowed
|
|
#define DLL_BASED
|
|
#else
|
|
#if defined(NETUI_DLL)
|
|
// If C8 and inside DLL, export stuff
|
|
#define DLL_BASED __declspec(dllexport)
|
|
#else
|
|
// If C8 and inside DLL, import stuff
|
|
#define DLL_BASED __declspec(dllimport)
|
|
#endif
|
|
#endif
|
|
|
|
// If C++, define the DLL_CLASS and DLL_TEMPLATE macros
|
|
|
|
#if defined(__cplusplus)
|
|
|
|
#if defined(DLL_BASED_DEFEAT)
|
|
// If CFRONT, no decoration allowed
|
|
#define DLL_CLASS class
|
|
#define DLL_TEMPLATE
|
|
#else
|
|
#define DLL_CLASS class DLL_BASED
|
|
#if defined(NETUI_DLL)
|
|
// Templates expanded in the DLL are exported
|
|
#define DLL_TEMPLATE DLL_BASED
|
|
#else
|
|
#define DLL_TEMPLATE
|
|
#endif
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#endif // !_DECLSPEC_H_
|