home *** CD-ROM | disk | FTP | other *** search
/ Network Support Encyclopedia 96-1 / novell-nsepro-1996-1-cd2.iso / download / netware / os232.exe / INCLUDE / NTYPES.H < prev    next >
Text File  |  1995-06-29  |  56KB  |  1,631 lines

  1. /******************************************************************************
  2.   Source module name:  ntypes.h
  3.   Release Version:     1.05
  4.  
  5.   $Workfile:   ntypes.h  $
  6.   $Revision:   1.46  $
  7.   $Modtime::   29 Jun 1995 11:42:02                        $
  8.   $Copyright:
  9.  
  10.   Copyright (c) 1989-1995 Novell, Inc.  All Rights Reserved.                      
  11.  
  12.   THIS WORK IS  SUBJECT  TO  U.S.  AND  INTERNATIONAL  COPYRIGHT  LAWS  AND
  13.   TREATIES.   NO  PART  OF  THIS  WORK MAY BE  USED,  PRACTICED,  PERFORMED
  14.   COPIED, DISTRIBUTED, REVISED, MODIFIED, TRANSLATED,  ABRIDGED, CONDENSED,
  15.   EXPANDED,  COLLECTED,  COMPILED,  LINKED,  RECAST, TRANSFORMED OR ADAPTED
  16.   WITHOUT THE PRIOR WRITTEN CONSENT OF NOVELL, INC. ANY USE OR EXPLOITATION
  17.   OF THIS WORK WITHOUT AUTHORIZATION COULD SUBJECT THE PERPETRATOR TO
  18.   CRIMINAL AND CIVIL LIABILITY.$
  19.  
  20.  *****************************************************************************/
  21.  
  22.  
  23. #if ! defined( NTYPES_H )
  24. #define NTYPES_H
  25.  
  26. /* 
  27.    For brief documentation, please refer to the associated ntypes.txt 
  28.    with the same release version. For in-depth documentation, please
  29.    refer to the Portable API Definition Guide.
  30. */
  31.  
  32.  
  33. /*
  34.    Section 1:  Automatic definitions
  35.    Section 1a: Platforms
  36. */
  37.  
  38. #if !defined(N_INC_NO_AUTO)
  39.  
  40.    #if defined NWOS2
  41.       #if !defined N_PLAT_OS2 
  42.          #define N_PLAT_OS2
  43.       #endif
  44.       #if !defined N_ARCH_16 
  45.          #define N_ARCH_16
  46.       #endif
  47.    #elif defined(NWWIN)
  48.       #if !defined N_PLAT_MSW 
  49.          #define N_PLAT_MSW
  50.       #endif
  51.       #if !defined N_ARCH_16 
  52.          #define N_ARCH_16
  53.       #endif
  54.    #elif defined(NWDOS)
  55.       #if !defined N_PLAT_DOS
  56.          #define N_PLAT_DOS
  57.       #endif
  58.       #if !defined N_ARCH_16
  59.          #define N_ARCH_16
  60.       #endif
  61.    #elif defined(WIN32)
  62.       #if !defined N_PLAT_MSW
  63.          #define N_PLAT_MSW
  64.       #endif
  65.       #if !defined N_ARCH_32
  66.          #define N_ARCH_32
  67.       #endif
  68.    #endif
  69.  
  70.    #if defined(N_PLAT_WNT3) || defined(N_PLAT_WNT4)
  71.       #if !defined(N_PLAT_WNT)
  72.          #define N_PLAT_WNT
  73.       #endif
  74.       #if !defined(N_PLAT_MSW)
  75.          #define N_PLAT_MSW
  76.       #endif
  77.    #endif
  78.  
  79.    #if defined(N_PLAT_WNT) 
  80.       #if !defined(N_PLAT_WNT3) && !defined(N_PLAT_WNT4)
  81.          #define N_PLAT_WNT3
  82.       #endif
  83.       #if !defined(N_PLAT_MSW)
  84.          #define N_PLAT_MSW
  85.       #endif
  86.    #endif
  87.  
  88.    #if defined(N_PLAT_MSW3) || defined(N_PLAT_MSW4)
  89.       #if !defined(N_PLAT_MSW)
  90.          #define N_PLAT_MSW
  91.       #endif
  92.    #endif
  93.  
  94.    #if defined N_PLAT_MSW && !defined N_PLAT_WNT 
  95.       #if !defined N_PLAT_MSW3 && !defined N_PLAT_MSW4
  96.          #define N_PLAT_MSW3
  97.       #endif
  98.    #endif
  99.  
  100.    /* Set a default architecture size if none is set.  Test order is important 
  101.    * and must be elif'ed because N_PLAT_MSW can be set for various Windows 
  102.    * platforms that have differing default int sizes. */
  103.    #if !defined(N_ARCH_64) && !defined(N_ARCH_32) && !defined(N_ARCH_16)
  104.       #if defined(N_PLAT_DOS) 
  105.          #define N_ARCH_16
  106.       #elif defined(N_PLAT_WNT) 
  107.          #define N_ARCH_32
  108.       #elif defined(N_PLAT_OS2) && defined(_MSC_VER) 
  109.          #define N_ARCH_16
  110.       #elif defined(N_PLAT_MSW4) 
  111.          #define N_ARCH_32
  112.       #elif defined(N_PLAT_MSW) 
  113.          #define N_ARCH_16
  114.       #else 
  115.          #define N_ARCH_32
  116.       #endif
  117.    #endif
  118.  
  119. #endif /* #if !defined(N_INC_NO_AUTO) */
  120.  
  121. /* 
  122.    Section 1b: Compiler specific
  123. */
  124.  
  125. #if defined _MSC_VER
  126.    #if(_MSC_VER < 700)
  127.       #define N_MSC_OLD
  128.    #else
  129.       #define N_MSC
  130.    #endif
  131. #endif 
  132.  
  133. /* 
  134.    Section 1c: Resource compiler specific
  135. */
  136. #if defined( RC_INVOKED )
  137.    #if !defined( N_RC_INVOKED )
  138.       #define N_RC_INVOKED
  139.    #endif  /* !defined( N_RC_INVOKED ) */
  140. #endif  /* defined( RC_INVOKED ) */
  141.  
  142. /* 
  143.    Section 2: Platform specific definitions
  144. */
  145. #if !defined( N_RC_INVOKED )
  146.  
  147.    #if defined(N_ARCH_16) && defined(N_PLAT_MSW)
  148.  
  149.       #if !defined NWWIN
  150.          #define NWWIN
  151.       #endif
  152.  
  153.       #if defined(N_MSC_OLD)
  154.          #define N_NEAR   near
  155.          #define N_FAR    far
  156.          #define N_HUGE   _huge
  157.          #define N_PASCAL pascal
  158.          #define N_CDECL  cdecl
  159.          #define N_EXPORT _export
  160.       #else
  161.          #define N_NEAR   __near
  162.          #define N_FAR    __far
  163.          #define N_HUGE   _huge
  164.          #define N_PASCAL __pascal
  165.          #define N_CDECL  __cdecl
  166.          #define N_EXPORT _export
  167.       #endif
  168.  
  169.       #define N_API              N_FAR N_PASCAL
  170.       #define N_API_VARARGS      N_FAR N_CDECL
  171.       #define N_CALLBACK         N_FAR N_PASCAL
  172.       #define N_CALLBACK_VARARGS N_FAR N_CDECL
  173.  
  174.       #undef  N_INT_ENDIAN_HI_LO
  175.       #undef  N_INT_STRICT_ALIGNMENT
  176.  
  177.    #elif defined(N_ARCH_32) && defined(N_PLAT_MSW)
  178.  
  179.       #if !defined WIN32
  180.          #define WIN32
  181.       #endif
  182.  
  183.       #define N_NEAR
  184.       #define N_FAR
  185.       #define N_HUGE    
  186.       #define N_PASCAL
  187.       #define N_CDECL __cdecl
  188.       #define N_EXPORT 
  189.  
  190.       #define N_API              __stdcall
  191.       #define N_API_VARARGS      N_CDECL
  192.       #define N_VARARGS          N_CDECL
  193.       #define N_CALLBACK         __stdcall
  194.       #define N_CALLBACK_VARARGS N_CDECL
  195.  
  196.       #undef  N_INT_ENDIAN_HI_LO
  197.       #undef  N_INT_STRICT_ALIGNMENT
  198.  
  199.    #elif defined(N_ARCH_16) && defined(N_PLAT_OS2)
  200.  
  201.       #if !defined NWOS2
  202.          #define NWOS2
  203.       #endif
  204.  
  205.       #if defined(N_MSC_OLD)
  206.          #define N_NEAR   near
  207.          #define N_FAR    far
  208.          #define N_HUGE   _huge 
  209.          #define N_PASCAL pascal
  210.          #define N_CDECL  cdecl
  211.       #else
  212.          #define N_NEAR   __near
  213.          #define N_FAR    __far
  214.          #define N_HUGE   _huge
  215.          #define N_PASCAL __pascal
  216.          #define N_CDECL  __cdecl
  217.       #endif
  218.  
  219.       #define N_API              N_FAR N_PASCAL
  220.       #define N_API_VARARGS      N_FAR N_CDECL
  221.       #define N_CALLBACK         N_FAR N_PASCAL
  222.       #define N_CALLBACK_VARARGS N_FAR N_CDECL
  223.  
  224.       #undef  N_INT_ENDIAN_HI_LO
  225.       #undef  N_INT_STRICT_ALIGNMENT
  226.  
  227.    #elif defined(N_ARCH_32) && defined(N_PLAT_OS2)
  228.  
  229.       #define N_NEAR
  230.       #define N_FAR
  231.       #define N_HUGE    
  232.       #if defined __BORLANDC__
  233.          #define N_PASCAL __pascal
  234.       #else
  235.          #define N_PASCAL _Pascal
  236.       #endif
  237.       #define N_CDECL
  238.  
  239.       #define N_API              N_PASCAL
  240.       #define N_API_VARARGS      N_CDECL
  241.       #define N_CALLBACK         N_PASCAL
  242.       #define N_CALLBACK_VARARGS N_CDECL
  243.  
  244.       #undef  N_INT_ENDIAN_HI_LO
  245.       #undef  N_INT_STRICT_ALIGNMENT
  246.  
  247.    #elif defined(N_PLAT_DOS)
  248.  
  249.       #if !defined NWDOS
  250.          #define NWDOS
  251.       #endif
  252.  
  253.       #if defined(N_MSC_OLD)
  254.          #define N_NEAR   near
  255.          #define N_FAR    far
  256.          #define N_HUGE   _huge
  257.          #define N_PASCAL pascal
  258.          #define N_CDECL  cdecl
  259.       #else
  260.          #define N_NEAR   __near
  261.          #define N_FAR    __far
  262.          #define N_HUGE   _huge
  263.          #define N_PASCAL __pascal
  264.          #define N_CDECL  __cdecl
  265.       #endif
  266.  
  267.       #define N_API              N_FAR N_PASCAL
  268.       #define N_API_VARARGS      N_FAR N_CDECL
  269.       #define N_CALLBACK         N_FAR N_PASCAL
  270.       #define N_CALLBACK_VARARGS N_FAR N_CDECL
  271.  
  272.       #undef  N_INT_ENDIAN_HI_LO
  273.       #undef  N_INT_STRICT_ALIGNMENT
  274.  
  275.    #elif defined(N_PLAT_NLM)
  276.  
  277.       #if defined(N_IAPX386)
  278.  
  279.          #undef  N_INT_ENDIAN_HI_LO
  280.          #undef  N_INT_STRICT_ALIGNMENT
  281.  
  282.       #elif defined(N_PPC)
  283.  
  284.          #define N_INT_ENDIAN_HI_LO
  285.          #define N_INT_STRICT_ALIGNMENT
  286.  
  287.       #else    /* no machine type defined */
  288.  
  289.          #error A machine type must be defined
  290.  
  291.       #endif
  292.       #define N_NEAR
  293.       #define N_FAR
  294.       #define N_HUGE
  295.       #define N_PASCAL  pascal
  296.       #define N_CDECL   cdecl
  297.  
  298.       #define N_API              
  299.       #define N_API_VARARGS      
  300.       #define N_CALLBACK         
  301.       #define N_CALLBACK_VARARGS 
  302.  
  303.    #elif defined(N_PLAT_MAC)
  304.  
  305.       #define N_NEAR
  306.       #define N_FAR
  307.       #define N_HUGE
  308.       #define N_PASCAL  pascal
  309.       #define N_CDECL
  310.  
  311.       #define N_API              N_PASCAL
  312.       #define N_API_VARARGS      N_CDECL
  313.       #define N_CALLBACK         N_PASCAL
  314.       #define N_CALLBACK_VARARGS N_CDECL
  315.  
  316.       #define N_INT_ENDIAN_HI_LO
  317.       #if defined( mc68020 )
  318.          #undef  N_INT_STRICT_ALIGNMENT
  319.       #else
  320.          #define N_INT_STRICT_ALIGNMENT
  321.       #endif
  322.  
  323.    #elif defined(N_PLAT_UNIX)
  324.  
  325.       #define N_NEAR
  326.       #define N_FAR
  327.       #define N_HUGE
  328.       #define N_PASCAL
  329.       #define N_CDECL
  330.  
  331.       #define N_API              N_PASCAL
  332.       #define N_API_VARARGS      N_CDECL
  333.       #define N_CALLBACK         N_PASCAL
  334.       #define N_CALLBACK_VARARGS N_CDECL
  335.  
  336.       #if defined(BYTE_ORDER) && defined(BIG_ENDIAN)
  337.          #if (BYTE_ORDER == BIG_ENDIAN)
  338.             #define N_INT_ENDIAN_HI_LO
  339.          #endif
  340.       #elif defined(vax) || defined(ns32000) || defined(sun386) || \
  341.             defined(MIPSEL) || defined(BIT_ZERO_ON_RIGHT)
  342.          /* do nothing (little endian) */
  343.       #elif defined(sel) || defined(pyr) || defined(mc68000) || \
  344.             defined(sparc) || defined(is68k) || defined(tahoe) || \
  345.             defined(ibm032) || defined(ibm370) || defined(MIPSEB) || \
  346.             defined(__hpux) || defined (BIT_ZERO_ON_LEFT)
  347.          #define N_INT_ENDIAN_HI_LO
  348.       #endif
  349.  
  350.       /* For now, we assume strict alignment for all Unix platforms since it
  351.          is the worst case (safe); we could optimize for certain platforms
  352.          in the future */
  353.  
  354.       #define N_INT_STRICT_ALIGNMENT
  355.  
  356.    #else    /* no platform constant */
  357.  
  358.       #error A platform must be defined
  359.  
  360.    #endif   /* platforms */
  361.  
  362. #endif  /* !defined( N_RC_INVOKED ) */
  363.  
  364. /*
  365.    Section 3:  Other constants
  366.    Section 3a: NULL
  367. */
  368.  
  369. #if !defined(NULL) && defined(__cplusplus)
  370.    #define NULL   0
  371. #endif
  372.  
  373. #if defined( N_RC_INVOKED )
  374.    #define NULL   0
  375. #endif
  376.  
  377. #if !defined NULL
  378.    #if defined N_MSC
  379.       #define NULL ((void *) 0)
  380.    #else
  381.       #if defined(M_I86S) || defined(M_I86SM) || defined(M_I86C) || \
  382.           defined(M_I86CM) || \
  383.           defined(__TINY__) || defined(__SMALL__) || defined(__MEDIUM__) || \
  384.           defined(N_PLAT_NLM)
  385.  
  386.          #define NULL   0
  387.       #else
  388.          #define NULL   0L
  389.       #endif
  390.    #endif
  391. #endif /* NULL */
  392.  
  393. /*
  394.    Section 3b: Standard constants
  395. */
  396.  
  397. #define N_ALWAYS     1
  398. #define N_SUCCESS    0
  399. #define N_FAILURE    (-1)
  400. #define N_YES        1
  401. #define N_NO         0
  402. #define N_FALSE      0
  403. #define N_TRUE       1
  404. #define N_UNKNOWN    (N_TRUE + 1)
  405.  
  406. /*
  407.    Section 3c: System constants
  408. */
  409.  
  410. #define N_SYS_USER          0
  411. #define N_SYS_NETWARE       1
  412. #define N_SYS_NAWF          2
  413. #define N_SYS_MAX_COUNT     20
  414. #define N_SYS_NAME_MAX_LEN  31
  415.  
  416. /*
  417.    Section 3d: Historical constant synonyms
  418. */
  419.  
  420. #if ! defined( N_INC_NO_OLD_CONSTANTS )
  421.  
  422.    #if ! defined( TRUE )
  423.       #define TRUE        1
  424.    #endif
  425.  
  426.    #if ! defined( FALSE )
  427.       #define FALSE       0
  428.    #endif
  429.  
  430. #endif
  431.  
  432. /*
  433.    Section 3e: Miscellaneous constants
  434. */
  435.  
  436. /* N_BITSPERBYTE is currently only used internally */
  437. #if defined BITSPERBYTE
  438.    #define N_BITSPERBYTE  BITSPERBYTE
  439. #else
  440.    #define N_BITSPERBYTE  8
  441. #endif
  442.  
  443. /*
  444.    Section 4:  Types
  445.    Section 4a: Machine dependent types
  446. */
  447.  
  448. #if !defined(N_RC_INVOKED)
  449.  
  450.    typedef signed char     nint8;
  451.    #if !defined( N_PLAT_UNIX )
  452.       typedef unsigned char   nuint8;
  453.    #else
  454.       /*
  455.          WARNING:  THE NEXT STATEMENT PRESUMES CHAR IS UNSIGNED!
  456.       */
  457.       #if !defined __GNUC__
  458.          typedef unsigned char nuint8;
  459.       #else
  460.          typedef char nuint8;
  461.       #endif
  462.    #endif
  463.  
  464.    typedef signed short    nint16;
  465.    typedef unsigned short  nuint16;
  466.    #if defined(__alpha)
  467.       typedef signed int nint32;
  468.       typedef unsigned int nuint32;
  469.       typedef signed long nint64;
  470.       typedef unsigned long nuint64;
  471.       #define nint64_type
  472.    #else
  473.       typedef signed long     nint32;
  474.       typedef unsigned long   nuint32;
  475.    #endif
  476.    typedef float           nreal32;
  477.    typedef double          nreal64;
  478.  
  479.    #if !defined N_PLAT_MAC
  480.  
  481.       #if defined N_FORCE_INT_32
  482.          typedef signed long     nint;
  483.          typedef unsigned long   nuint;
  484.       #elif defined N_FORCE_INT_16
  485.          typedef signed short    nint;
  486.          typedef unsigned short  nuint;
  487.       #else
  488.          typedef signed int      nint;
  489.          typedef unsigned int    nuint;
  490.       #endif
  491.  
  492.       typedef unsigned int    nbool;
  493.       #if !(defined N_PLAT_MSW && defined N_ARCH_32)
  494.          #if ! defined(__alpha) && ! defined(_AIX)
  495.             typedef long double     nreal80;
  496.             #define nreal80_type
  497.          /* VC++ for NT does not support nreal80's by default. Check readme for
  498.             instructions on how to enable them */
  499.          #endif
  500.       #endif
  501.  
  502.       typedef double          nreal;
  503.    #else
  504.       typedef signed long     nint;
  505.       typedef unsigned long   nuint;
  506.       typedef unsigned char   nbool;
  507.  
  508.       #if defined( powerc ) || defined( __powerc ) || defined( THINK_C )
  509.          typedef long double nreal80;
  510.          typedef double          nreal;
  511.       #else
  512.          typedef extended        nreal80;
  513.          typedef extended        nreal;
  514.       #endif
  515.       #define nreal80_type
  516.    #endif
  517.  
  518. /*
  519.    Section 4b: Derived types
  520. */
  521.  
  522.    #if defined(__alpha)
  523.       typedef nuint64 nparam;
  524.    #else
  525.       typedef nuint32 nparam;
  526.    #endif
  527.    typedef nparam nhdl;
  528.    typedef nparam nid;
  529.    typedef nuint8  nflag8;
  530.    typedef nuint16 nflag16;
  531.    typedef nuint32 nflag32;
  532.  
  533.    typedef nuint8    nbool8;
  534.    typedef nuint16   nbool16;
  535.    typedef nuint32   nbool32;
  536.  
  537.    typedef nint32  nfixed;
  538.    #if defined(N_USE_UNSIGNED_CHAR)
  539.       typedef nuint8  nstr8;
  540.    #else
  541.       typedef char  nstr8;
  542.    #endif
  543.    typedef nuint16 nstr16;
  544.    #if defined(N_USE_STR_16)
  545.       typedef  nstr16 nstr;
  546.    #else
  547.       typedef  nstr8  nstr;
  548.    #endif
  549.    typedef nstr    nchar;
  550.    typedef nstr8   nchar8;
  551.    typedef nstr16  nchar16;
  552.    typedef nchar16 nwchar;
  553.  
  554.    /* 
  555.       Return code for functions that return status/errors.
  556.    */
  557.  
  558.    #define NWRCODE  nint32
  559.  
  560.  
  561.    /*
  562.       Pointers to scalars.
  563.    */
  564.  
  565.    typedef void      N_FAR *  nptr;
  566.    typedef void      N_FAR *  npproc;
  567.  
  568.    typedef nint8     N_FAR *  pnint8;
  569.    typedef nuint8    N_FAR *  pnuint8;
  570.    typedef nint16    N_FAR *  pnint16;
  571.    typedef nuint16   N_FAR *  pnuint16;
  572.    typedef nint32    N_FAR *  pnint32;
  573.    typedef nuint32   N_FAR *  pnuint32;
  574.    #if defined( nint64_type )
  575.       typedef nint64    N_FAR *  pnint64;
  576.       typedef nuint64   N_FAR *  pnuint64;
  577.    #endif
  578.    typedef nint      N_FAR *  pnint;
  579.    typedef nuint     N_FAR *  pnuint;
  580.    typedef nflag8    N_FAR *  pnflag8;
  581.    typedef nflag16   N_FAR *  pnflag16;
  582.    typedef nflag32   N_FAR *  pnflag32;
  583.    typedef nbool     N_FAR *  pnbool;
  584.    typedef nbool8    N_FAR *  pnbool8;
  585.    typedef nbool16   N_FAR *  pnbool16;
  586.    typedef nbool32   N_FAR *  pnbool32;
  587.    typedef nfixed    N_FAR *  pnfixed;
  588.    typedef nstr      N_FAR *  pnstr;
  589.    typedef pnstr     N_FAR *  ppnstr;
  590.    typedef nstr16    N_FAR *  pnstr16;
  591.    typedef pnstr16   N_FAR *  ppnstr16;
  592.    typedef nstr8     N_FAR *  pnstr8;
  593.    typedef pnstr8    N_FAR *  ppnstr8;
  594.    typedef nchar     N_FAR *  pnchar;
  595.    typedef pnchar    N_FAR *  ppnchar;
  596.    typedef nchar16   N_FAR *  pnchar16;
  597.    typedef pnchar16  N_FAR *  ppnchar16;
  598.    typedef nchar8    N_FAR *  pnchar8;
  599.    typedef pnchar8   N_FAR *  ppnchar8;
  600.    typedef nwchar    N_FAR *  pnwchar;
  601.    typedef pnwchar   N_FAR *  ppnwchar;
  602.    typedef nreal     N_FAR *  pnreal;
  603.    typedef nreal32   N_FAR *  pnreal32;
  604.    typedef nreal64   N_FAR *  pnreal64;
  605.    #if defined( nreal80_type )
  606.       typedef nreal80   N_FAR *  pnreal80;
  607.    #endif
  608.    typedef nid       N_FAR *  pnid;
  609.    typedef nhdl      N_FAR *  pnhdl;
  610.    typedef nparam    N_FAR *  pnparam;
  611.  
  612.    /*
  613.       Pointers to pointers.
  614.    */
  615.    typedef nptr      N_FAR *  pnptr;
  616.    typedef npproc    N_FAR *  pnpproc;
  617.  
  618.    typedef pnint8    N_FAR *  ppnint8;
  619.    typedef pnuint8   N_FAR *  ppnuint8;
  620.    typedef pnint16   N_FAR *  ppnint16;
  621.    typedef pnuint16  N_FAR *  ppnuint16;
  622.    typedef pnint32   N_FAR *  ppnint32;
  623.    typedef pnuint32  N_FAR *  ppnuint32;
  624.    #if defined( nint64_type )
  625.       typedef pnint64   N_FAR *  ppnint64;
  626.       typedef pnuint64  N_FAR *  ppnuint64;
  627.    #endif
  628.    typedef pnint     N_FAR *  ppnint;
  629.    typedef pnuint    N_FAR *  ppnuint;
  630.    typedef pnflag8   N_FAR *  ppnflag8;
  631.    typedef pnflag16  N_FAR *  ppnflag16;
  632.    typedef pnflag32  N_FAR *  ppnflag32;
  633.    typedef pnbool    N_FAR *  ppnbool;
  634.    typedef pnbool8   N_FAR *  ppnbool8;
  635.    typedef pnbool16  N_FAR *  ppnbool16;
  636.    typedef pnbool32  N_FAR *  ppnbool32;
  637.    typedef pnfixed   N_FAR *  ppnfixed;
  638.    typedef ppnstr    N_FAR *  pppnstr;
  639.    typedef ppnstr16  N_FAR *  pppnstr16;
  640.    typedef ppnstr8   N_FAR *  pppnstr8;
  641.    typedef ppnchar   N_FAR *  pppnchar;
  642.    typedef ppnchar16 N_FAR *  pppnchar16;
  643.    typedef ppnchar8  N_FAR *  pppnchar8;
  644.    typedef ppnwchar  N_FAR *  pppnwchar;
  645.    typedef pnreal    N_FAR *  ppnreal;
  646.    typedef pnreal32  N_FAR *  ppnreal32;
  647.    typedef pnreal64  N_FAR *  ppnreal64;
  648.    #if defined( nreal80_type )
  649.       typedef pnreal80  N_FAR *  ppnreal80;
  650.    #endif
  651.    typedef pnid      N_FAR *  ppnid;
  652.    typedef pnhdl     N_FAR *  ppnhdl;
  653.    typedef pnparam   N_FAR *  ppnparam;
  654.    typedef pnptr     N_FAR *  ppnptr;
  655.    typedef pnpproc   N_FAR *  ppnpproc;
  656.  
  657.    /*
  658.       Section 4c: GUI structures
  659.    */
  660.  
  661.    #if defined(N_INC_GUI)
  662.  
  663.       #if defined( _XLIB_H_ ) /* Only use XPoint if xlib.h is included */
  664.          typedef XPoint npt16;
  665.       #elif defined( N_PLAT_MAC )
  666.          typedef struct tagnpt16
  667.          {
  668.             nint16      y;
  669.             nint16      x;
  670.          } npt16;
  671.       #elif defined( N_PLAT_OS2 )
  672.          #if defined( OS2DEF_INCLUDED )
  673.             typedef POINTS npt16;
  674.          #else
  675.             typedef struct tagnpt16
  676.             {
  677.                nint16       x;
  678.                nint16       y;
  679.             } npt16;
  680.          #endif
  681.       #elif defined( N_PLAT_DOS ) || defined( N_PLAT_MSW ) || defined( N_PLAT_UNIX )
  682.          typedef struct tagnpt16
  683.          {
  684.             nint16       x;
  685.             nint16       y;
  686.          } npt16;
  687.       #elif defined( N_PLAT_NLM )
  688.          typedef struct tagnpt16       /*  This could be done with an else instead */
  689.          {                             /*  of with an elif as is the npt32 below.  */
  690.             nint16       x;
  691.             nint16       y;
  692.          } npt16;
  693.       #endif
  694.  
  695.       #if defined( N_PLAT_MAC )
  696.          typedef struct tagnpt32
  697.          {
  698.             nint32      y;
  699.             nint32      x;
  700.          } npt32;
  701.       #elif defined( N_PLAT_OS2 )
  702.          #if defined( OS2DEF_INCLUDED )
  703.             typedef POINTL npt32;
  704.          #else
  705.             typedef struct tagnpt32
  706.             {
  707.                nint32      x;
  708.                nint32      y;
  709.             } npt32;
  710.          #endif
  711.       #else
  712.          typedef struct tagnpt32
  713.          {
  714.             nint32      x;
  715.             nint32      y;
  716.          } npt32;
  717.       #endif
  718.  
  719.       #if defined ( N_PLAT_OS2 )
  720.          #pragma pack(1) /* force structure alignment packing */
  721.       #endif
  722.  
  723.       #if defined( __QUICKDRAW__ )
  724.          typedef Point npthv16;
  725.       #elif defined( N_PLAT_MAC )
  726.          typedef struct tagnpthv16
  727.          {
  728.             nint16      v;
  729.             nint16      h;
  730.          } npthv16;
  731.       #else
  732.          typedef struct tagnpthv16
  733.          {
  734.             nint16      h;
  735.             nint16      v;
  736.          } npthv16;
  737.       #endif
  738.  
  739.       #if defined( N_PLAT_MAC )
  740.          typedef struct tagnpthv32
  741.          {
  742.             nint32      v;
  743.             nint32      h;
  744.          } npthv32;
  745.       #else
  746.          typedef struct tagnpthv32
  747.          {
  748.             nint32      h;
  749.             nint32      v;
  750.          } npthv32;
  751.       #endif
  752.  
  753.       #if defined( __QUICKDRAW__ )
  754.          typedef Rect nrect16;
  755.       #elif defined( N_PLAT_UNIX ) || defined( N_PLAT_DOS )  || defined( N_PLAT_MSW ) || defined( N_PLAT_NLM )
  756.          typedef struct tagnrect16
  757.          {
  758.             nint16      left;
  759.             nint16      top;
  760.             nint16      right;
  761.             nint16      bottom;
  762.          } nrect16;
  763.       #elif defined( N_PLAT_MAC )
  764.          typedef struct tagnrect16
  765.          {
  766.             nint16      top;
  767.             nint16      left;
  768.             nint16      bottom;
  769.             nint16      right;
  770.          } nrect16;
  771.       #elif defined( N_PLAT_OS2 )
  772.          typedef struct tagnrect16
  773.          {
  774.             nint16      left;
  775.             nint16      bottom;
  776.             nint16      right;
  777.             nint16      top;
  778.          } nrect16;
  779.       #endif
  780.  
  781.       #if defined( N_PLAT_MSW ) || defined( N_PLAT_UNIX ) || defined( N_PLAT_DOS ) || defined( N_PLAT_NLM )
  782.          typedef struct tagnrect32
  783.          {
  784.             nint32      left;
  785.             nint32      top;
  786.             nint32      right;
  787.             nint32      bottom;
  788.          } nrect32;
  789.       #elif defined( N_PLAT_MAC )
  790.          typedef struct tagnrect32
  791.          {
  792.             nint32      top;
  793.             nint32      left;
  794.             nint32      bottom;
  795.             nint32      right;
  796.          } nrect32;
  797.       #elif defined( N_PLAT_OS2 )
  798.          typedef struct tagnrect32
  799.          {
  800.             nint32      left;
  801.             nint32      bottom;
  802.             nint32      right;
  803.             nint32      top;
  804.          } nrect32;
  805.       #endif
  806.  
  807.       #if defined( N_PLAT_MSW ) || defined( N_PLAT_UNIX ) || defined( N_PLAT_DOS ) || defined( N_PLAT_NLM )
  808.          typedef struct tagnrectmm16
  809.          {
  810.             nint16      xMin;
  811.             nint16      yMin;
  812.             nint16      xMax;
  813.             nint16      yMax;
  814.          } nrectmm16;
  815.       #elif defined( N_PLAT_MAC )
  816.          typedef struct tagnrectmm16
  817.          {
  818.             nint16      yMin;
  819.             nint16      xMin;
  820.             nint16      yMax;
  821.             nint16      xMax;
  822.          } nrectmm16;
  823.       #elif defined( N_PLAT_OS2 )
  824.          typedef struct tagnrectmm16
  825.          {
  826.             nint16      xMin;
  827.             nint16      yMax;
  828.             nint16      xMax;
  829.             nint16      yMin;
  830.          } nrectmm16;
  831.       #endif
  832.  
  833.       #if defined( N_PLAT_MSW ) || defined( N_PLAT_UNIX ) || defined( N_PLAT_DOS ) || defined( N_PLAT_NLM )
  834.          typedef struct tagnrectmm32
  835.          {
  836.             nint32      xMin;
  837.             nint32      yMin;
  838.             nint32      xMax;
  839.             nint32      yMax;
  840.          } nrectmm32;
  841.       #elif defined( N_PLAT_MAC )
  842.          typedef struct tagnrectmm32
  843.          {
  844.             nint32      yMin;
  845.             nint32      xMin;
  846.             nint32      yMax;
  847.             nint32      xMax;
  848.          } nrectmm32;
  849.       #elif defined( N_PLAT_OS2 )
  850.          typedef struct tagnrectmm32
  851.          {
  852.             nint32      xMin;
  853.             nint32      yMax;
  854.             nint32      xMax;
  855.             nint32      yMin;
  856.          } nrectmm32;
  857.       #endif
  858.  
  859.       #if defined ( N_PLAT_OS2 )
  860.          #pragma pack()  /* restore packing to default */
  861.       #endif  /* #if defined ( N_PLAT_OS2 ) */
  862.  
  863.       /*
  864.          Pointers to GUI structures.
  865.       */
  866.  
  867.       typedef npt16        N_FAR * pnpt16;
  868.       typedef npt32        N_FAR * pnpt32;
  869.       typedef npthv16      N_FAR * pnpthv16;
  870.       typedef npthv32      N_FAR * pnpthv32;
  871.       typedef nrect16      N_FAR * pnrect16;
  872.       typedef nrect32      N_FAR * pnrect32;
  873.       typedef nrectmm16    N_FAR * pnrectmm16;
  874.       typedef nrectmm32    N_FAR * pnrectmm32;
  875.  
  876.    #endif /* if defined(N_INC_GUI) */
  877.  
  878.    /*
  879.       Section 4d: Platform dependent types
  880.    */
  881.  
  882.    #if defined( N_PLAT_MSW )
  883.  
  884.       typedef unsigned char N_HUGE *   neptr;
  885.  
  886.    #elif defined( N_PLAT_MAC )
  887.  
  888.       typedef unsigned char N_HUGE *   neptr;
  889.  
  890.    #elif defined( N_PLAT_UNIX )
  891.  
  892.       typedef unsigned char N_HUGE *   neptr;
  893.  
  894.    #elif defined( N_PLAT_OS2 )
  895.  
  896.       typedef unsigned char N_HUGE *   neptr;
  897.  
  898.    #elif defined( N_PLAT_DOS )
  899.  
  900.       typedef unsigned char N_HUGE *   neptr;
  901.  
  902.    #elif defined( N_PLAT_NLM ) 
  903.    
  904.       /* We just need to include NLM in our thinking */
  905.       typedef unsigned char N_HUGE *   neptr;
  906.  
  907.    #else    /* This should not be reached because it was already */
  908.             /* tested earlier. */
  909.       #error A platform must be defined
  910.    #endif   /* MSW or MAC or UNIX or OS2 undefined */
  911.  
  912.    /*
  913.       Pointers to scalars.
  914.    */
  915.  
  916.    typedef neptr       N_FAR * pneptr;
  917.  
  918.    /*
  919.       Section 5: Macros
  920.    */
  921.  
  922.    #if defined( __cplusplus )
  923.  
  924.       /* Special 'extern' for C++ to avoid name mangling... */
  925.  
  926.       #define _N_EXTERN          extern "C"
  927.  
  928.    #else
  929.       #define _N_EXTERN          extern
  930.    #endif /* __cplusplus */
  931.  
  932.    #define N_UNUSED_VAR( x ) x = x
  933.  
  934.    #define N_REG1              register
  935.    #define N_REG2              register
  936.    #define N_REG3              register
  937.    #define N_REG4              register
  938.  
  939.    #define N_STATIC_VAR        static
  940.    #define N_INTERN_VAR        static
  941.    #define N_GLOBAL_VAR
  942.    #define N_EXTERN_VAR        extern
  943.  
  944.    #if defined( N_PLAT_MSW )
  945.       #define N_INTERN_FUNC( retType )       static    retType N_NEAR       
  946.       #define N_INTERN_FUNC_C( retType )     static    retType N_NEAR     
  947.       #define N_INTERN_FUNC_PAS( retType )   static    retType N_NEAR N_PASCAL     
  948.       #define N_GLOBAL_FUNC( retType )                 retType     
  949.       #define N_EXTERN_FUNC( retType )       _N_EXTERN retType     
  950.       #define N_GLOBAL_FUNC_C( retType )               retType     
  951.       #define N_EXTERN_FUNC_C( retType )     _N_EXTERN retType     
  952.       #define N_GLOBAL_FUNC_PAS( retType )             retType        N_PASCAL     
  953.       #define N_EXTERN_FUNC_PAS( retType )   _N_EXTERN retType        N_PASCAL     
  954.    #elif defined( N_PLAT_MAC )
  955.       #define N_INTERN_FUNC( retType )       static             retType
  956.       #define N_INTERN_FUNC_C( retType )     static             retType
  957.       #define N_INTERN_FUNC_PAS( retType )   static    N_PASCAL retType
  958.       #define N_GLOBAL_FUNC( retType )                          retType
  959.       #define N_EXTERN_FUNC( retType )       _N_EXTERN          retType
  960.       #define N_GLOBAL_FUNC_C( retType )                        retType
  961.       #define N_EXTERN_FUNC_C( retType )     _N_EXTERN          retType
  962.       #define N_GLOBAL_FUNC_PAS( retType )             N_PASCAL retType
  963.       #define N_EXTERN_FUNC_PAS( retType )   _N_EXTERN N_PASCAL retType
  964.    #elif defined( N_PLAT_UNIX )
  965.       #define N_INTERN_FUNC( retType )       static    retType
  966.       #define N_INTERN_FUNC_C( retType )     static    retType
  967.       #define N_INTERN_FUNC_PAS( retType )   static    retType
  968.       #define N_GLOBAL_FUNC( retType )                 retType
  969.       #define N_EXTERN_FUNC( retType )       _N_EXTERN retType
  970.       #define N_GLOBAL_FUNC_C( retType )               retType
  971.       #define N_EXTERN_FUNC_C( retType )     _N_EXTERN retType
  972.       #define N_GLOBAL_FUNC_PAS( retType )             retType
  973.       #define N_EXTERN_FUNC_PAS( retType )   _N_EXTERN retType
  974.    #elif defined( N_PLAT_OS2 )
  975.       #define N_INTERN_FUNC( retType )       static    retType
  976.       #define N_INTERN_FUNC_C( retType )     static    retType
  977.       #define N_INTERN_FUNC_PAS( retType )   static    retType N_PASCAL
  978.       #define N_GLOBAL_FUNC( retType )                 retType
  979.       #define N_EXTERN_FUNC( retType )       _N_EXTERN retType
  980.       #define N_GLOBAL_FUNC_C( retType )               retType
  981.       #define N_EXTERN_FUNC_C( retType )     _N_EXTERN retType
  982.       #define N_GLOBAL_FUNC_PAS( retType )             retType N_PASCAL
  983.       #define N_EXTERN_FUNC_PAS( retType )   _N_EXTERN retType N_PASCAL
  984.    #elif defined( N_PLAT_DOS )
  985.       #define N_INTERN_FUNC( retType )       static    retType N_NEAR
  986.       #define N_INTERN_FUNC_C( retType )     static    retType N_NEAR
  987.       #define N_INTERN_FUNC_PAS( retType )   static    retType N_NEAR N_PASCAL
  988.       #define N_GLOBAL_FUNC( retType )                 retType
  989.       #define N_EXTERN_FUNC( retType )       _N_EXTERN retType
  990.       #define N_GLOBAL_FUNC_C( retType )               retType
  991.       #define N_EXTERN_FUNC_C( retType )     _N_EXTERN retType
  992.       #define N_GLOBAL_FUNC_PAS( retType )             retType        N_PASCAL
  993.       #define N_EXTERN_FUNC_PAS( retType )   _N_EXTERN retType        N_PASCAL
  994.    #elif defined( N_PLAT_NLM )
  995.       #define N_INTERN_FUNC( retType )       static    retType
  996.       #define N_INTERN_FUNC_C( retType )     static    retType
  997.       #define N_INTERN_FUNC_PAS( retType )   static    retType
  998.       #define N_GLOBAL_FUNC( retType )                 retType
  999.       #define N_EXTERN_FUNC( retType )       _N_EXTERN retType
  1000.       #define N_GLOBAL_FUNC_C( retType )               retType
  1001.       #define N_EXTERN_FUNC_C( retType )     _N_EXTERN retType
  1002.       #define N_GLOBAL_FUNC_PAS( retType )             retType
  1003.       #define N_EXTERN_FUNC_PAS( retType )   _N_EXTERN retType
  1004.    #endif
  1005.  
  1006.    #if ! defined( N_PLAT_MAC )
  1007.       #define N_GLOBAL_LIBRARY( retType )              retType N_API
  1008.       #define N_EXTERN_LIBRARY( retType )    _N_EXTERN retType N_API
  1009.       #define N_GLOBAL_LIBRARY_C( retType )            retType N_API_VARARGS
  1010.       #define N_EXTERN_LIBRARY_C( retType )  _N_EXTERN retType N_API_VARARGS
  1011.    #else
  1012.       #define N_GLOBAL_LIBRARY( retType )              N_PASCAL retType
  1013.       #define N_EXTERN_LIBRARY( retType )    _N_EXTERN N_PASCAL retType
  1014.       #define N_GLOBAL_LIBRARY_C( retType )                     retType
  1015.       #define N_EXTERN_LIBRARY_C( retType )  _N_EXTERN          retType
  1016.    #endif
  1017.  
  1018.    #if defined( N_PLAT_MSW )
  1019.  
  1020.       #define N_GLOBAL_LIBRARY_PAS( retType ) \
  1021.                                      retType N_FAR N_PASCAL
  1022.       #define N_EXTERN_LIBRARY_PAS( retType ) \
  1023.                            _N_EXTERN retType N_FAR N_PASCAL
  1024.  
  1025.       #define N_GLOBAL_CALLBACK( retType ) \
  1026.                                      retType N_CALLBACK     N_EXPORT
  1027.       #define N_EXTERN_CALLBACK( retType ) \
  1028.                            _N_EXTERN retType N_CALLBACK     N_EXPORT
  1029.       #define N_GLOBAL_CALLBACK_C( retType ) \
  1030.                                      retType N_FAR N_CDECL  N_EXPORT
  1031.       #define N_EXTERN_CALLBACK_C( retType ) \
  1032.                            _N_EXTERN retType N_FAR N_CDECL  N_EXPORT
  1033.       #define N_GLOBAL_CALLBACK_PAS( retType ) \
  1034.                                      retType N_FAR N_PASCAL N_EXPORT
  1035.       #define N_EXTERN_CALLBACK_PAS( retType ) \
  1036.                            _N_EXTERN retType N_FAR N_PASCAL N_EXPORT
  1037.  
  1038.       #define N_TYPEDEF_FUNC( retType, typeName ) \
  1039.                              typedef retType (                        *typeName)
  1040.       #define N_TYPEDEF_FUNC_C( retType, typeName ) \
  1041.                              typedef retType (N_CDECL                 *typeName)
  1042.       #define N_TYPEDEF_FUNC_PAS( retType, typeName ) \
  1043.                              typedef retType (N_PASCAL                *typeName)
  1044.       #define N_TYPEDEF_LIBRARY( retType, typeName ) \
  1045.                              typedef retType (N_FAR N_PASCAL          *typeName)
  1046.       #define N_TYPEDEF_LIBRARY_C( retType, typeName ) \
  1047.                              typedef retType (N_FAR N_CDECL           *typeName)
  1048.       #define N_TYPEDEF_LIBRARY_PAS( retType, typeName ) \
  1049.                              typedef retType (N_FAR N_PASCAL          *typeName)
  1050.       #define N_TYPEDEF_CALLBACK( retType, typeName ) \
  1051.                              typedef retType (N_CALLBACK     N_EXPORT *typeName)
  1052.  
  1053.       #define N_TYPEDEF_CALLBACK_C( retType, typeName ) \
  1054.                              typedef retType (N_FAR N_CDECL  N_EXPORT *typeName)
  1055.  
  1056.       #define N_TYPEDEF_CALLBACK_PAS( retType, typeName ) \
  1057.                              typedef retType (N_FAR N_PASCAL N_EXPORT *typeName)
  1058.  
  1059.       #define N_TYPEDEF_INTERN_FUNC( retType, typeName ) \
  1060.                              typedef retType (N_NEAR                  *typeName)
  1061.  
  1062.       #define N_TYPEDEF_INTERN_FUNC_C( retType, typeName ) \
  1063.                              typedef retType (N_NEAR N_CDECL          *typeName)
  1064.  
  1065.       #define N_TYPEDEF_INTERN_FUNC_PAS( retType, typeName ) \
  1066.                              typedef retType (N_NEAR N_PASCAL         *typeName)
  1067.  
  1068.    #elif defined( N_PLAT_MAC )
  1069.  
  1070.       #define N_GLOBAL_LIBRARY_PAS( retType )            N_PASCAL   retType
  1071.       #define N_EXTERN_LIBRARY_PAS( retType )  _N_EXTERN N_PASCAL   retType
  1072.  
  1073.       #define N_GLOBAL_CALLBACK( retType )               N_CALLBACK retType
  1074.       #define N_EXTERN_CALLBACK( retType )     _N_EXTERN N_CALLBACK retType
  1075.       #define N_GLOBAL_CALLBACK_C( retType )             N_CDECL    retType
  1076.       #define N_EXTERN_CALLBACK_C( retType )   _N_EXTERN N_CDECL    retType
  1077.       #define N_GLOBAL_CALLBACK_PAS( retType )           N_PASCAL   retType
  1078.       #define N_EXTERN_CALLBACK_PAS( retType ) _N_EXTERN N_PASCAL   retType
  1079.  
  1080.       #define N_TYPEDEF_FUNC( retType, typeName ) \
  1081.                                             typedef            retType (*typeName)
  1082.       #define N_TYPEDEF_FUNC_C( retType, typeName ) \
  1083.                                             typedef N_CDECL    retType (*typeName)
  1084.       #define N_TYPEDEF_FUNC_PAS( retType, typeName ) \
  1085.                                             typedef N_PASCAL   retType (*typeName)
  1086.       #define N_TYPEDEF_LIBRARY( retType, typeName ) \
  1087.                                             typedef N_PASCAL   retType (*typeName)
  1088.       #define N_TYPEDEF_LIBRARY_C( retType, typeName ) \
  1089.                                             typedef N_CDECL    retType (*typeName)
  1090.       #define N_TYPEDEF_LIBRARY_PAS( retType, typeName ) \
  1091.                                             typedef N_PASCAL   retType (*typeName)
  1092.       #define N_TYPEDEF_CALLBACK( retType, typeName ) \
  1093.                                             typedef N_CALLBACK retType (*typeName)
  1094.       #define N_TYPEDEF_CALLBACK_C( retType, typeName ) \
  1095.                                             typedef N_CDECL    retType (*typeName)
  1096.       #define N_TYPEDEF_CALLBACK_PAS( retType, typeName ) \
  1097.                                             typedef N_PASCAL   retType (*typeName)
  1098.       #define N_TYPEDEF_INTERN_FUNC( retType, typeName ) \
  1099.                                             typedef            retType (*typeName)
  1100.       #define N_TYPEDEF_INTERN_FUNC_C( retType, typeName ) \
  1101.                                             typedef N_CDECL    retType (*typeName)
  1102.       #define N_TYPEDEF_INTERN_FUNC_PAS( retType, typeName ) \
  1103.                                             typedef N_PASCAL   retType (*typeName)
  1104.  
  1105.    #elif defined( N_PLAT_UNIX )
  1106.  
  1107.       #define N_GLOBAL_LIBRARY_PAS( retType )                       retType
  1108.       #define N_EXTERN_LIBRARY_PAS( retType )  _N_EXTERN N_PASCAL   retType
  1109.  
  1110.       #define N_GLOBAL_CALLBACK( retType )               N_CALLBACK retType
  1111.       #define N_EXTERN_CALLBACK( retType )     _N_EXTERN N_CALLBACK retType
  1112.       #define N_GLOBAL_CALLBACK_C( retType )             N_CDECL    retType
  1113.       #define N_EXTERN_CALLBACK_C( retType )   _N_EXTERN N_CDECL    retType
  1114.       #define N_GLOBAL_CALLBACK_PAS( retType )           N_PASCAL   retType
  1115.       #define N_EXTERN_CALLBACK_PAS( retType ) _N_EXTERN N_PASCAL   retType
  1116.  
  1117.       #define N_TYPEDEF_FUNC( retType, typeName ) \
  1118.                                           typedef            retType (*typeName)
  1119.       #define N_TYPEDEF_FUNC_C( retType, typeName ) \
  1120.                                           typedef N_CDECL    retType (*typeName)
  1121.       #define N_TYPEDEF_FUNC_PAS( retType, typeName ) \
  1122.                                           typedef N_PASCAL   retType (*typeName)
  1123.       #define N_TYPEDEF_LIBRARY( retType, typeName ) \
  1124.                                           typedef            retType (*typeName)
  1125.       #define N_TYPEDEF_LIBRARY_C( retType, typeName ) \
  1126.                                           typedef N_CDECL    retType (*typeName)
  1127.       #define N_TYPEDEF_LIBRARY_PAS( retType, typeName ) \
  1128.                                           typedef N_PASCAL   retType (*typeName)
  1129.       #define N_TYPEDEF_CALLBACK( retType, typeName ) \
  1130.                                           typedef N_CALLBACK retType (*typeName)
  1131.       #define N_TYPEDEF_CALLBACK_C( retType, typeName ) \
  1132.                                           typedef N_CDECL    retType (*typeName)
  1133.       #define N_TYPEDEF_CALLBACK_PAS( retType, typeName ) \
  1134.                                           typedef N_PASCAL   retType (*typeName)
  1135.       #define N_TYPEDEF_INTERN_FUNC( retType, typeName ) \
  1136.                                           typedef            retType (*typeName)
  1137.       #define N_TYPEDEF_INTERN_FUNC_C( retType, typeName ) \
  1138.                                           typedef N_CDECL    retType (*typeName)
  1139.       #define N_TYPEDEF_INTERN_FUNC_PAS( retType, typeName ) \
  1140.                                           typedef N_PASCAL   retType (*typeName)
  1141.  
  1142.    #elif defined( N_PLAT_OS2)
  1143.  
  1144.       #define N_PRAGMA_ONCE
  1145.  
  1146.       #define N_GLOBAL_LIBRARY_PAS( retType )               retType  N_PASCAL
  1147.       #define N_EXTERN_LIBRARY_PAS( retType )     _N_EXTERN retType  N_PASCAL
  1148.  
  1149.       #define N_GLOBAL_CALLBACK( retType )                  retType  N_CALLBACK _export
  1150.       #define N_EXTERN_CALLBACK( retType )        _N_EXTERN retType  N_CALLBACK
  1151.       #define N_GLOBAL_CALLBACK_NATIVE( retType )           retType  EXPENTRY   _export
  1152.       #define N_EXTERN_CALLBACK_NATIVE( retType ) _N_EXTERN retType  EXPENTRY
  1153.       #define N_GLOBAL_CALLBACK_C( retType )                retType  N_CDECL    _export
  1154.       #define N_EXTERN_CALLBACK_C( retType )      _N_EXTERN retType  N_CDECL
  1155.       #define N_GLOBAL_CALLBACK_PAS( retType )              retType  N_PASCAL   _export
  1156.       #define N_EXTERN_CALLBACK_PAS( retType )    _N_EXTERN retType  N_PASCAL
  1157.  
  1158.       #define N_TYPEDEF_FUNC( retType, typeName ) \
  1159.                               typedef retType (                    *typeName)
  1160.  
  1161.       #define N_TYPEDEF_FUNC_C( retType, typeName ) \
  1162.                               typedef retType (         N_CDECL    *typeName)
  1163.  
  1164.       #define N_TYPEDEF_FUNC_PAS( retType, typeName ) \
  1165.                               typedef retType (         N_PASCAL   *typeName)
  1166.  
  1167.       #define N_TYPEDEF_LIBRARY( retType, typeName ) \
  1168.                               typedef retType (         N_PASCAL   *typeName)
  1169.  
  1170.       #define N_TYPEDEF_LIBRARY_C( retType, typeName ) \
  1171.                               typedef retType (         N_CDECL    *typeName)
  1172.  
  1173.       #define N_TYPEDEF_LIBRARY_PAS( retType, typeName ) \
  1174.                               typedef retType (         N_PASCAL   *typeName)
  1175.  
  1176.       #define N_TYPEDEF_CALLBACK( retType, typeName ) \
  1177.                               typedef retType (_export  N_CALLBACK *typeName)
  1178.  
  1179.       #define N_TYPEDEF_CALLBACK_NATIVE( retType, typeName ) \
  1180.                               typedef retType (_export  EXPENTRY   *typeName)
  1181.  
  1182.       #define N_TYPEDEF_CALLBACK_C( retType, typeName ) \
  1183.                               typedef retType (_export  N_CDECL    *typeName)
  1184.  
  1185.       #define N_TYPEDEF_CALLBACK_PAS( retType, typeName ) \
  1186.                               typedef retType (_export  N_PASCAL   *typeName)
  1187.  
  1188.       #define N_TYPEDEF_INTERN_FUNC( retType, typeName ) \
  1189.                               typedef retType (                    *typeName)
  1190.  
  1191.       #define N_TYPEDEF_INTERN_FUNC_C( retType, typeName ) \
  1192.                               typedef retType (         N_CDECL    *typeName)
  1193.  
  1194.       #define N_TYPEDEF_INTERN_FUNC_PAS( retType, typeName ) \
  1195.                               typedef retType (         N_PASCAL   *typeName)
  1196.  
  1197.    #elif defined( N_PLAT_DOS )
  1198.  
  1199.       #define N_GLOBAL_LIBRARY_PAS( retType )    retType N_FAR N_PASCAL
  1200.       #define N_EXTERN_LIBRARY_PAS( retType ) \
  1201.                                        _N_EXTERN retType N_FAR N_PASCAL
  1202.       #define N_GLOBAL_CALLBACK( retType )       retType N_FAR N_CALLBACK _export
  1203.       #define N_EXTERN_CALLBACK( retType ) \
  1204.                                        _N_EXTERN retType N_FAR N_CALLBACK _export
  1205.       #define N_GLOBAL_CALLBACK_C( retType )     retType N_FAR N_CDECL    _export
  1206.       #define N_EXTERN_CALLBACK_C( retType ) \
  1207.                                        _N_EXTERN retType N_FAR N_CDECL    _export
  1208.       #define N_GLOBAL_CALLBACK_PAS( retType )   retType N_FAR N_PASCAL   _export
  1209.       #define N_EXTERN_CALLBACK_PAS( retType ) \
  1210.                                        _N_EXTERN retType N_FAR N_PASCAL   _export
  1211.  
  1212.       #define N_TYPEDEF_FUNC( retType, typeName ) \
  1213.                             typedef retType (                          *typeName)
  1214.  
  1215.       #define N_TYPEDEF_FUNC_C( retType, typeName ) \
  1216.                             typedef retType (       N_CDECL            *typeName)
  1217.  
  1218.       #define N_TYPEDEF_FUNC_PAS( retType, typeName ) \
  1219.                             typedef retType (       N_PASCAL           *typeName)
  1220.  
  1221.       #define N_TYPEDEF_LIBRARY( retType, typeName ) \
  1222.                             typedef retType (N_FAR  N_PASCAL           *typeName)
  1223.  
  1224.       #define N_TYPEDEF_LIBRARY_C( retType, typeName ) \
  1225.                             typedef retType (N_FAR                     *typeName)
  1226.  
  1227.       #define N_TYPEDEF_LIBRARY_PAS( retType, typeName ) \
  1228.                             typedef retType (N_FAR  N_PASCAL           *typeName)
  1229.  
  1230.       #define N_TYPEDEF_CALLBACK( retType, typeName ) \
  1231.                             typedef retType (N_FAR  N_CALLBACK _export *typeName)
  1232.  
  1233.       #define N_TYPEDEF_CALLBACK_C( retType, typeName ) \
  1234.                             typedef retType (N_FAR  N_CDECL    _export *typeName)
  1235.  
  1236.       #define N_TYPEDEF_CALLBACK_PAS( retType, typeName ) \
  1237.                             typedef retType (N_FAR  N_PASCAL   _export *typeName)
  1238.  
  1239.       #define N_TYPEDEF_INTERN_FUNC( retType, typeName ) \
  1240.                             typedef retType (N_NEAR                    *typeName)
  1241.  
  1242.       #define N_TYPEDEF_INTERN_FUNC_C( retType, typeName ) \
  1243.                             typedef retType (N_NEAR N_CDECL            *typeName)
  1244.  
  1245.       #define N_TYPEDEF_INTERN_FUNC_PAS( retType, typeName ) \
  1246.                             typedef retType (N_NEAR  N_PASCAL          *typeName)
  1247.  
  1248.    #elif defined( N_PLAT_NLM )
  1249.  
  1250.       #define N_GLOBAL_LIBRARY_PAS( retType ) \
  1251.                                                  retType N_FAR N_PASCAL
  1252.       #define N_EXTERN_LIBRARY_PAS( retType ) \
  1253.                                        _N_EXTERN retType N_FAR N_PASCAL
  1254.       #define N_GLOBAL_CALLBACK( retType )       retType N_FAR 
  1255.       #define N_EXTERN_CALLBACK( retType ) \
  1256.                                        _N_EXTERN retType N_FAR 
  1257.       #define N_GLOBAL_CALLBACK_C( retType )     retType N_FAR N_CDECL
  1258.       #define N_EXTERN_CALLBACK_C( retType ) \
  1259.                                        _N_EXTERN retType N_FAR N_CDECL
  1260.       #define N_GLOBAL_CALLBACK_PASCAL( retType ) \
  1261.                                                  retType N_FAR N_PASCAL
  1262.       #define N_EXTERN_CALLBACK_PAS( retType ) \
  1263.                                        _N_EXTERN retType N_FAR N_PASCAL
  1264.  
  1265.       #define N_TYPEDEF_FUNC( retType, typeName ) \
  1266.                             typedef retType (            *typeName)
  1267.       #define N_TYPEDEF_FUNC_C( retType, typeName ) \
  1268.                             typedef retType (N_CDECL     *typeName)
  1269.       #define N_TYPEDEF_FUNC_PAS( retType, typeName ) \
  1270.                             typedef retType (N_PASCAL    *typeName)
  1271.       #define N_TYPEDEF_LIBRARY( retType, typeName ) \
  1272.                             typedef retType (            *typeName)
  1273.       #define N_TYPEDEF_LIBRARY_C( retType, typeName ) \
  1274.                             typedef retType (N_CDECL     *typeName)
  1275.       #define N_TYPEDEF_LIBRARY_PAS( retType, typeName ) \
  1276.                             typedef retType (N_PASCAL    *typeName)
  1277.       #define N_TYPEDEF_CALLBACK( retType, typeName ) \
  1278.                             typedef retType (N_CALLBACK  *typeName)
  1279.       #define N_TYPEDEF_CALLBACK_C( retType, typeName ) \
  1280.                             typedef retType (N_CDECL     *typeName)
  1281.       #define N_TYPEDEF_CALLBACK_PAS( retType, typeName ) \
  1282.                             typedef retType (N_PASCAL    *typeName)
  1283.       #define N_TYPEDEF_INTERN_FUNC( retType, typeName ) \
  1284.                             typedef retType (            *typeName)
  1285.       #define N_TYPEDEF_INTERN_FUNC_C( retType, typeName ) \
  1286.                             typedef retType (N_CDECL     *typeName)
  1287.       #define N_TYPEDEF_INTERN_FUNC_PAS( retType, typeName ) \
  1288.                             typedef retType (N_PASCAL    *typeName)
  1289.  
  1290.    #endif /* N_PLAT_NLM */
  1291.  
  1292.    /*
  1293.       Untyped logical macros.
  1294.    */
  1295.  
  1296.    #define NMin(a,b)               ((a) < (b) ? (a) : (b))
  1297.    #define NMax(a,b)               ((a) > (b) ? (a) : (b))
  1298.  
  1299.    /*
  1300.       Integer construction macros.
  1301.    */
  1302.  
  1303.    /* NMakePtrParam is defined here since it can't be used in a resource file */
  1304.  
  1305.    #define NMakePtrParam(p)    ((nparam) ((nptr) (p)))
  1306.  
  1307. #endif /* ! defined(N_RC_INVOKED) */
  1308.  
  1309. #define NMake32(lo,hi)     ((nuint32) (((nuint16)(lo)) | \
  1310.                               (((nuint32)(nuint16)(hi)) << 16)))
  1311. #define NGetLo16(a32)      ((nuint16)((nuint32)(a32) & 0xFFFF))
  1312. #define NGetHi16(a32)      ((nuint16)((nuint32)(a32) >> 16))
  1313. #define NMake16(lo,hi)     ((nuint16) (((nuint8)(lo)) | \
  1314.                               (((nuint16)((nuint8)(hi))) << 8)))
  1315. #define NGetLo8(a16)       ((nuint8)((nuint16)(a16) & 0xFF))
  1316. #define NGetHi8(a16)       ((nuint8)((nuint16)(a16) >> 8))
  1317.  
  1318.  
  1319. #define NMakePair32         NMake32
  1320. #define NGetFirst16(a)      ((nint16) NGetLo16(a))
  1321. #define NGetSecond16(a)     ((nint16) NGetHi16(a))
  1322.  
  1323. #define NMakePair16         NMake16
  1324. #define NGetFirst8(a)       ((nint8) NGetLo8(a))
  1325. #define NGetSecond8(a)      ((nint8) NGetHi8(a))
  1326.  
  1327. #define NMakeFixed32(i,f)   NMake32(f,i)
  1328. #define NGetFixedInt16(a)   ((nint16) NGetHi16(a))
  1329. #define NGetFixedFrac16(a)  ((nint16) NGetLo16(a))
  1330.  
  1331. /* Swap, Copy, Get and Set macros */
  1332.  
  1333. #define NSwap32( x ) ((nuint32) ( \
  1334.    (((nuint32)(x) & 0x000000FFL) << 24) | \
  1335.    (((nuint32)(x) & 0x0000FF00L) <<  8) | \
  1336.    (((nuint32)(x) & 0x00FF0000L) >>  8) | \
  1337.    (((nuint32)(x) & 0xFF000000L) >> 24) ))
  1338.  
  1339. #define NSwap16( x ) ((nuint16) ( \
  1340.    (((nuint16)(x) & 0x00FF) << 8) | \
  1341.    (((nuint16)(x) & 0xFF00) >> 8) ))
  1342.  
  1343. #define NCopySwap32( pDest, pSrc )  \
  1344.    (((pnuint8) (pDest))[0] = ((pnuint8) (pSrc))[3], \
  1345.       ((pnuint8) (pDest))[1] = ((pnuint8) (pSrc))[2], \
  1346.       ((pnuint8) (pDest))[2] = ((pnuint8) (pSrc))[1], \
  1347.       ((pnuint8) (pDest))[3] = ((pnuint8) (pSrc))[0])
  1348.  
  1349. #define NCopySwap16( pDest, pSrc )  \
  1350.    (((pnuint8) (pDest))[0] = ((pnuint8) (pSrc))[1], \
  1351.       ((pnuint8) (pDest))[1] = ((pnuint8) (pSrc))[0])
  1352.  
  1353. #if defined( N_INT_ENDIAN_HI_LO )
  1354.  
  1355.    #define NSwapHiLo32( x )      ((nuint32) (x))
  1356.    #define NSwapHiLo16( x )      ((nuint16) (x))
  1357.    #define NSwapLoHi32( x )      NSwap32( x )
  1358.    #define NSwapLoHi16( x )      NSwap16( x )
  1359.  
  1360. #else
  1361.  
  1362.    #define NSwapHiLo32( x )      NSwap32( x )
  1363.    #define NSwapHiLo16( x )      NSwap16( x )
  1364.    #define NSwapLoHi32( x )      ((nuint32) (x))
  1365.    #define NSwapLoHi16( x )      ((nuint16) (x))
  1366.  
  1367. #endif
  1368.  
  1369. #define NSwapToHiLo32( x )    NSwapHiLo32( x )
  1370. #define NSwapToHiLo16( x )    NSwapHiLo16( x )
  1371. #define NSwapToLoHi32( x )    NSwapLoHi32( x )
  1372. #define NSwapToLoHi16( x )    NSwapLoHi16( x )
  1373.  
  1374. #define NSwapFromHiLo32( x )  NSwapHiLo32( x )
  1375. #define NSwapFromHiLo16( x )  NSwapHiLo16( x )
  1376. #define NSwapFromLoHi32( x )  NSwapLoHi32( x )
  1377. #define NSwapFromLoHi16( x )  NSwapLoHi16( x )
  1378.  
  1379. #if defined( N_INT_STRICT_ALIGNMENT )
  1380.  
  1381.    #define NCopy32( pDest, pSrc )   \
  1382.       (((pnuint8) (pDest))[0] = ((pnuint8) (pSrc))[0], \
  1383.          ((pnuint8) (pDest))[1] = ((pnuint8) (pSrc))[1], \
  1384.          ((pnuint8) (pDest))[2] = ((pnuint8) (pSrc))[2], \
  1385.          ((pnuint8) (pDest))[3] = ((pnuint8) (pSrc))[3])
  1386.  
  1387.    #define NCopy16( pDest, pSrc )   \
  1388.       (((pnuint8) (pDest))[0] = ((pnuint8) (pSrc))[0], \
  1389.          ((pnuint8) (pDest))[1] = ((pnuint8) (pSrc))[1])
  1390.  
  1391.    #define NSet32( pDest, src) \
  1392.       (((pnuint8) (pDest))[0] = ((pnuint8) (&src))[0], \
  1393.          ((pnuint8) (pDest))[1] = ((pnuint8) (&src))[1], \
  1394.          ((pnuint8) (pDest))[2] = ((pnuint8) (&src))[2], \
  1395.          ((pnuint8) (pDest))[3] = ((pnuint8) (&src))[3])
  1396.  
  1397.    #define NSet16( pDest, src) \
  1398.       (((pnuint8) (pDest))[0] = ((pnuint8) (&src))[0], \
  1399.          ((pnuint8) (pDest))[1] = ((pnuint8) (&src))[1])
  1400.  
  1401.    #define NGet32( pSrc ) \
  1402.       (((pnuint8) (pSrc))[0]           |  \
  1403.          (((pnuint8) (pSrc))[1] << 8)  |  \
  1404.          (((pnuint8) (pSrc))[2] << 16) |  \
  1405.          (((pnuint8) (pSrc))[3] << 24))
  1406.  
  1407.    #define NGet16( pSrc ) \
  1408.       (((pnuint8) (pSrc))[0]           |  \
  1409.          (((pnuint8) (pSrc))[1] << 8))
  1410.  
  1411.    /* 
  1412.     * Although similar to the NGet and NSet macros above, these macros allow
  1413.     * for reading from an unaligned source or writing to an unaligned source
  1414.     * Note that these macros DO NOT take a pointer argument.
  1415.     */
  1416.    #define NRead16(x) \
  1417.       ((((nuint8 *)(&(x)))[0] <<  8) |  \
  1418.          (((nuint8 *)(&(x)))[1]))
  1419.  
  1420.    #define NRead32(x) \
  1421.       ((((nuint8 *)(&(x)))[0] << 24) | \
  1422.          (((nuint8 *)(&(x)))[1] << 16) | \
  1423.          (((nuint8 *)(&(x)))[2] <<  8) | \
  1424.          (((nuint8 *)(&(x)))[3]))
  1425.  
  1426.    #define NWrite16(x, s) \
  1427.       (((nuint8 *)(&(x)))[0] = (nuint16)(s) >> 8, \
  1428.          ((nuint8 *)(&(x)))[1] = ((nuint16)(s)))
  1429.  
  1430.    #define NWrite32(x, l) \
  1431.       (((nuint8 *)(&(x)))[0] = (nuint32)(l) >> 24, \
  1432.          ((nuint8 *)(&(x)))[1] = (nuint32)(l) >> 16, \
  1433.          ((nuint8 *)(&(x)))[2] = (nuint32)(l) >>  8, \
  1434.          ((nuint8 *)(&(x)))[3] = (nuint32)(l) )
  1435.  
  1436. #else
  1437.  
  1438.    #define NCopy32( pDest, pSrc )   \
  1439.       (*((pnuint32) (pDest)) = *((pnuint32) (pSrc)))
  1440.  
  1441.    #define NCopy16( pDest, pSrc )   \
  1442.       (*((pnuint16) (pDest)) = *((pnuint16) (pSrc)))
  1443.  
  1444.    #define NSet32( pDest, src) \
  1445.       (*((pnuint32) (pDest)) = src)
  1446.  
  1447.    #define NSet16( pDest, src) \
  1448.       (*((pnuint16) (pDest)) = src)
  1449.  
  1450.    #define NGet32( pSrc ) \
  1451.       (*((pnuint32) (pSrc)))
  1452.  
  1453.    #define NGet16( pSrc ) \
  1454.       (*((pnuint16) (pSrc)))
  1455.  
  1456.    /* 
  1457.     * Although similar to the NGet and NSet macros above, these macros allow
  1458.     * for reading from an unaligned source or writing to an unaligned source
  1459.     * Note that these macros DO NOT take a pointer argument.
  1460.     */
  1461.    #define NRead16(x) \
  1462.       (*((nuint16 *)&(x)))
  1463.  
  1464.    #define NRead32(x) \
  1465.       (*((nuint32 *)&(x)))
  1466.  
  1467.    #define NWrite16(x, s) \
  1468.       (*(nuint16 *)&(x) = (nuint16)(s))
  1469.  
  1470.    #define NWrite32(x, l) \
  1471.       (*(nuint32 *)&(x) = (nuint32)(l))
  1472.  
  1473. #endif
  1474.  
  1475. #if defined( N_INT_ENDIAN_HI_LO )
  1476.  
  1477.    /* Copy from native format to named format */
  1478.    #define NCopyHiLo32        NCopy32
  1479.    #define NCopyHiLo16        NCopy16
  1480.    #define NCopyLoHi32        NCopySwap32
  1481.    #define NCopyLoHi16        NCopySwap16
  1482.  
  1483. #else
  1484.  
  1485.    /* Copy from native format to named format */
  1486.    #define NCopyHiLo32        NCopySwap32
  1487.    #define NCopyHiLo16        NCopySwap16
  1488.    #define NCopyLoHi32        NCopy32
  1489.    #define NCopyLoHi16        NCopy16
  1490.  
  1491. #endif
  1492.  
  1493.    #define NCopyToHiLo32      NCopyHiLo32        
  1494.    #define NCopyToHiLo16      NCopyHiLo16        
  1495.    #define NCopyToLoHi32      NCopyLoHi32        
  1496.    #define NCopyToLoHi16      NCopyLoHi16        
  1497.  
  1498.    /* Copy from named format to native format */
  1499.    #define NCopyFromHiLo32    NCopyHiLo32        
  1500.    #define NCopyFromHiLo16    NCopyHiLo16        
  1501.    #define NCopyFromLoHi32    NCopyLoHi32        
  1502.    #define NCopyFromLoHi16    NCopyLoHi16        
  1503.  
  1504. #define NPad32( s )           ((s + 3) & ~3)
  1505. #define NPad16( s )           (((s) + 1) & ~1)
  1506.  
  1507. #define NAlign32(s)  *(s) = (void N_FAR *) (((nuint32)*(s) + 3) & ~3);
  1508.  
  1509. #define NSetPtXY( pptPoint, x, y )      \
  1510.    (( pptPoint )->x = ( x ), \
  1511.    ( pptPoint )->y = ( y ))
  1512.  
  1513. #define NSetPtYX( pptPoint, y, x )      \
  1514.    (( pptPoint )->x = ( x ), \
  1515.    ( pptPoint )->y = ( y ))
  1516.  
  1517. #define NSetRectXY( prtRect, left, top, right, bottom ) \
  1518.    (( prtRect )->left = ( left ), \
  1519.    ( prtRect )->top = ( top ),    \
  1520.    ( prtRect )->right = ( right ), \
  1521.    ( prtRect )->bottom = ( bottom ))
  1522.  
  1523. #define NSetRectYX( prtRect, top, left, bottom, right ) \
  1524.    (( prtRect )->left = ( left ), \
  1525.    ( prtRect )->top = ( top ),    \
  1526.    ( prtRect )->right = ( right ), \
  1527.    ( prtRect )->bottom = ( bottom ))
  1528.  
  1529. #define NSetRectXYSize( prtRect, left, top, width, height )     \
  1530.    (( prtRect )->left = ( left ), \
  1531.    ( prtRect )->top = ( top ),    \
  1532.    ( prtRect )->right = (( left )+( width )), \
  1533.    ( prtRect )->bottom = (( top )+( height )))
  1534.  
  1535. #define NSetRectYXSize( prtRect, top, left, height, width )     \
  1536.    (( prtRect )->left = ( left ), \
  1537.    ( prtRect )->top = ( top ),    \
  1538.    ( prtRect )->right = (( left )+( width )), \
  1539.    ( prtRect )->bottom = (( top )+( height )))
  1540.  
  1541. #define NCopyPt( pptTo, pptFrom ) \
  1542.    ((pptTo)->x = (pptFrom)->x, \
  1543.    (pptTo)->y = (pptFrom)->y)
  1544.  
  1545. #define NCopyRect( prtTo, prtFrom ) \
  1546.    ((prtTo)->left = (prtFrom)->left, \
  1547.    (prtTo)->top = (prtFrom)->top, \
  1548.    (prtTo)->right = (prtFrom)->right, \
  1549.    (prtTo)->bottom = (prtFrom)->bottom)
  1550.  
  1551. #define NCopyRect32( prtlTo, prtFrom ) \
  1552.    ((prtlTo)->left = (nint32) (prtFrom)->left, \
  1553.    (prtlTo)->top = (nint32) (prtFrom)->top, \
  1554.    (prtlTo)->right = (nint32) (prtFrom)->right, \
  1555.    (prtlTo)->bottom = (nint32) (prtFrom)->bottom)
  1556.  
  1557. #define NCopyRect16( prtTo, prtlFrom ) \
  1558.    ((prtTo)->left = (nint16) (prtlFrom)->left, \
  1559.    (prtTo)->top = (nint16) (prtlFrom)->top, \
  1560.    (prtTo)->right = (nint16) (prtlFrom)->right, \
  1561.    (prtTo)->bottom = (nint16) (prtlFrom)->bottom)
  1562.  
  1563. #define NCopyPt32( pptlTo, pptFrom ) \
  1564.    ((pptlTo)->x = (nint32) (pptFrom)->x, \
  1565.    (pptlTo)->y = (nint32) (pptFrom)->y)
  1566.  
  1567. #define NCopyPt16( pptTo, pptlFrom ) \
  1568.    ((pptTo)->x = (nint16) (pptlFrom)->x, \
  1569.    (pptTo)->y = (nint16) (pptlFrom)->y)
  1570.  
  1571. /*
  1572.    Character and String macros.
  1573. */
  1574.  
  1575. #if defined(N_USE_STR_16)
  1576.    #define NText(a)        L a
  1577. #else
  1578.    #define NText(a)        a
  1579. #endif
  1580.  
  1581. #if defined( N_PLAT_MSW ) || defined( N_PLAT_OS2 ) || defined( N_PLAT_DOS )
  1582.    #define N_NEWLINE       NText( "\r\n" )
  1583. #elif defined( N_PLAT_MAC )
  1584.    #if defined( THINK_C ) || defined( __MWERKS__ )
  1585.       #define N_NEWLINE               NText( "\r" )
  1586.    #else
  1587.       #define N_NEWLINE               NText( "\n" )
  1588.    #endif
  1589. #else
  1590.    #define N_NEWLINE       NText( "\n" )
  1591. #endif
  1592.  
  1593. /*
  1594.    Historical macro synonyms.
  1595. */
  1596.  
  1597. #if ! defined( N_INC_NO_OLD_MACROS ) 
  1598.    #if !defined( FAR )
  1599.       #define FAR         N_FAR
  1600.    #endif
  1601.    #if !defined( NEAR )
  1602.       #define NEAR        N_NEAR
  1603.    #endif
  1604.    #if !defined( MIN )
  1605.       #define MIN         NMin
  1606.    #endif
  1607.    #if !defined( MAX )
  1608.       #define MAX         NMax
  1609.    #endif
  1610.    #if !defined( MAKELONG )
  1611.       #define MAKELONG    NMake32
  1612.    #endif
  1613.    #if !defined( HIWORD )
  1614.       #define HIWORD      NGetHi16
  1615.    #endif
  1616.    #if !defined( LOWORD )
  1617.       #define LOWORD      NGetLo16
  1618.    #endif
  1619.    #if !defined( MAKEWORD )
  1620.       #define MAKEWORD    NMake16
  1621.    #endif
  1622.    #if !defined( HIBYTE )
  1623.       #define HIBYTE      NGetHi8
  1624.    #endif
  1625.    #if !defined( LOBYTE )
  1626.       #define LOBYTE      NGetLo8
  1627.    #endif
  1628. #endif
  1629.  
  1630. #endif /* ! defined( NTYPES_H ) */
  1631.