#ifndef _XtinitialI_h
#define _XtinitialI_h
#ifndef X_NOT_POSIX
#ifdef _POSIX_SOURCE
#include <limits.h>
#else
#define _POSIX_SOURCE
#include <limits.h>
#undef _POSIX_SOURCE
#endif
#endif
#ifndef PATH_MAX
#ifdef WIN32
#define PATH_MAX 512
#else
#include <sys/param.h>
#endif
#ifndef PATH_MAX
#ifdef MAXPATHLEN
#define PATH_MAX MAXPATHLEN
#else
#define PATH_MAX 1024
#endif
#endif
#endif
#include <X11/Xos.h>
#include <X11/Xpoll.h>
typedef struct _TimerEventRec {
struct timeval te_timer_value;
struct _TimerEventRec *te_next;
XtTimerCallbackProc te_proc;
XtAppContext app;
XtPointer te_closure;
} TimerEventRec;
typedef struct _InputEvent {
XtInputCallbackProc ie_proc;
XtPointer ie_closure;
struct _InputEvent *ie_next;
struct _InputEvent *ie_oq;
XtAppContext app;
int ie_source;
XtInputMask ie_condition;
} InputEvent;
typedef struct _SignalEventRec {
XtSignalCallbackProc se_proc;
XtPointer se_closure;
struct _SignalEventRec *se_next;
XtAppContext app;
Boolean se_notice;
} SignalEventRec;
typedef struct _WorkProcRec {
XtWorkProc proc;
XtPointer closure;
struct _WorkProcRec *next;
XtAppContext app;
} WorkProcRec;
typedef struct
{
#ifndef USE_POLL
fd_set rmask;
fd_set wmask;
fd_set emask;
#endif
int nfds;
} FdStruct;
typedef struct _LangProcRec {
XtLanguageProc proc;
XtPointer closure;
} LangProcRec;
typedef struct _ProcessContextRec {
XtAppContext defaultAppContext;
XtAppContext appContextList;
ConverterTable globalConverterTable;
LangProcRec globalLangProcRec;
} ProcessContextRec, *ProcessContext;
typedef struct {
char* start;
char* current;
int bytes_remaining;
} Heap;
typedef struct _DestroyRec DestroyRec;
typedef struct _XtAppStruct {
XtAppContext next;
ProcessContext process;
InternalCallbackList destroy_callbacks;
Display **list;
TimerEventRec *timerQueue;
WorkProcRec *workQueue;
InputEvent **input_list;
InputEvent *outstandingQueue;
SignalEventRec *signalQueue;
XrmDatabase errorDB;
XtErrorMsgHandler errorMsgHandler, warningMsgHandler;
XtErrorHandler errorHandler, warningHandler;
struct _ActionListRec *action_table;
ConverterTable converterTable;
unsigned long selectionTimeout;
FdStruct fds;
short count;
short max;
short last;
short input_count;
short input_max;
Boolean sync, being_destroyed, error_inited;
#ifndef NO_IDENTIFY_WINDOWS
Boolean identify_windows;
#endif
Heap heap;
String * fallback_resources;
struct _ActionHookRec* action_hook_list;
struct _BlockHookRec* block_hook_list;
int destroy_list_size;
int destroy_count;
int dispatch_level;
DestroyRec* destroy_list;
Widget in_phase2_destroy;
LangProcRec langProcRec;
struct _TMBindCacheRec * free_bindings;
String display_name_tried;
Display **dpy_destroy_list;
int dpy_destroy_count;
Boolean exit_flag;
Boolean rebuild_fdlist;
#ifdef XTHREADS
LockPtr lock_info;
ThreadAppProc lock;
ThreadAppProc unlock;
ThreadAppYieldLockProc yield_lock;
ThreadAppRestoreLockProc restore_lock;
ThreadAppProc free_lock;
#endif
} XtAppStruct;
extern void _XtHeapInit(Heap* heap);
extern void _XtHeapFree(Heap* heap);
#ifdef XTTRACEMEMORY
extern char *_XtHeapMalloc(
Heap* ,
Cardinal ,
char * ,
int
);
#define _XtHeapAlloc(heap,bytes) _XtHeapMalloc(heap, bytes, __FILE__, __LINE__)
#else
extern char* _XtHeapAlloc(
Heap* ,
Cardinal
);
#endif
extern void _XtSetDefaultErrorHandlers(
XtErrorMsgHandler* ,
XtErrorMsgHandler* ,
XtErrorHandler* ,
XtErrorHandler*
);
extern void _XtSetDefaultSelectionTimeout(
unsigned long*
);
extern XtAppContext _XtDefaultAppContext(
void
);
extern ProcessContext _XtGetProcessContext(
void
);
Display *
_XtAppInit(
XtAppContext* ,
String ,
XrmOptionDescRec* ,
Cardinal ,
int* ,
String** ,
String*
);
extern void _XtDestroyAppContexts(
void
);
extern void _XtCloseDisplays(
XtAppContext
);
extern int _XtAppDestroyCount;
extern int _XtWaitForSomething(
XtAppContext ,
_XtBoolean ,
_XtBoolean ,
_XtBoolean ,
_XtBoolean ,
_XtBoolean ,
#ifdef XTHREADS
_XtBoolean ,
#endif
unsigned long*
);
typedef struct _CaseConverterRec *CaseConverterPtr;
typedef struct _CaseConverterRec {
KeySym start;
KeySym stop;
XtCaseProc proc;
CaseConverterPtr next;
} CaseConverterRec;
typedef struct _ExtensionSelectorRec {
XtExtensionSelectProc proc;
int min, max;
XtPointer client_data;
} ExtSelectRec;
typedef struct _XtPerDisplayStruct {
InternalCallbackList destroy_callbacks;
Region region;
CaseConverterPtr case_cvt;
XtKeyProc defaultKeycodeTranslator;
XtAppContext appContext;
unsigned long keysyms_serial;
KeySym *keysyms;
int keysyms_per_keycode;
int min_keycode, max_keycode;
KeySym *modKeysyms;
ModToKeysymTable *modsToKeysyms;
unsigned char isModifier[32];
KeySym lock_meaning;
Modifiers mode_switch;
Modifiers num_lock;
Boolean being_destroyed;
Boolean rv;
XrmName name;
XrmClass class;
Heap heap;
struct _GCrec *GClist;
Drawable **pixmap_tab;
String language;
XEvent last_event;
Time last_timestamp;
int multi_click_time;
struct _TMKeyContextRec* tm_context;
InternalCallbackList mapping_callbacks;
XtPerDisplayInputRec pdi;
struct _WWTable *WWtable;
XrmDatabase *per_screen_db;
XrmDatabase cmd_db;
XrmDatabase server_db;
XtEventDispatchProc* dispatcher_list;
ExtSelectRec* ext_select_list;
int ext_select_count;
Widget hook_object;
#ifndef X_NO_RESOURCE_CONFIGURATION_MANAGEMENT
Atom rcm_init;
Atom rcm_data;
#endif
} XtPerDisplayStruct, *XtPerDisplay;
typedef struct _PerDisplayTable {
Display *dpy;
XtPerDisplayStruct perDpy;
struct _PerDisplayTable *next;
} PerDisplayTable, *PerDisplayTablePtr;
extern PerDisplayTablePtr _XtperDisplayList;
extern XtPerDisplay _XtSortPerDisplayList(
Display*
);
extern XtPerDisplay _XtGetPerDisplay(
Display*
);
extern XtPerDisplayInputRec* _XtGetPerDisplayInput(
Display*
);
#if 0
#ifdef DEBUG
#define _XtGetPerDisplay(display) \
((_XtperDisplayList != NULL && (_XtperDisplayList->dpy == (display))) \
? &_XtperDisplayList->perDpy \
: _XtSortPerDisplayList(display))
#define _XtGetPerDisplayInput(display) \
((_XtperDisplayList != NULL && (_XtperDisplayList->dpy == (display))) \
? &_XtperDisplayList->perDpy.pdi \
: &_XtSortPerDisplayList(display)->pdi)
#else
#define _XtGetPerDisplay(display) \
((_XtperDisplayList->dpy == (display)) \
? &_XtperDisplayList->perDpy \
: _XtSortPerDisplayList(display))
#define _XtGetPerDisplayInput(display) \
((_XtperDisplayList->dpy == (display)) \
? &_XtperDisplayList->perDpy.pdi \
: &_XtSortPerDisplayList(display)->pdi)
#endif
#endif
extern void _XtDisplayInitialize(
Display* ,
XtPerDisplay ,
_Xconst char* ,
XrmOptionDescRec* ,
Cardinal ,
int* ,
char**
);
extern void _XtCacheFlushTag(
XtAppContext ,
XtPointer
);
extern void _XtFreeActions(
struct _ActionListRec*
);
extern void _XtDoPhase2Destroy(
XtAppContext ,
int
);
extern void _XtDoFreeBindings(
XtAppContext
);
extern void _XtExtensionSelect(
Widget
);
#define _XtSafeToDestroy(app) ((app)->dispatch_level == 0)
extern void _XtAllocWWTable(
XtPerDisplay pd
);
extern void _XtFreeWWTable(
XtPerDisplay pd
);
extern String _XtGetUserName(String dest, int len);
extern XrmDatabase _XtPreparseCommandLine(XrmOptionDescRec *urlist,
Cardinal num_urs, int argc, String *argv,
String *applName, String *displayName,
String *language);
#endif