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 int i;
00153
00154 } GPointer;
00155
00156
00157
00158 #define min(a,b) (((a) < (b)) ? (a) : (b))
00159 #define max(a,b) (((a) > (b)) ? (a) : (b))
00160 #define limit(i,l,u) (((i)<(l)) ? (l) : (((i)>(u)) ? (u) : (i)))
00161 #define makelong(a, b) ((a)<<16 | (b&0xFFFF))
00162 #define loword(a) (a&0xFFFF)
00163 #define hiword(a) (a>>16)
00164 #define LgiSwap(a, b) { int n = a; a = b; b = n; }
00165
00166
00167 #define LgiSwap16(a) ( (((a) & 0xff00) >> 8) | \
00168 (((a) & 0x00ff) << 8) )
00169
00170 #define LgiSwap32(a) ( (((a) & 0xff000000) >> 24) | \
00171 (((a) & 0x00ff0000) >> 8) | \
00172 (((a) & 0x0000ff00) << 8) | \
00173 (((a) & 0x000000ff) << 24) )
00174
00175 #ifdef __GNUC__
00176 #define LgiSwap64(a) ( (((a) & 0xff00000000000000LLU) >> 56) | \
00177 (((a) & 0x00ff000000000000LLU) >> 40) | \
00178 (((a) & 0x0000ff0000000000LLU) >> 24) | \
00179 (((a) & 0x000000ff00000000LLU) >> 8) | \
00180 (((a) & 0x00000000ff000000LLU) << 8) | \
00181 (((a) & 0x0000000000ff0000LLU) << 24) | \
00182 (((a) & 0x000000000000ff00LLU) << 40) | \
00183 (((a) & 0x00000000000000ffLLU) << 56) )
00184 #else
00185 #define LgiSwap64(a) ( (((a) & 0xff00000000000000) >> 56) | \
00186 (((a) & 0x00ff000000000000) >> 40) | \
00187 (((a) & 0x0000ff0000000000) >> 24) | \
00188 (((a) & 0x000000ff00000000) >> 8) | \
00189 (((a) & 0x00000000ff000000) << 8) | \
00190 (((a) & 0x0000000000ff0000) << 24) | \
00191 (((a) & 0x000000000000ff00) << 40) | \
00192 (((a) & 0x00000000000000ff) << 56) )
00193 #endif
00194
00195
00196 #define AND &&
00197 #define OR ||
00198
00199
00200 #ifndef NULL
00201 #define NULL 0
00202 #endif
00203
00204
00205 #define ZeroObj(obj) memset(&obj, 0, sizeof(obj))
00206 #ifndef CountOf
00207 #define CountOf(array) (sizeof(array)/sizeof(array[0]))
00208 #endif
00209 #define StrEmpty(s) (s)[0] = 0
00210 #define IsStrEmpty(s) ((NOT s) OR ((s)[0] == 0))
00211
00212 #ifndef MEMORY_DEBUG
00213
00214 #define DeleteObj(obj) if (obj) { delete obj; obj = 0; }
00215 #define DeleteArray(obj) if (obj) { delete [] obj; obj = 0; }
00216
00217 #endif
00218
00219
00220 LgiFunc void _lgi_assert(bool b, const char *test, const char *file, int line);
00221 #define LgiAssert(b) _lgi_assert(b, #b, __FILE__, __LINE__)
00222
00223
00224 #define SetFlag(i, f) (i) |= (f)
00225 #define ClearFlag(i, f) (i) &= ~(f)
00226 #define TestFlag(i, f) (((i) & (f)) != 0)
00227
00228
00229
00232 #define LGI_OS_UNKNOWN 0
00235 #define LGI_OS_WIN9X 1
00238 #define LGI_OS_WINNT 2
00241 #define LGI_OS_BEOS 3
00244 #define LGI_OS_LINUX 4
00247 #define LGI_OS_ATHEOS 5
00250 #define LGI_OS_MAC_OS_9 6
00253 #define LGI_OS_MAC_OS_X 7
00255 #define LGI_OS_MAX 8
00256
00257
00258
00260 #define LC_BLACK LgiColour(0)
00262 #define LC_DKGREY LgiColour(1)
00264 #define LC_MIDGREY LgiColour(2)
00266 #define LC_LTGREY LgiColour(3)
00268 #define LC_WHITE LgiColour(4)
00269
00271 #define LC_SHADOW LgiColour(5)
00273 #define LC_LOW LgiColour(6)
00275 #define LC_MED LgiColour(7)
00277 #define LC_HIGH LgiColour(8)
00279 #define LC_LIGHT LgiColour(9)
00280
00282 #define LC_DIALOG LgiColour(10)
00284 #define LC_WORKSPACE LgiColour(11)
00286 #define LC_TEXT LgiColour(12)
00288 #define LC_SELECTION LgiColour(13)
00290 #define LC_SEL_TEXT LgiColour(14)
00291
00292 #define LC_ACTIVE_TITLE LgiColour(15)
00293 #define LC_ACTIVE_TITLE_TEXT LgiColour(16)
00294 #define LC_INACTIVE_TITLE LgiColour(17)
00295 #define LC_INACTIVE_TITLE_TEXT LgiColour(18)
00296
00297 #define LC_MENU_BACKGROUND LgiColour(19)
00298 #define LC_MENU_TEXT LgiColour(20)
00299
00300 #define LC_MAXIMUM 21
00301
00302
00303
00305 #define LCUR_Normal 0
00307 #define LCUR_UpArrow 1
00309 #define LCUR_Cross 2
00311 #define LCUR_Wait 3
00313 #define LCUR_Ibeam 4
00315 #define LCUR_SizeVer 5
00317 #define LCUR_SizeHor 6
00319 #define LCUR_SizeBDiag 7
00321 #define LCUR_SizeFDiag 8
00323 #define LCUR_SizeAll 9
00325 #define LCUR_Blank 10
00327 #define LCUR_SplitV 11
00329 #define LCUR_SplitH 12
00331 #define LCUR_PointingHand 13
00333 #define LCUR_Forbidden 14
00335 #define LCUR_DropCopy 15
00337 #define LCUR_DropMove 16
00338
00339
00340 #define LGI_EF_LCTRL 0x00000001
00341 #define LGI_EF_RCTRL 0x00000002
00342 #define LGI_EF_CTRL (LGI_EF_LCTRL | LGI_EF_RCTRL)
00343
00344 #define LGI_EF_LALT 0x00000004
00345 #define LGI_EF_RALT 0x00000008
00346 #define LGI_EF_ALT (LGI_EF_LALT | LGI_EF_RALT)
00347
00348 #define LGI_EF_LSHIFT 0x00000010
00349 #define LGI_EF_RSHIFT 0x00000020
00350 #define LGI_EF_SHIFT (LGI_EF_LSHIFT | LGI_EF_RSHIFT)
00351
00352 #define LGI_EF_DOWN 0x00000040
00353 #define LGI_EF_DOUBLE 0x00000080
00354 #define LGI_EF_CAPS_LOCK 0x00000100
00355 #define LGI_EF_IS_CHAR 0x00000200
00356 #define LGI_EF_IS_NOT_CHAR 0x00000400
00357 #define LGI_EF_SYSTEM 0x00000800 // Windows key/Apple key etc
00358
00359
00360 #define LGI_EF_LEFT 0x00001000
00361 #define LGI_EF_MIDDLE 0x00002000
00362 #define LGI_EF_RIGHT 0x00004000
00363
00364
00365 #define LGI_BreakableChar(c) ( \
00366 (c) == '\n' OR \
00367 (c) == ' ' OR \
00368 (c) == '\t' OR \
00369 ( (c) >= 0x3040 AND (c) <= 0x30FF ) OR \
00370 ( (c) >= 0x3300 AND (c) <= 0x9FAF ) \
00371 )
00372
00373
00374
00377 #define LGI_MET_DECOR_X 1
00380 #define LGI_MET_DECOR_Y 2
00383 #define LGI_MET_DECOR_CAPTION 3
00386 #define LGI_MET_MENU 4
00387
00390 enum LgiSystemPath
00391 {
00396 LSP_OS,
00401 LSP_OS_LIB,
00407 LSP_TEMP,
00412 LSP_COMMON_APP_DATA,
00417 LSP_USER_APP_DATA,
00422 LSP_LOCAL_APP_DATA,
00425 LSP_DESKTOP,
00428 LSP_HOME,
00431 LSP_EXE,
00433 LSP_TRASH,
00438 LSP_APP_INSTALL,
00446 LSP_APP_ROOT,
00450 LSP_USER_DOCUMENTS,
00454 LSP_USER_MUSIC,
00458 LSP_USER_VIDEO,
00459 };
00460
00461
00462 #ifdef _DEBUG
00463 #define DeclDebugArgs , char *_file, int _line
00464 #define PassDebugArgs , __FILE__, __LINE__
00465 #else
00466 #define DeclDebugArgs
00467 #define PassDebugArgs
00468 #endif
00469
00470 #define _FL __FILE__, __LINE__
00471
00472 #define CALL_MEMBER_FN(obj, memFn) ((obj).*(memFn))
00473
00474 #include "GAutoPtr.h"
00475
00476 #endif