This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/Borland/BCC55/Include/Rw/stdwind.h

210 lines
7.3 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef __STDWIND_H
#define __STDWIND_H
#pragma option push -b -a8 -pc -Vx- -Ve- -w-inl -w-aus -w-sig
#ifndef __RWSTDWIND_H__
#define __RWSTDWIND_H__
/***************************************************************************
*
* stdwind.h - Microsoft Windows related directives.
*
* $Id: stdwind.h,v 1.19 1996/09/24 19:42:16 smithey Exp $
*
***************************************************************************
*
* Copyright (c) 1994-1999 Rogue Wave Software, Inc. All Rights Reserved.
*
* This computer software is owned by Rogue Wave Software, Inc. and is
* protected by U.S. copyright laws and other laws and by international
* treaties. This computer software is furnished by Rogue Wave Software,
* Inc. pursuant to a written license agreement and may be used, copied,
* transmitted, and stored only in accordance with the terms of such
* license and with the inclusion of the above copyright notice. This
* computer software or any other copies thereof may not be provided or
* otherwise made available to any other person.
*
* U.S. Government Restricted Rights. This computer software is provided
* with Restricted Rights. Use, duplication, or disclosure by the
* Government is subject to restrictions as set forth in subparagraph (c)
* (1) (ii) of The Rights in Technical Data and Computer Software clause
* at DFARS 252.227-7013 or subparagraphs (c) (1) and (2) of the
* Commercial Computer Software Restricted Rights at 48 CFR 52.227-19,
* as applicable. Manufacturer is Rogue Wave Software, Inc., 5500
* Flatiron Parkway, Boulder, Colorado 80301 USA.
*
**************************************************************************/
/*
* Special stuff for 16-bit Windows (__WIN16__)
* and Windows NT / Win32s (__WIN32__).
*
* Under Windows, these header files can be used in two different modes:
* as part of a DLL, or as part of a regular (static) library.
* For each of these two ways, we can either be COMPILING the library,
* or USING the library. This makes a matrix of four possible situations.
*
*************************************************************************
****************************** DLL *************************************
*************************************************************************
*
* Creating a DLL
*
* The macro __DLL__ should be define when compiling to create a DLL.
*
* The Borland compilers automatically do this if either the -WD or
* -WDE switch is being used. In this situation, the macro
* _RWSTDExport expands to _export.
*
* For other compilers, we must define __DLL__ where appropriate
* if the compiler doesn't. See the example for Microsoft below.
*
* _RWSTDExport expands to _export by default. Massage as
* necessary for your compiler; again see below for the Microsoft
* specific directives.
*
* Using the resultant DLL
*
* In order to use the resultant DLL, you must define the macro _RWSTDDLL
* when compiling. This will communicate to the Rogue Wave header files
* your intention to use a DLL version of the Rogue Wave library.
*
* If you intend to use a DLL version of the Borland RTL as well, then you
* should also define the macro _RTLDLL, as per Borland's instructions.
*
* You must also specify the -WS switch ("smart callbacks") for the
* Borland Compiler.
*
*
*************************************************************************
*********************** Static Windows Library **************************
*************************************************************************
*
*
* Creating a _RW static Windows library
*
* If your intention is to create a Rogue Wave library to be used as
* as a static Windows library, then one of the macros __WIN16__ or __WIN32__
* must have been defined in compiler.h (or by the compiler directly).
*
* Borland: __WIN16__ will be defined if both _Windows and __MSDOS__
* is defined. _Windows will be defined automatically if
* any -W switch is used. Borland defines __WIN32__ automatically
* in their 32-bit compiler for Windows NT / Win32s.
*
* Microsoft: Microsoft automatically defines _WINDOWS if you use the
* /GA (preferred) or /GW switch.
* __WIN32__ will only be defined if either it, or WIN32,
* is _EXPLICITly defined on the cl command line.
*
*
* Using a _RW static Windows library
*
* Nothing special needs to be done. Just link compile with the appropriate
* compile switches and link in the _RW static Windows library.
*
*/
/*
* Check for Microsoft C/C++ and massage as necessary.
*/
#if defined(_MSC_VER)
# if defined(_WINDLL) && !defined(__DLL__)
# define __DLL__ 1
# endif
# if !defined(_export)
# define _export __export
# endif
#endif
#ifdef __TURBOC__
# if __TURBOC__ > 0x468
# define _RWSTD_EXPORT_TEMPLATE
# endif
#endif
/* For backwards compatibility: */
#if defined(_RWSTDCLASSDLL) && !defined(_RWSTDDLL)
# define _RWSTDDLL 1
#endif
#if defined(_RWSTDDLL)
# if !defined(__LARGE__) && !defined(__WIN32__)
# error Must use large or flat memory model when compiling or using the Standard Library DLL!
# endif
# if defined(_MSC_VER) || ( defined(__TURBOC__) && __TURBOC__ >= 0x0530 )
# define _RWSTD_USE_DECLSPEC
# endif
# if defined(_RWSTDBUILDDLL)
// Compiling the DLL.
# ifndef _RWSTD_USE_DECLSPEC
# define _RWSTDExport __declspec(dllexport) /* Mark classes as exported */
# if defined (__WIN16__)
# define _RWSTDHuge huge
# else
# define _RWSTDHuge
# endif
# ifdef _RWSTD_EXPORT_TEMPLATE
# define _RWSTDExportTemplate __declspec(dllexport) /* Mark template insts as exported */
# else
# define _RWSTDExportTemplate
# endif
# else /* Microsoft and recent Borland: */
# define _RWSTDExport __declspec(dllexport)
#ifdef __BORLANDC__
# define _RWSTDExportTemplate __declspec(dllexport)
#else
# define _RWSTDExportTemplate
#endif
# define _RWSTDHuge
# endif
# else
// Using the DLL.
# if defined(__WIN16__)
# define _RWSTDExport huge /* Mark classes as huge */
# define _RWSTDHuge huge
# else
# ifndef _RWSTD_USE_DECLSPEC
# define _RWSTDExport __declspec(dllimport)
# ifdef _RWSTD_EXPORT_TEMPLATE
# define _RWSTDExportTemplate _import
# else
# define _RWSTDExportTemplate
# endif
# else
# define _RWSTDExport __declspec(dllimport)
#ifdef __BORLANDC__
# define _RWSTDExportTemplate __declspec(dllimport)
#else
# define _RWSTDExportTemplate
#endif
# endif
# define _RWSTDHuge
# endif
# endif
#else
// Neither compiling, nor using the DLL.
# define _RWSTDExport
# define _RWSTDExportTemplate
# define _RWSTDHuge
#endif
// Borland likes static members of exported template classes to be exported.
// Microsoft forbids it ...
#ifdef __BORLANDC__
# define _RWSTDExportStatic _RWSTDExport
#else
# define _RWSTDExportStatic
#endif
//
// Different compilers expect exported functions defined in different ways.
//
#if defined(_MSC_VER) && !defined(__BORLANDC__)
#define _RWSTDExportFunc(ReturnType) _RWSTDExport ReturnType
#else
#define _RWSTDExportFunc(ReturnType) ReturnType _RWSTDExport
#endif
#endif // __RWSTDWIND_H__
#pragma option pop
#endif /* __STDWIND_H */