// ------------------------------- //
// -------- Start of File -------- //
// ------------------------------- //
// ----------------------------------------------------------- //
// C++ Header File Name: dtypes.h 
// Compiler Used: MSVC40, DJGPP 2.7.2.1, GCC 2.7.2.1, HP CPP 10.24
// Produced By: Doug Gaer   
// File Creation Date: 09/05/1997  
// Date Last Modified: 03/15/1999
// Copyright (c) 1997 Douglas M. Gaer
// ----------------------------------------------------------- // 
// ---------- Include File Description and Details  ---------- // 
// ----------------------------------------------------------- // 
/*
The VBD C++ classes are copyright (c) 1997, by Douglas M. Gaer.
All those who put this code or its derivatives in a commercial
product MUST mention this copyright in their documentation for
users of the products in which this code or its derivative
classes are used. Otherwise, you have the freedom to redistribute
verbatim copies of this source code, adapt it to your specific
needs, or improve the code and release your improvements to the
public provided that the modified files carry prominent notices
stating that you changed the files and the date of any change.

THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND.
THE ENTIRE RISK OF THE QUALITY AND PERFORMANCE OF THIS SOFTWARE
IS WITH YOU. SHOULD ANY ELEMENT OF THIS SOFTWARE PROVE DEFECTIVE,
YOU WILL ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR, OR
CORRECTION.

This file contains typedefs and constants used to maintain
compatiblity between the built-in data type sizes on various
compilers.

Changes: 
================================================================
12/16/1997 - Added leading and trailing double underscores to
type names to avoid any name conflicts with other libraries.
Changed by: Doug Gaer

12/16/1997 - Added __USE_OLD_TYPE_NAMES__ macro to conditionally
compile with old type names.
Changed by: Doug Gaer

05/28/1998 - Added __USE_DTYPES_CONSTANTS__ macro to enable or
disable the positive and negitive limits constants defined in
this file.
Changed by: Doug Gaer
================================================================
*/
// ----------------------------------------------------------- //   
#ifndef __DTYPES_HPP__
#define __DTYPES_HPP__

// NOTE: These typedefs were renamed to avoid name conficts 
typedef char __SBYTE__;            // 8-bit signed value
typedef unsigned char __UBYTE__;   // 8-bit unsigned value
typedef int __WORD__;              // (W)ord size (4 bytes) 
typedef unsigned __UWORD__;        // (U)nsigned (W)ord size (4 bytes)
typedef long __LWORD__;            // (L)ong (W)ord size (4 bytes)
typedef unsigned long __ULWORD__;  // (U)nsigned (L)ong (W)ord size (4 Bytes)
typedef short __SWORD__;           // (S)hort (W)ord size (2 bytes)
typedef unsigned short __USWORD__; // (U)nsigned (S)hort (W)ord size (2 bytes) 
typedef double __DPFLOAT__; // (D)ouble (P)recision (F)loating point (8 bytes)

// Define this macro to compile with these previous type names.
// #ifndef __USE_OLD_TYPE_NAMES__
// #define __USE_OLD_TYPE_NAMES__
// #endif

// These typedefs provide compatibility with the previous releases.
#ifdef __USE_OLD_TYPE_NAMES__
typedef char SBYTE;            // 8-bit signed value
typedef unsigned char UBYTE;   // 8-bit unsigned value
typedef int WORD;              // (W)ord size (4 bytes) 
typedef unsigned UWORD;        // (U)nsigned (W)ord size (4 bytes)
typedef long LWORD;            // (L)ong (W)ord size (4 bytes)
typedef unsigned long ULWORD;  // (U)nsigned (L)ong (W)ord size (4 Bytes)
typedef short SWORD;           // (S)hort (W)ord size (2 bytes)
typedef unsigned short USWORD; // (U)nsigned (S)hort (W)ord size (2 bytes) 
typedef double DPFLOAT; // (D)ouble (P)recision (F)loating point (8 bytes)
#endif

// Define this macro to use the positive and negitive limits
// constants defined in this file.
// #ifndef __USE_DTYPES_CONSTANTS__
// #define __USE_DTYPES_CONSTANTS__
// #endif

#ifdef __USE_DTYPES_CONSTANTS__
// Positive and Negitive limits Constants 
const __LWORD__   LWORDPositiveLimit = 2147483647;
const __LWORD__   LWORDNegitiveLimit = 2147483648;
const __ULWORD__  ULWORDLimit        = 4294967295;
const __WORD__    WORDPositiveLimit  = 2147483647;
const __WORD__    WORDNegitiveLimit  = 2147483648;
const __UWORD__   UWORDLimit         = 4294967295;
const __SWORD__   SWORDPositiveLimit = 32767;
const __SWORD__   SWORDNegitiveLimit = 32768;
const __USWORD__  USWORDLimit        = 65535;
const __DPFLOAT__ DPFLOATPositiveLimit = 1.7E+308; // (15 digit precision)
const __DPFLOAT__ DPFLOATNegitiveLimit = 1.7E-308; // (15 digit precision)
#endif // __USE_DTYPES_CONSTANTS__

#endif // __DTYPES_HPP__
// ----------------------------------------------------------- // 
// ------------------------------- //
// --------- End of File --------- //
// ------------------------------- //
