Brief documentation for NTYPES.H v1.08 NTYPES.H is broken up into five sections. The first defines automatic compiler/platform settings. The second section defines items according to the platform. The third section defines non-platform specific defines. The fourth section defines new types. The fifth section defines macros. This file is guaranteed NOT to include any other files. It should be placed before any Novell include files, but after any standard C or platform specific files, such as "windows.h". Certain sections may be excluded by defining N_INC_NO... macros. These are currently defined as: N_INC_NO_AUTO Don't automatically define platforms defines. N_INC_NO_OLD_CONSTANTS Don't define historical constants. N_INC_NO_OLD_MACROS Don't define historical macros. Section 4c is has been removed from v1.06 of NTYPES.H N_INC_NO_GUI Is no longer checked N_INC_GUI Is no longer checked For compatibility purposes a platform may be defined in multiple ways. Some of these methods are defacto standards for their appropriate platforms. Note that AppWare considers the N_PLAT_xxxx method to be the default. (Some of the following are trademarks of their respective companies) Microsoft Windows Family - N_PLAT_MSW ************************** If N_PLAT_MSW is defined, at least one of the below should be defined; if none is defined, N_PLAT_MSW3 will be forced on. If any of the following are defined, N_PLAT_MSW will be forced on. If N_PLAT_WNT? is defined, N_PLAT_WNT will be forced on. Microsoft Windows 3.x - N_PLAT_MSW3 Microsoft Windows 4.x - N_PLAT_MSW4 Microsoft Windows NT 3.x - N_PLAT_WNT3 Microsoft Windows NT 4.x - N_PLAT_WNT4 ************************** IBM OS/2 - N_PLAT_OS2 DOS - N_PLAT_DOS, NWDOS Novell NetWare NLM - N_PLAT_NLM Macintosh - N_PLAT_MAC Unix - N_PLAT_UNIX One of the following architectures will always be defined: N_ARCH_16 - 16 bit word size N_ARCH_32 - 32 bit word size N_ARCH_64 - 64 bit word size If there is a need to force the natural integer to a specific size use one of the following definitions (like for thunk layers). N_FORCE_INT_16 - Force nint and nuint to be 16 bit word size N_FORCE_INT_32 - Force nint and nuint to be 32 bit word size Typical combinations are as follows. The preferred defines are the first one in each of the following lines: Microsoft Windows (16 bit) - N_PLAT_MSW and N_ARCH_16, NWWIN Microsoft Windows (32 bit) - N_PLAT_MSW and N_ARCH_32, WIN32 Microsoft Windows 3.x - N_PLAT_MSW3 Microsoft Windows 4.x - N_PLAT_MSW4 Microsoft Windows NT - N_PLAT_WNT Microsoft Windows NT 3.x - N_PLAT_WNT3 Microsoft Windows NT 4.x - N_PLAT_WNT4 IBM OS/2 (16 bit) - N_PLAT_OS2 and N_ARCH_16, NWOS2 IBM OS/2 (32 bit) - N_PLAT_OS2 and N_ARCH_32 DOS - N_PLAT_DOS, NWDOS Novell NetWare NLM - N_PLAT_NETWARE and N_PLAT_NETWARE Novell NISO NLM - N_PLAT_NIOS and N_PLAT_NIOS Macintosh - N_PLAT_MAC Unix - N_PLAT_UNIX and N_ARCH_32 or N_ARCH_64 Implied definitions (ntypes.h will create the implied definitions if no additional defines are provided). Variances (ex: N_PLAT_WNT && N_ARCH_16) must be defined explicity: Defined Implied NWDOS N_PLAT_DOS, N_ARCH_16 N_PLAT_DOS NWDOS, N_ARCH_16 NWOS2 N_PLAT_OS2, N_ARCH_16 N_PLAT_OS2 N_ARCH_32 N_PLAT_OS2, N_ARCH_16 NWOS2 NWWIN N_PLAT_MSW, N_ARCH_16 N_PLAT_MSW N_PLAT_MSW3, N_ARCH_16 N_PLAT_MSW, N_ARCH_16 NWWIN, N_PLAT_MSW3 N_PLAT_MSW3 N_PLAT_MSW, N_ARCH_16 N_PLAT_MSW4 N_PLAT_MSW, N_ARCH_32 N_PLAT_WNT N_PLAT_MSW, N_PLAT_WNT3, N_ARCH_32 N_PLAT_WNT, N_ARCH_16 NWWIN, N_PLAT_MSW, N_PLAT_WNT3 N_PLAT_WNT3 N_PLAT_MSW, N_PLAT_WNT, N_ARCH_32 N_PLAT_WNT4 N_PLAT_MSW, N_PLAT_WNT, N_ARCH_32 N_PLAT_NLM N_PLAT_NETWARE, N_IAPX386 N_ARCH_32 N_PLAT_NETWARE N_PLAT_NLM, N_IAPX386 N_ARCH_32 N_PLAT_NIOS N_PLAT_NLM, N_IAPX386 N_ARCH_32 N_PLAT_MAC N_ARCH_32 N_PLAT_UNIX N_ARCH_32 Note that the following constants are assumed to be defined for the given circumstances: _INC_WINDOWS - Microsoft's WINDOWS.H file has been included. RC_INVOKED - Microsoft's RC resource compiler is currently processing the file. Revision history: v1.08 - Removed inadvertent define of N_EXPORTS for N_PLAT_MSW/N_ARCH_32 v1.07 - Added auto defines for N_PLAT_NLM: N_PLAT_NLM machine defaults to N_IAPX386 (vs N_PPC). N_PLAT_NLM OS defaults to N_PLAT_NETWARE (vs N_PLAT_NIOS). N_PLAT_NETWARE causes N_PLAT_NLM to be defined. N_PLAT_NIOS causes N_PLAT_NLM to be defined. v1.06 - Removed GUI defines. - Fixed bug in NGet16/32 and NRead16/32 macros that caused them to swap on N_INT_ENDIAN_HI_LO machines. - Cleaned up/reduced macros that were effectively just duplicates of other macros with the only difference being how parameters were passed. - Cleaned up alignment of macro defines to make them easier to read. - Added HiLo/LoHi Get, Set, Read, and Write macros v1.05 - Added special pascal type for OS2 under Borland compile. - Added Enhanced "endianness" checks for N_PLAT_NLM - Changed N_API et.al. under N_PLAT_NLM to use compiler "default" and changed N_PASCAL and N_CDECL to be properly defined. This allows forced function types when needed. - Changed TRUE/FALSE in section 5 to be defined directly, not in terms of N_TRUE and N_FALSE. - Changed default to NOT include GUI defines. N_INC_GUI must be defined to include these now. This section will be removed in v1.06 of NTYPES.H. - Broke off large comment at beginning of file into NTYPES.TXT. - Added pointers to pointers typedefs. - Added sized boolean types. Changes to NPACKON.H: - Added support for Windows 95 platform v1.04 -Added N_..._CALLBACK and N_TYPEDEFs for N_PLAT_NLM -Corrected bug in NCopyFrom... macros (they were reversed in functionality) -Added support for reading from or writing to unaligned values (NRead... and NWrite...) -Changed: #if !defined(N_ARCH_64) && \ !defined(N_ARCH_32) && \ !defined(N_ARCH_16) to: #if !defined(N_ARCH_64) && !defined(N_ARCH_32) && !defined(N_ARCH_16) to work around a bug in MPW's CFront preprocessor. -Changed METROWERKS_C define check to check for __MWERKS__ instead. METROWERKS_C is obsolete. -Changed N_GLOBAL_LIBRARY and N_EXTERN_LIBRARY to use N_PASCAL instead of pascal (which is the purpose of N_PASCAL anyway). -Changed platform specific typedefs to use N_HUGE...will probably consolidate into platform independent types later. -Changed to standardized copyright (smaller) -Cosmetic (typo) changes made to introductory comments -Changed function definition macros and function pointer type definition macros to correctly match document and use the N_CALLBACK, N_CDECL, and N_PASCAL defines. Changes to NPACKON.H: -Added pragma to shut up Visual C compilers so they don't complain about changing the alignment. v1.03 -Reformat (one time hit, won't happen again); includes removal of embedded tabs and consistent indenting to 4,7 "tabbing", consistent use of #if's. Various authors have modified this file using different tab stop interpretations (some at 4 spaces per tab, some at 3, and some at 8). Reading the code was subject to misinterpretations because of differences in indentation. Embedded tabs will now be kept out of ntypes. -"Fixed" missing section markers and corrected commented documentation on sections. -Clarified and corrected commented documentation. -Added support for N_INC_NO_GUI (don't include GUI structures) so that non-interface apps don't need to fill up compiler symbol space. -Added automatic defininitions for N_ARCH... and N_PLAT... macros when they can be deduced from a single definition. For example, if N_PLAT_DOS is defined, N_ARCH_16 is automatically defined if no N_ARCH... macro has yet been set. -Removed automatic inclusion of Types.h for Mac platform (as stated at the beginning of ntypes: "This file is guarenteed NOT to include any other files. It should be placed before any NetWare include files, but after any standard C or platform specific files, such as "windows.h"." Types.h should be included before ntypes for Mac code. -Added NSwapTo... and NSwapFrom... macros to clarify usage. -Renamed NMake32() and NMake16() macro parameters for clarity. -Changed use of PASCAL to N_PASCAL as per spec in function macros. v1.02 - Added support for NLMs - Eliminated nbool16 and nbool32 in all Platforms. - Fixed bugs in Macintosh PowerPC - Added support for OSF on Alpha v1.01 - Macintosh compile problems, want to use C calling conventions, not pascal (at least for now) - Changes in OS/2 Section only to support 32 bit IBM C++ compiler - Added support for non-MPW compilers v1.00 - Initial release