// Header file for STRUCMEM.DLL
// Defines constants for the data types and their sizes

#ifndef _structapi_
#define _structapi_

//
// Define data types of members
//

// C++ Types
#define TYPE_STRING  -1
#define TYPE_CHAR     0
#define TYPE_UCHAR    1
#define TYPE_SHORT    2
#define TYPE_USHORT   3
#define TYPE_INT      4
#define TYPE_UINT     5 
#define TYPE_LONG     6
#define TYPE_ULONG    7
#define TYPE_FLOAT    8
#define TYPE_DOUBLE   9
#define TYPE_LDOUBLE  10
#define TYPE_CHANDLE  TYPE_UINT
#define TYPE_POINTER  TYPE_UINT


// Windows Types
#define TYPE_RECT     TYPE_POINTER
#define TYPE_HDC      TYPE_CHANDLE
#define TYPE_BYTE     TYPE_UCHAR
#define TYPE_BCHAR    TYPE_BYTE
#define TYPE_WORD     TYPE_USHORT
#define TYPE_DWORD    TYPE_ULONG
#define TYPE_BOOL     TYPE_INT
#define TYPE_LPVOID   TYPE_LONG
//
// Size of data types
//

// C++ types
#define SIZEOF_STRING   -1
#define SIZEOF_CHAR      1
#define SIZEOF_UCHAR     1
#define SIZEOF_SHORT     2
#define SIZEOF_USHORT    2
#define SIZEOF_INT       4
#define SIZEOF_UINT      4 
#define SIZEOF_LONG      4
#define SIZEOF_ULONG     4
#define SIZEOF_FLOAT     4
#define SIZEOF_DOUBLE    8
#define SIZEOF_LDOUBLE   10
#define SIZEOF_POINTER   4

// Windows types
#define SIZEOF_BYTE      SIZEOF_UCHAR
#define SIZEOF_WORD      SIZEOF_USHORT
#define SIZEOF_DWORD     SIZEOF_ULONG
#define SIZEOF_BOOL      SIZEOF_INT

#endif  // _structapi_