// file: $isip/class/system/Integral/IntegralTypes.h // version: $Id: IntegralTypes.h 8686 2002-09-09 00:07:36Z picone $ // // system include file // #define __lint #include // this is the basic isip environment include file. all Integral types // are defined in this file. these are also implemented as C++ classes. // all software must be built upon these basic types. // // these definitions follow a format in which the data type is related // to particular machine defined formats. // this file is for internal use only // #ifdef ISIP_INTERNAL_USE_ONLY // make sure definitions are only made once // follow the standard isip convention in defining the symbol to be // used to signal the preprocessor // #ifndef ISIP_INTEGRAL_TYPES #define ISIP_INTEGRAL_TYPES // we include the complex number class so we can define complex number integral // types // #ifndef ISIP_SYS_COMPLEX #include #endif // Integral type #1: boolean or boolean variables // typedef bool boolean; // Integral type #2: a single byte of data // typedef unsigned char ubyte; typedef ubyte byte; typedef signed char sbyte; // Integral type #3: a character // // a character object is a multi-byte unicode index number. in order // to support unicode in our environment, the classes SysChar and // SysString exist at the lowest levels (the system library) with // automatic conversions for both standard C strings (7-bit // characters) and other standard encoding schemes. // typedef wchar_t unichar; // Integral type #4: an unsigned integer // typedef unsigned short int ushort; typedef unsigned long int ulong; typedef unsigned long long int ullong; // Integral type #5: a signed integer // // since our name-space conflicts with standard C, we do not actually // make a typedef. these lines are included in this file as a // reference for the programmer of the base classes. // //typedef short int short; //typedef long int long; typedef long slong; typedef long long int llong; typedef llong sllong; typedef short sint; // Integral type #6: a real floating point number // // since our namespace conflicts with standard C, we do not actually // make a typedef. these lines are included in this file as a // reference for the programmer of the base classes. // //typedef float float; //typedef double double; // Integral type #7: a complex number // typedef SysComplex complexfloat; typedef SysComplex complexdouble; typedef SysComplex complexlong; // the above types do not specify sizes, but there are minimum // guarantees based around a 32 bit architecture model. a short // integer will be at least 16 bits, long 32 bits, llong 64 bits. a // float will be at least 32 bits, a double at least 64 bits. any data // in excess of these limits will not be preserved thorough file // i/o. these integral types will not have corresponding scalar // classes and will not be included in more complex data types, or // used in any manner except i/o or possibly fixed point. it is the // programmers responsibility to convert data from these size specific // data types to the more general standard integral types listed above // before processing. // typedef unsigned char byte8; typedef unsigned short int uint16; typedef unsigned long int uint32; typedef unsigned long long int uint64; typedef short int int16; typedef long int int32; typedef long long int int64; typedef float float32; typedef double float64; // end of include file // #endif #endif