home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1997 May / Pcwk0597.iso / borland / cb / setup / cbuilder / data.z / STDWIND.H < prev    next >
C/C++ Source or Header  |  1997-02-28  |  7KB  |  191 lines

  1. #ifndef __RWSTDWIND_H__
  2. #define __RWSTDWIND_H__
  3. /* $Revision:   8.1  $ */
  4.  
  5. /***************************************************************************
  6.  *
  7.  * stdwind.h - Microsoft Windows related directives.
  8.  *
  9.  * $Id: stdwind.h,v 1.8 1995/09/29 22:11:45 smithey Exp $
  10.  *
  11.  ***************************************************************************
  12.  *
  13.  * (c) Copyright 1994, 1995 Rogue Wave Software, Inc.
  14.  * ALL RIGHTS RESERVED
  15.  *
  16.  * The software and information contained herein are proprietary to, and
  17.  * comprise valuable trade secrets of, Rogue Wave Software, Inc., which
  18.  * intends to preserve as trade secrets such software and information.
  19.  * This software is furnished pursuant to a written license agreement and
  20.  * may be used, copied, transmitted, and stored only in accordance with
  21.  * the terms of such license and with the inclusion of the above copyright
  22.  * notice.  This software and information or any other copies thereof may
  23.  * not be provided or otherwise made available to any other person.
  24.  *
  25.  * Notwithstanding any other lease or license that may pertain to, or
  26.  * accompany the delivery of, this computer software and information, the
  27.  * rights of the Government regarding its use, reproduction and disclosure
  28.  * are as set forth in Section 52.227-19 of the FARS Computer
  29.  * Software-Restricted Rights clause.
  30.  *
  31.  * Use, duplication, or disclosure by the Government is subject to
  32.  * restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in
  33.  * Technical Data and Computer Software clause at DFARS 252.227-7013.
  34.  * Contractor/Manufacturer is Rogue Wave Software, Inc.,
  35.  * P.O. Box 2328, Corvallis, Oregon 97339.
  36.  *
  37.  * This computer software and information is distributed with "restricted
  38.  * rights."  Use, duplication or disclosure is subject to restrictions as
  39.  * set forth in NASA FAR SUP 18-52.227-79 (April 1985) "Commercial
  40.  * Computer Software-Restricted Rights (April 1985)."  If the Clause at
  41.  * 18-52.227-74 "Rights in Data General" is specified in the contract,
  42.  * then the "Alternate III" clause applies.
  43.  *
  44.  **************************************************************************/
  45.  
  46. /*
  47.  * Special stuff for 16-bit Windows (__WIN16__)
  48.  * and Windows NT / Win32s (__WIN32__).
  49.  *
  50.  * Under Windows, these header files can be used in two different modes:
  51.  * as part of a DLL, or as part of a regular (static) library.
  52.  * For each of these two ways, we can either be COMPILING the library,
  53.  * or USING the library.  This makes a matrix of four possible situations.
  54.  *
  55.  *************************************************************************
  56.  ******************************  DLL *************************************
  57.  *************************************************************************
  58.  *
  59.  *                         Creating a DLL
  60.  *
  61.  * The macro __DLL__ should be define when compiling to create a DLL.
  62.  *
  63.  *     The Borland compilers automatically do this if either the -WD or
  64.  *     -WDE switch is being used.  In this situation, the macros
  65.  *     RWExport and rwexport expand to _export.
  66.  *
  67.  *     For other compilers, we must define __DLL__ where appropriate
  68.  *     if the compiler doesn't.  See the example for Microsoft below.
  69.  *
  70.  *     RWExport and rwexport expand to _export by default.  Massage as
  71.  *     necessary for your compiler; again see below for the Microsoft
  72.  *     specific directives.
  73.  *
  74.  *                       Using the resultant DLL
  75.  *
  76.  * In order to use the resultant DLL, you must define the macro _RWSTDDLL
  77.  * when compiling.  This will communicate to the Rogue Wave header files
  78.  * your intention to use a DLL version of the Rogue Wave library.
  79.  *
  80.  * If you intend to use a DLL version of the Borland RTL as well, then you
  81.  * should also define the macro _RTLDLL, as per Borland's instructions.
  82.  *
  83.  * You must also specify the -WS switch ("smart callbacks") for the
  84.  * Borland Compiler.
  85.  *
  86.  *
  87.  *************************************************************************
  88.  ***********************  Static Windows Library **************************
  89.  *************************************************************************
  90.  *
  91.  *
  92.  *                Creating a RW static Windows library
  93.  *
  94.  * If your intention is to create a Rogue Wave library to be used as
  95.  * as a static Windows library, then one of the macros __WIN16__ or __WIN32__
  96.  * must have been defined in compiler.h (or by the compiler directly).
  97.  *
  98.  * Borland:    __WIN16__ will be defined if both _Windows and __MSDOS__
  99.  *              is defined.  _Windows will be defined automatically if
  100.  *              any -W switch is used.  Borland defines __WIN32__ automatically
  101.  *              in their 32-bit compiler for Windows NT / Win32s.
  102.  *
  103.  * Microsoft:    Microsoft automatically defines _WINDOWS if you use the
  104.  *        /GA (preferred) or /GW switch.
  105.  *              __WIN32__ will only be defined if either it, or WIN32,
  106.  *              is explicitly defined on the cl command line.
  107.  *
  108.  *
  109.  *                 Using a RW static Windows library
  110.  *
  111.  * Nothing special needs to be done.  Just link compile with the appropriate
  112.  * compile switches and link in the RW static Windows library.
  113.  *
  114.  */
  115.  
  116.  
  117. /*
  118.  * Check for Microsoft C/C++ and massage as necessary.
  119.  */
  120. #if defined(_MSC_VER)
  121. #  if defined(_WINDLL) && !defined(__DLL__)
  122. #    define __DLL__ 1
  123. #  endif
  124. #  if !defined(_export)
  125. #    define _export __export
  126. #  endif
  127. #endif
  128.  
  129. #ifdef  __TURBOC__
  130. #  if __TURBOC__ > 0x468
  131. #    define RWSTD_EXPORT_TEMPLATE
  132. #  endif
  133. #endif
  134.  
  135.  
  136. /* For backwards compatibility: */
  137. #if defined(_RWSTDCLASSDLL) && !defined(_RWSTDDLL)
  138. # define _RWSTDDLL 1
  139. #endif
  140.  
  141. #if defined(_RWSTDDLL)
  142. #  if !defined(__LARGE__) && !defined(__WIN32__)
  143. #    error   Must use large or flat memory model when compiling or using the Standard Library DLL!
  144. #  endif
  145. #  if defined(_RWSTDBUILDDLL)
  146.      // Compiling the DLL.
  147. #    ifndef _MSC_VER
  148. #      define RWSTDExport _export            /* Mark classes as exported */
  149. #      ifdef RWSTD_EXPORT_TEMPLATE
  150. #        define RWSTDExportTemplate _export    /* Mark template insts as exported */
  151. #      else
  152. #        define RWSTDExportTemplate
  153. #      endif
  154. #      define rwexport _export                    /*    & functions as well   */
  155. #    else /* Microsoft: */
  156. #      define RWSTDExport __declspec(dllexport)
  157. #      define RWSTDExportTemplate
  158. #      define rwexport __declspec(dllexport)
  159. #    endif
  160. #  else
  161.      // Using the DLL.
  162. #    if defined(__WIN16__)
  163. #      define RWSTDExport huge    /* Mark classes as huge  */
  164. #      define rwexport far    /*    & functions as far */
  165. #    elif defined(__WIN32__)
  166. #      ifndef _MSC_VER
  167. #        define RWSTDExport _import
  168. #        ifdef RWSTD_EXPORT_TEMPLATE
  169. #          define RWSTDExportTemplate _import
  170. #        else
  171. #          define RWSTDExportTemplate
  172. #        endif
  173. #        define rwexport
  174. #      else
  175. #        define RWSTDExport  __declspec(dllimport)
  176. #        define RWSTDExportTemplate
  177. #        define rwexport
  178. #      endif
  179. #    endif
  180. #  endif
  181. #else
  182.    // Neither compiling, nor using the  DLL.
  183. #  define RWSTDExport
  184. #  define RWSTDExportTemplate
  185. #  define rwexport
  186. #endif
  187.  
  188. #endif // __RWSTDWIND_H__
  189.  
  190.  
  191.