Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members

fxdefs.h
1 /********************************************************************************
2 * *
3 * FOX Definitions, Types, and Macros *
4 * *
5 *********************************************************************************
6 * Copyright (C) 1997,2024 by Jeroen van der Zijp. All Rights Reserved. *
7 *********************************************************************************
8 * This library is free software; you can redistribute it and/or modify *
9 * it under the terms of the GNU Lesser General Public License as published by *
10 * the Free Software Foundation; either version 3 of the License, or *
11 * (at your option) any later version. *
12 * *
13 * This library is distributed in the hope that it will be useful, *
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
16 * GNU Lesser General Public License for more details. *
17 * *
18 * You should have received a copy of the GNU Lesser General Public License *
19 * along with this program. If not, see <http://www.gnu.org/licenses/> *
20 ********************************************************************************/
21 #ifndef FXDEFS_H
22 #define FXDEFS_H
23 
24 
25 
26 /******************************** Definitions ********************************/
27 
28 // Placement new
29 #include <new>
30 
31 
32 // Path separator
33 #ifdef WIN32
34 #define PATHSEP '\\'
35 #define PATHSEPSTRING "\\"
36 #define PATHLISTSEP ';'
37 #define PATHLISTSEPSTRING ";"
38 #define ISPATHSEP(c) ((c)=='\\' || (c)=='/')
39 #else
40 #define PATHSEP '/'
41 #define PATHSEPSTRING "/"
42 #define PATHLISTSEP ':'
43 #define PATHLISTSEPSTRING ":"
44 #define ISPATHSEP(c) ((c)=='/')
45 #endif
46 
47 
48 // End Of Line
49 #ifdef WIN32
50 #define ENDLINE "\r\n"
51 #else
52 #define ENDLINE "\n"
53 #endif
54 
55 
56 // Byte order
57 #if !defined(FOX_BIGENDIAN)
58 #if defined(__GNUC__)
59 #if defined(__BYTE_ORDER__)
60 #if (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
61 #define FOX_BIGENDIAN 0
62 #else
63 #define FOX_BIGENDIAN 1
64 #endif
65 #else
66 #error "FOX_BIGENDIAN macro not set"
67 #endif
68 #elif defined(_MSC_VER)
69 #define FOX_BIGENDIAN 0
70 #else
71 #error "FOX_BIGENDIAN macro not set"
72 #endif
73 #endif
74 
75 
76 // Shared library support
77 #ifdef WIN32
78 #if defined(__GNUC__)
79 #define FXLOCAL
80 #define FXEXPORT __attribute__ ((dllexport))
81 #define FXIMPORT __attribute__ ((dllimport))
82 #else
83 #define FXLOCAL
84 #define FXEXPORT __declspec(dllexport)
85 #define FXIMPORT __declspec(dllimport)
86 #endif
87 #else
88 #if defined(__GNUC__) && (__GNUC__ >= 4)
89 #define FXLOCAL __attribute__((visibility("hidden")))
90 #define FXEXPORT __attribute__((visibility("default")))
91 #define FXIMPORT __attribute__((visibility("default")))
92 #else
93 #define FXLOCAL
94 #define FXEXPORT
95 #define FXIMPORT
96 #endif
97 #endif
98 
99 
100 // Define FXAPI for DLL builds
101 #ifdef FOXDLL
102 #ifdef FOXDLL_EXPORTS
103 #define FXAPI FXEXPORT
104 #define FXTEMPLATE_EXTERN
105 #else
106 #define FXAPI FXIMPORT
107 #define FXTEMPLATE_EXTERN extern
108 #endif
109 #else
110 #define FXAPI
111 #define FXTEMPLATE_EXTERN
112 #endif
113 
114 
115 // Data alignment attribute
116 #if defined(__GNUC__)
117 #define __align(x) __attribute__((aligned(x)))
118 #elif defined(_MSC_VER)
119 #define __align(x) __declspec(align(x))
120 #else
121 #define __align(x)
122 #endif
123 
124 // Get alignment of pointer p to b=2^n bytes, returning 0..b-1
125 #define __alignment(p,b) (((FXival)(p))&((b)-1))
126 
127 // Check if pointer p is aligned to b=2^n bytes
128 #define __isaligned(p,b) (__alignment(p,b)==0)
129 
130 // Align pointer to b=2^n bytes
131 #define __alignto(p,b) ((void*)((((FXival)(p))+((FXival)((b)-1)))&~((FXival)((b)-1))))
132 
133 
134 // Thread-local storage attribute
135 #if defined(__GNUC__)
136 #define __threadlocal __thread
137 #elif defined(_MSC_VER)
138 #define __threadlocal __declspec(thread)
139 #else
140 #define __threadlocal
141 #endif
142 
143 // Non-returning function
144 #if defined(__GNUC__)
145 #define __noreturn __attribute__((__noreturn__))
146 #elif (_MSC_VER >= 1400)
147 #define __noreturn __declspec(noreturn)
148 #else
149 #define __noreturn
150 #endif
151 
152 // Branch prediction optimization
153 #if (__GNUC__ >= 3)
154 #define __likely(cond) __builtin_expect(!!(cond),1)
155 #define __unlikely(cond) __builtin_expect(!!(cond),0)
156 #else
157 #define __likely(cond) (!!(cond))
158 #define __unlikely(cond) (!!(cond))
159 #endif
160 
161 // An assumption that compiler may use to optimize
162 #if (__GNUC__ >= 13)
163 #define __assume(expr) __attribute__((__assume__(expr)))
164 #elif (__clang__ >= 14)
165 #define __assume(expr) __builtin_assume(expr)
166 #elif !defined(_MSC_VER)
167 #define __assume(expr)
168 #endif
169 
170 // An unreachable part of code may be optimized away
171 #if (__GNUC__ >= 4)
172 #define __unreachable() __builtin_unreachable()
173 #elif defined(_MSC_VER)
174 #define __unreachable() __assume(false)
175 #else
176 #define __unreachable()
177 #endif
178 
179 // Define parameters not-aliased hint
180 #if defined(__GNUC__)
181 #define __restrict __restrict__
182 #elif !defined(_MSC_VER)
183 #define __restrict
184 #endif
185 
186 // Prefetch address
187 #if (__GNUC__ >= 4) && (defined(__i386__) || defined(__x86_64__))
188 #define __prefetch(addr) __builtin_prefetch((addr),0)
189 #define __prefetchw(addr) __builtin_prefetch((addr),1)
190 #else
191 #define __prefetch(addr)
192 #define __prefetchw(addr)
193 #endif
194 
195 // Standard call calling sequence
196 #ifdef WIN32
197 #ifndef CALLBACK
198 #define CALLBACK __stdcall
199 #endif
200 #endif
201 
202 // C Language calling sequence
203 #ifdef WIN32
204 #ifndef CDECL
205 #define CDECL __cdecl
206 #endif
207 #else
208 #ifndef CDECL
209 #define CDECL
210 #endif
211 #endif
212 
213 // Checking printf and scanf format strings
214 #if defined(_CC_GNU_) || defined(__GNUG__) || defined(__GNUC__)
215 #define FX_PRINTF(fmt,arg) __attribute__((format(printf,fmt,arg)))
216 #define FX_SCANF(fmt,arg) __attribute__((format(scanf,fmt,arg)))
217 #define FX_FORMAT(arg) __attribute__((format_arg(arg)))
218 #else
219 #define FX_PRINTF(fmt,arg)
220 #define FX_SCANF(fmt,arg)
221 #define FX_FORMAT(arg)
222 #endif
223 
224 // Word size issues
225 #if defined(_MSC_VER) || defined(__MINGW32__) // Windows
226 #if defined(_WIN64)
227 #define LLP64 1 // Long longs and pointers are 64 bit
228 #else
229 #define ILP32 1 // Ints, longs, and pointers are 32 bit
230 #endif
231 #elif defined(__LP64__) || defined(_LP64) || (_MIPS_SZLONG == 64) || (__WORDSIZE == 64)
232 #define LP64 1 // Longs and pointers are 64 bit
233 #else
234 #define ILP32 1 // Longs, integers, and pointers are 32 bit
235 #endif
236 
237 // Suffixes for 64-bit constants
238 #if defined(LP64)
239 #define FXLONG(c) c ## L // Long suffix for 64 bit
240 #define FXULONG(c) c ## UL
241 #elif defined(_MSC_VER) && (_MSC_VER < 1900)
242 #define FXLONG(c) c ## i64 // Special suffix for 64 bit
243 #define FXULONG(c) c ## ui64
244 #else
245 #define FXLONG(c) c ## LL // Long long suffix for 64 bit
246 #define FXULONG(c) c ## ULL
247 #endif
248 
249 
250 // Raw event type
251 #ifdef WIN32
252 struct tagMSG;
253 #else
254 union _XEvent;
255 #endif
256 
257 
258 namespace FX {
259 
260 
261 /********************************* Typedefs **********************************/
262 
263 // Forward declarations
264 class FXObject;
265 class FXStream;
266 class FXString;
267 
268 
269 // Streamable types; these are fixed size!
270 typedef char FXchar;
271 typedef signed char FXschar;
272 typedef unsigned char FXuchar;
273 typedef bool FXbool;
274 typedef unsigned short FXushort;
275 typedef short FXshort;
276 typedef unsigned int FXuint;
277 typedef int FXint;
278 typedef float FXfloat;
279 typedef double FXdouble;
280 #if defined(WIN32)
281 typedef unsigned int FXwchar;
282 #if defined(_MSC_VER) && !defined(_NATIVE_WCHAR_T_DEFINED)
283 typedef unsigned short FXnchar;
284 #elif defined(__WATCOMC__) && !defined(_WCHAR_T_DEFINED)
285 typedef long char FXnchar;
286 #else
287 typedef wchar_t FXnchar;
288 #endif
289 #else
290 typedef wchar_t FXwchar;
291 typedef unsigned short FXnchar;
292 #endif
293 #if defined(LP64)
294 typedef long FXlong;
295 typedef unsigned long FXulong;
296 #elif defined(_MSC_VER) && (_MSC_VER < 1900)
297 typedef __int64 FXlong;
298 typedef unsigned __int64 FXulong;
299 #else
300 typedef long long FXlong;
301 typedef unsigned long long FXulong;
302 #endif
303 
304 // Integral types large enough to hold value of a pointer
305 #if defined(LP64) || defined(ILP32) // Long for LP64 and ILP32 models
306 typedef long FXival;
307 typedef unsigned long FXuval;
308 #elif defined(LLP64) // Long long for LLP64 models
309 #if defined(_MSC_VER) && (_MSC_VER < 1900)
310 typedef __int64 FXival;
311 typedef unsigned __int64 FXuval;
312 #else
313 typedef long long FXival;
314 typedef unsigned long long FXuval;
315 #endif
316 #endif
317 
318 // Generic void pointer
319 typedef void* FXptr;
320 
321 
322 // Handle to something in server
323 #ifdef WIN32
324 typedef void* FXID;
325 #else
326 typedef unsigned long FXID;
327 #endif
328 
329 // Time since January 1, 1970 (UTC)
330 typedef FXlong FXTime;
331 
332 // Pixel type (could be color index)
333 typedef unsigned long FXPixel;
334 
335 // RGBA pixel value
336 typedef FXuint FXColor;
337 
338 // Hot key
339 typedef FXuint FXHotKey;
340 
341 // Input source handle type
342 #ifdef WIN32
343 typedef void* FXInputHandle;
344 #else
345 typedef FXint FXInputHandle;
346 #endif
347 
348 // Process handle
349 #if defined(WIN32)
350 typedef void* FXProcessID;
351 #else
352 typedef int FXProcessID;
353 #endif
354 
355 // Thread ID type
356 #if defined(WIN32)
357 typedef void* FXThreadID;
358 #else
359 typedef unsigned long FXThreadID;
360 #endif
361 
362 // Thread-local storage key
363 typedef FXuval FXThreadStorageKey;
364 
365 // Raw event type
366 #ifdef WIN32
367 typedef tagMSG FXRawEvent;
368 #else
369 typedef _XEvent FXRawEvent;
370 #endif
371 
372 
373 // Drag and drop data type
374 #ifdef WIN32
375 typedef FXushort FXDragType;
376 #else
377 typedef FXID FXDragType;
378 #endif
379 
380 
381 // Third logic state: unknown/indeterminate
382 enum { maybe=2 };
383 
384 // A time in the far, far future
385 const FXTime forever=FXLONG(9223372036854775807);
386 
387 // Search modes for search/replace dialogs
388 enum {
389  SEARCH_BACKWARD = 1,
390  SEARCH_FORWARD = 2,
391  SEARCH_NOWRAP = 0,
392  SEARCH_WRAP = 4,
393  SEARCH_EXACT = 0,
394  SEARCH_IGNORECASE = 8,
395  SEARCH_REGEX = 16,
396  SEARCH_PREFIX = 32,
397  SEARCH_SUFFIX = 64,
398  SEARCH_WORDS = 128
399  };
400 
401 /********************************** Macros ***********************************/
402 
404 #define FXBIT(val,b) (((val)>>(b))&1)
405 
407 #define FXABS(val) (((val)>=0)?(val):-(val))
408 
410 #define FXSGN(val) (((val)<0)?-1:1)
411 
413 #define FXSGNZ(val) ((val)<0?-1:(val)>0?1:0)
414 
416 #define FXSGNX(x,b) (((FXint)((x)<<(32-(b))))>>(32-(b)))
417 
419 #define FXMAX(a,b) (((a)>(b))?(a):(b))
420 
422 #define FXMIN(a,b) (((a)>(b))?(b):(a))
423 
425 #define FXMIN3(x,y,z) ((x)<(y)?FXMIN(x,z):FXMIN(y,z))
426 
428 #define FXMAX3(x,y,z) ((x)>(y)?FXMAX(x,z):FXMAX(y,z))
429 
431 #define FXMIN4(x,y,z,w) (FXMIN(FXMIN(x,y),FXMIN(z,w)))
432 
434 #define FXMAX4(x,y,z,w) (FXMAX(FXMAX(x,y),FXMAX(z,w)))
435 
437 #define FXMINMAX(lo,hi,a,b) ((a)<(b)?((lo)=(a),(hi)=(b)):((lo)=(b),(hi)=(a)))
438 
440 #define FXCLAMP(lo,x,hi) ((x)<(lo)?(lo):((x)>(hi)?(hi):(x)))
441 
443 #define FXSWAP(a,b,t) ((t)=(a),(a)=(b),(b)=(t))
444 
446 #define FXLERP(a,b,f) ((a)+((b)-(a))*(f))
447 
449 #define STRUCTOFFSET(str,member) (((char *)(&(((str *)0)->member)))-((char *)0))
450 
452 #define ARRAYNUMBER(array) (sizeof(array)/sizeof(array[0]))
453 
455 #define CONTAINER(ptr,str,mem) ((str*)(((char*)(ptr))-STRUCTOFFSET(str,mem)))
456 
458 #define MKUINT(l,h) ((((FX::FXuint)(l))&0xffff) | (((FX::FXuint)(h))<<16))
459 
461 #define FXSEL(type,id) ((((FX::FXuint)(id))&0xffff) | (((FX::FXuint)(type))<<16))
462 
464 #define FXSELTYPE(s) ((FX::FXushort)(((s)>>16)&0xffff))
465 
467 #define FXSELID(s) ((FX::FXushort)((s)&0xffff))
468 
470 #define FXAVGCOLOR(ca,cb) (((ca)&(cb))+((((ca)^(cb))&0xFEFEFEFE)>>1))
471 
472 
473 // Definitions for big-endian machines
474 #if FOX_BIGENDIAN == 1
475 
477 #define FXRGBA(r,g,b,a) (((FX::FXuint)(FX::FXuchar)(a)) | ((FX::FXuint)(FX::FXuchar)(r)<<8) | ((FX::FXuint)(FX::FXuchar)(g)<<16) | ((FX::FXuint)(FX::FXuchar)(b)<<24))
478 
480 #define FXRGB(r,g,b) (((FX::FXuint)(FX::FXuchar)(r)<<8) | ((FX::FXuint)(FX::FXuchar)(g)<<16) | ((FX::FXuint)(FX::FXuchar)(b)<<24) | 0x000000ff)
481 
483 #define FXREDVAL(rgba) ((FX::FXuchar)(((rgba)>>8)&0xff))
484 
486 #define FXGREENVAL(rgba) ((FX::FXuchar)(((rgba)>>16)&0xff))
487 
489 #define FXBLUEVAL(rgba) ((FX::FXuchar)(((rgba)>>24)&0xff))
490 
492 #define FXALPHAVAL(rgba) ((FX::FXuchar)((rgba)&0xff))
493 
495 #define FXRGBACOMPVAL(rgba,comp) ((FX::FXuchar)(((rgba)>>((comp)<<3))&0xff))
496 
498 #define FXCOLORREF2RGB(ref) (FX::FXuint)((((ref)<<8)&0xff000000) | (((ref)<<8)&0xff0000) | (((ref)<<8)&0xff00) | 0x000000ff)
499 
501 #define FXRGB2COLORREF(rgb) (FX::FXuint)((((rgb)>>8)&0xff0000) | (((rgb)>>8)&0xff00) | (((rgb)>>8)&0xff))
502 
503 #endif
504 
505 
506 // Definitions for little-endian machines
507 #if FOX_BIGENDIAN == 0
508 
510 #define FXRGBA(r,g,b,a) (((FX::FXuint)(FX::FXuchar)(a)<<24) | ((FX::FXuint)(FX::FXuchar)(r)<<16) | ((FX::FXuint)(FX::FXuchar)(g)<<8) | ((FX::FXuint)(FX::FXuchar)(b)))
511 
513 #define FXRGB(r,g,b) (((FX::FXuint)(FX::FXuchar)(r)<<16) | ((FX::FXuint)(FX::FXuchar)(g)<<8) | ((FX::FXuint)(FX::FXuchar)(b)) | 0xff000000)
514 
516 #define FXREDVAL(rgba) ((FX::FXuchar)(((rgba)>>16)&0xff))
517 
519 #define FXGREENVAL(rgba) ((FX::FXuchar)(((rgba)>>8)&0xff))
520 
522 #define FXBLUEVAL(rgba) ((FX::FXuchar)((rgba)&0xff))
523 
525 #define FXALPHAVAL(rgba) ((FX::FXuchar)(((rgba)>>24)&0xff))
526 
528 #define FXRGBACOMPVAL(rgba,comp) ((FX::FXuchar)(((rgba)>>((3-(comp))<<3))&0xff))
529 
531 #define FXCOLORREF2RGB(ref) (FX::FXuint)((((ref)>>16)&0xff) | ((ref)&0xff00) | (((ref)<<16)&0xff0000) | 0xff000000)
532 
534 #define FXRGB2COLORREF(rgb) (FX::FXuint)((((rgb)<<16)&0xff0000) | ((rgb)&0xff00) | (((rgb)>>16)&0xff))
535 
536 #endif
537 
545 #ifndef NDEBUG
546 #define FXASSERT(exp) (__likely(exp)?((void)0):(void)FX::fxassert(#exp,__FILE__,__LINE__))
547 #else
548 #define FXASSERT(exp) ((void)0)
549 #endif
550 
551 
559 #ifndef NDEBUG
560 #define FXVERIFY(exp) (__likely(exp)?((void)0):(void)FX::fxverify(#exp,__FILE__,__LINE__))
561 #else
562 #define FXVERIFY(exp) ((void)(exp))
563 #endif
564 
565 
572 #if (defined(__cplusplus) && (__cplusplus >= 201103L)) || (defined(_MSC_VER) && (_MSC_VER >= 1600))
573 #define FXASSERT_STATIC(expr) static_assert(expr,#expr)
574 #else
575 #define FXASSERT_STATIC(expr) FXASSERT(expr)
576 #endif
577 
578 
594 #ifndef NDEBUG
595 #define FXTRACE(arguments) FX::fxtrace arguments
596 #else
597 #define FXTRACE(arguments) ((void)0)
598 #endif
599 
606 #define FXMALLOC(ptr,type,no) (FX::fxmalloc((void **)(ptr),sizeof(type)*(no)))
607 
614 #define FXCALLOC(ptr,type,no) (FX::fxcalloc((void **)(ptr),sizeof(type)*(no)))
615 
625 #define FXRESIZE(ptr,type,no) (FX::fxresize((void **)(ptr),sizeof(type)*(no)))
626 
634 #define FXMEMDUP(ptr,src,type,no) (FX::fxmemdup((void **)(ptr),(const void*)(src),sizeof(type)*(no)))
635 
642 #define FXFREE(ptr) (FX::fxfree((void **)(ptr)))
643 
644 /********************************** Globals **********************************/
645 
647 template <typename to_type>
648 static inline to_type* alias_cast(void* ptr){
649  union UNI { to_type dst[1]; };
650  return reinterpret_cast<UNI*>(ptr)->dst;
651  }
652 
654 template <typename to_type>
655 static inline const to_type* alias_cast(const void* ptr){
656  union UNI { to_type dst[1]; };
657  return reinterpret_cast<const UNI*>(ptr)->dst;
658  }
659 
661 extern FXAPI FXbool fxmalloc(void** ptr,FXuval size);
662 
664 extern FXAPI FXbool fxcalloc(void** ptr,FXuval size);
665 
667 extern FXAPI FXbool fxresize(void** ptr,FXuval size);
668 
670 extern FXAPI void fxfree(void** ptr);
671 
673 extern FXAPI FXbool fxmemdup(void** ptr,const void* src,FXuval size);
674 
676 extern FXAPI __noreturn void fxerror(const FXchar* format,...) FX_PRINTF(1,2) ;
677 
679 extern FXAPI void fxwarning(const FXchar* format,...) FX_PRINTF(1,2) ;
680 
682 extern FXAPI void fxmessage(const FXchar* format,...) FX_PRINTF(1,2) ;
683 
685 extern FXAPI void fxassert(const FXchar* expression,const FXchar* filename,unsigned int lineno);
686 
688 extern FXAPI void fxverify(const FXchar* expression,const FXchar* filename,unsigned int lineno);
689 
691 extern FXAPI void fxtrace(FXuint level,const FXchar* format,...) FX_PRINTF(2,3) ;
692 
694 extern FXAPI FXbool fxtoDOS(FXchar*& string,FXint& len);
695 
697 extern FXAPI FXbool fxfromDOS(FXchar*& string,FXint& len);
698 
700 extern FXAPI FXchar *fxstrdup(const FXchar* str);
701 
703 extern FXAPI FXuint fxstrhash(const FXchar* str);
704 
706 extern FXAPI FXival fxstrlcpy(FXchar* dst,const FXchar* src,FXival len);
707 
709 extern FXAPI FXival fxstrlcat(FXchar* dst,const FXchar* src,FXival len);
710 
712 extern FXAPI void fxrgb_to_hsv(FXfloat& h,FXfloat& s,FXfloat& v,FXfloat r,FXfloat g,FXfloat b);
713 
715 extern FXAPI void fxhsv_to_rgb(FXfloat& r,FXfloat& g,FXfloat& b,FXfloat h,FXfloat s,FXfloat v);
716 
718 extern FXAPI void fxrgb_to_hsl(FXfloat& h,FXfloat& s,FXfloat& l,FXfloat r,FXfloat g,FXfloat b);
719 
721 extern FXAPI void fxhsl_to_rgb(FXfloat& r,FXfloat& g,FXfloat& b,FXfloat h,FXfloat s,FXfloat l);
722 
724 extern FXchar* fxencode64(FXchar* dst,FXchar* dstend,const FXchar* src,const FXchar* srcend);
725 
727 extern FXchar* fxdecode64(FXchar* dst,FXchar* dstend,const FXchar* src,const FXchar* srcend);
728 
730 extern FXchar* fxencode85(FXchar* dst,FXchar* dstend,const FXchar* src,const FXchar* srcend);
731 
733 extern FXchar* fxdecode85(FXchar* dst,FXchar* dstend,const FXchar* src,const FXchar* srcend);
734 
736 extern FXAPI FXwchar fxkeysym2ucs(FXwchar sym);
737 
739 extern FXAPI FXwchar fxucs2keysym(FXwchar ucs);
740 
742 extern FXAPI FXint fxparsegeometry(const FXchar *string,FXint& x,FXint& y,FXint& w,FXint& h);
743 
745 extern FXAPI FXbool fxisconsole(const FXchar *path);
746 
748 extern FXAPI const FXuchar fxversion[3];
749 
751 extern FXAPI FXbool getTraceTopic(FXuint topic);
752 
754 extern FXAPI void setTraceTopic(FXuint topic,FXbool flag=true);
755 
757 extern FXAPI void setTraceLevel(FXuint level,FXbool flag=true);
758 
769 extern FXAPI FXbool setTraceTopics(const FXchar* topics,FXbool flag=true);
770 
772 extern FXAPI FXival fxosversion(FXchar version[],FXival len);
773 
774 
775 }
776 
777 #endif
Definition: FX4Splitter.h:28

Copyright © 1997-2022 Jeroen van der Zijp