00001
00009 #ifndef _LGIDEFS_H_
00010 #define _LGIDEFS_H_
00011
00012 #include "LgiInc.h"
00013
00014
00015 typedef unsigned char uchar;
00016 typedef unsigned short ushort;
00017 typedef unsigned int uint;
00018 typedef unsigned long ulong;
00019
00020
00021
00022 #ifndef BEOS
00024 typedef char int8;
00026 typedef unsigned char uint8;
00027 #else
00028 #include "be_prim.h"
00029 #endif
00030
00032 typedef short int16;
00034 typedef unsigned short uint16;
00035
00036 #ifndef BEOS
00038 typedef int int32;
00040 typedef unsigned int uint32;
00041 #endif
00042
00043 #ifdef _MSC_VER
00045 typedef signed __int64 int64;
00047 typedef unsigned __int64 uint64;
00048 #else
00050 typedef signed long long int64;
00052 typedef unsigned long long uint64;
00053 #endif
00054
00055 #if !defined(LINUX)
00090
00091 #ifdef __MINGW32__
00092
00093 typedef wchar_t char16;
00094
00095 #else
00096
00097 #if _MSC_VER > 1300
00098
00099 typedef wchar_t char16;
00100
00101 #else
00102
00103 typedef unsigned short char16;
00104
00105 #endif
00106
00107 #endif
00108
00109 #else // LINUX
00110
00111 typedef unsigned int char16;
00112
00113 #endif
00114
00115 #if !WIN32NATIVE
00116 #ifdef UNICODE
00117 typedef char16 TCHAR;
00118 #ifndef _T
00119 #define _T(arg) L##arg
00120 #endif
00121 #else
00122 typedef char TCHAR;
00123 #ifndef _T
00124 #define _T(arg) arg
00125 #endif
00126 #endif
00127 #endif
00128
00131 typedef union
00132 {
00133 int8 *s8;
00134 uint8 *u8;
00135 int16 *s16;
00136 uint16 *u16;
00137 int32 *s32;
00138 uint32 *u32;
00139 int64 *s64;
00140 uint64 *u64;
00141
00142 char *c;
00143 char16 *w;
00144 float *f;
00145 double *d;
00146 #ifdef __cplusplus
00147 bool *b;
00148 #else
00149 unsigned char *b;
00150 #endif
00151 void **vp;
00152
00153 } GPointer;
00154
00155
00156
00157 #define min(a,b) (((a) < (b)) ? (a) : (b))
00158 #define max(a,b) (((a) > (b)) ? (a) : (b))
00159 #define limit(i,l,u) (((i)<(l)) ? (l) : (((i)>(u)) ? (u) : (i)))
00160 #define makelong(a, b) ((a)<<16 | (b&0xFFFF))
00161 #define loword(a) (a&0xFFFF)
00162 #define hiword(a) (a>>16)
00163 #define LgiSwap(a, b) { int n = a; a = b; b = n; }
00164
00165
00166 #define LgiSwap16(a) ( (((a) & 0xff00) >> 8) | \
00167 (((a) & 0x00ff) << 8) )
00168
00169 #define LgiSwap32(a) ( (((a) & 0xff000000) >> 24) | \
00170 (((a) & 0x00ff0000) >> 8) | \
00171 (((a) & 0x0000ff00) << 8) | \
00172 (((a) & 0x000000ff) << 24) )
00173
00174 #ifdef __GNUC__
00175 #define LgiSwap64(a) ( (((a) & 0xff00000000000000LLU) >> 56) | \
00176 (((a) & 0x00ff000000000000LLU) >> 40) | \
00177 (((a) & 0x0000ff0000000000LLU) >> 24) | \
00178 (((a) & 0x000000ff00000000LLU) >> 8) | \
00179 (((a) & 0x00000000ff000000LLU) << 8) | \
00180 (((a) & 0x0000000000ff0000LLU) << 24) | \
00181 (((a) & 0x000000000000ff00LLU) << 40) | \
00182 (((a) & 0x00000000000000ffLLU) << 56) )
00183 #else
00184 #define LgiSwap64(a) ( (((a) & 0xff00000000000000) >> 56) | \
00185 (((a) & 0x00ff000000000000) >> 40) | \
00186 (((a) & 0x0000ff0000000000) >> 24) | \
00187 (((a) & 0x000000ff00000000) >> 8) | \
00188 (((a) & 0x00000000ff000000) << 8) | \
00189 (((a) & 0x0000000000ff0000) << 24) | \
00190 (((a) & 0x000000000000ff00) << 40) | \
00191 (((a) & 0x00000000000000ff) << 56) )
00192 #endif
00193
00194
00195 #define AND &&
00196 #define OR ||
00197
00198
00199 #ifndef NULL
00200 #define NULL 0
00201 #endif
00202
00203
00204 #define ZeroObj(obj) memset(&obj, 0, sizeof(obj))
00205 #ifndef CountOf
00206 #define CountOf(array) (sizeof(array)/sizeof(array[0]))
00207 #endif
00208 #define StrEmpty(s) (s)[0] = 0
00209 #define IsStrEmpty(s) ((NOT s) OR ((s)[0] == 0))
00210
00211 #ifndef MEMORY_DEBUG
00212
00213 #define DeleteObj(obj) if (obj) { delete obj; obj = 0; }
00214 #define DeleteArray(obj) if (obj) { delete [] obj; obj = 0; }
00215
00216 #endif
00217
00218
00219 LgiFunc void _lgi_assert(bool b, char *test, char *file, int line);
00220 #define LgiAssert(b) _lgi_assert(b, #b, __FILE__, __LINE__)
00221
00222
00223 #define SetFlag(i, f) (i) |= (f)
00224 #define ClearFlag(i, f) (i) &= ~(f)
00225 #define TestFlag(i, f) (((i) & (f)) != 0)
00226
00227
00228
00231 #define LGI_OS_UNKNOWN 0
00234 #define LGI_OS_WIN9X 1
00237 #define LGI_OS_WINNT 2
00240 #define LGI_OS_BEOS 3
00243 #define LGI_OS_LINUX 4
00246 #define LGI_OS_ATHEOS 5
00249 #define LGI_OS_MAC_OS_9 6
00252 #define LGI_OS_MAC_OS_X 7
00254 #define LGI_OS_MAX 8
00255
00256
00257
00259 #define LC_BLACK LgiColour(0)
00261 #define LC_DKGREY LgiColour(1)
00263 #define LC_MIDGREY LgiColour(2)
00265 #define LC_LTGREY LgiColour(3)
00267 #define LC_WHITE LgiColour(4)
00268
00270 #define LC_SHADOW LgiColour(5)
00272 #define LC_LOW LgiColour(6)
00274 #define LC_MED LgiColour(7)
00276 #define LC_HIGH LgiColour(8)
00278 #define LC_LIGHT LgiColour(9)
00279
00281 #define LC_DIALOG LgiColour(10)
00283 #define LC_WORKSPACE LgiColour(11)
00285 #define LC_TEXT LgiColour(12)
00287 #define LC_SELECTION LgiColour(13)
00289 #define LC_SEL_TEXT LgiColour(14)
00290
00291 #define LC_ACTIVE_TITLE LgiColour(15)
00292 #define LC_ACTIVE_TITLE_TEXT LgiColour(16)
00293 #define LC_INACTIVE_TITLE LgiColour(17)
00294 #define LC_INACTIVE_TITLE_TEXT LgiColour(18)
00295
00296 #define LC_MENU_BACKGROUND LgiColour(19)
00297 #define LC_MENU_TEXT LgiColour(20)
00298
00299 #define LC_MAXIMUM 21
00300
00301
00302
00304 #define LCUR_Normal 0
00306 #define LCUR_UpArrow 1
00308 #define LCUR_Cross 2
00310 #define LCUR_Wait 3
00312 #define LCUR_Ibeam 4
00314 #define LCUR_SizeVer 5
00316 #define LCUR_SizeHor 6
00318 #define LCUR_SizeBDiag 7
00320 #define LCUR_SizeFDiag 8
00322 #define LCUR_SizeAll 9
00324 #define LCUR_Blank 10
00326 #define LCUR_SplitV 11
00328 #define LCUR_SplitH 12
00330 #define LCUR_PointingHand 13
00332 #define LCUR_Forbidden 14
00334 #define LCUR_DropCopy 15
00336 #define LCUR_DropMove 16
00337
00338
00339 #define LGI_EF_LCTRL 0x00000001
00340 #define LGI_EF_RCTRL 0x00000002
00341 #define LGI_EF_CTRL (LGI_EF_LCTRL | LGI_EF_RCTRL)
00342
00343 #define LGI_EF_LALT 0x00000004
00344 #define LGI_EF_RALT 0x00000008
00345 #define LGI_EF_ALT (LGI_EF_LALT | LGI_EF_RALT)
00346
00347 #define LGI_EF_LSHIFT 0x00000010
00348 #define LGI_EF_RSHIFT 0x00000020
00349 #define LGI_EF_SHIFT (LGI_EF_LSHIFT | LGI_EF_RSHIFT)
00350
00351 #define LGI_EF_DOWN 0x00000040
00352 #define LGI_EF_DOUBLE 0x00000080
00353 #define LGI_EF_CAPS_LOCK 0x00000100
00354 #define LGI_EF_IS_CHAR 0x00000200
00355 #define LGI_EF_IS_NOT_CHAR 0x00000400
00356 #define LGI_EF_SYSTEM 0x00000800 // Windows key/Apple key etc
00357
00358
00359 #define LGI_EF_LEFT 0x00001000
00360 #define LGI_EF_MIDDLE 0x00002000
00361 #define LGI_EF_RIGHT 0x00004000
00362
00363
00364 #define LGI_BreakableChar(c) ( \
00365 (c) == '\n' OR \
00366 (c) == ' ' OR \
00367 (c) == '\t' OR \
00368 ( (c) >= 0x3040 AND (c) <= 0x30FF ) OR \
00369 ( (c) >= 0x3300 AND (c) <= 0x9FAF ) \
00370 )
00371
00372
00373
00376 #define LGI_MET_DECOR_X 1
00379 #define LGI_MET_DECOR_Y 2
00382 #define LGI_MET_DECOR_CAPTION 3
00385 #define LGI_MET_MENU 4
00386
00389 enum LgiSystemPath
00390 {
00395 LSP_OS,
00400 LSP_OS_LIB,
00406 LSP_TEMP,
00411 LSP_COMMON_APP_DATA,
00416 LSP_USER_APP_DATA,
00421 LSP_LOCAL_APP_DATA,
00424 LSP_DESKTOP,
00427 LSP_HOME,
00430 LSP_EXE,
00432 LSP_TRASH,
00437 LSP_APP_INSTALL,
00445 LSP_APP_ROOT,
00449 LSP_USER_DOCUMENTS,
00453 LSP_USER_MUSIC,
00457 LSP_USER_VIDEO,
00458 };
00459
00460
00461 #ifdef _DEBUG
00462 #define DeclDebugArgs , char *_file, int _line
00463 #define PassDebugArgs , __FILE__, __LINE__
00464 #else
00465 #define DeclDebugArgs
00466 #define PassDebugArgs
00467 #endif
00468
00469 #define _FL __FILE__, __LINE__
00470
00471 #define CALL_MEMBER_FN(obj, memFn) ((obj).*(memFn))
00472
00473 #include "GAutoPtr.h"
00474
00475 #endif