Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / tools / perl-5.8.0 / lib / site_perl / 5.8.0 / sun4-solaris / Tk / pTk / tix.h
CommitLineData
86530b38
AT
1/*
2 * tix.h --
3 *
4 * This is the standard header file for all tix C code. It
5 * defines many macros and utility functions to make it easier to
6 * write TCL commands and TK widgets in C. No more needs to write
7 * 2000 line functions!
8 *
9 * Copyright (c) 1996, Expert Interface Technologies
10 *
11 * See the file "license.terms" for information on usage and redistribution
12 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
13 *
14 */
15#ifndef _TIX_PORT_H_
16#include "tixPort.h"
17#endif
18#ifndef _TIX
19#define _TIX
20#define _TIX_H_
21
22#ifndef TIX_VERSION
23#define TIX_VERSION "4.1"
24#endif
25#define TIX_PATCHLEVEL "4.1.0"
26#define TIX_PATCH_LEVEL TIX_PATCHLEVEL
27
28#define TIX_RELEASE "4.1.0.007"
29
30#ifndef _TK
31#include "tk.h"
32#endif
33
34
35#if defined(__WIN32__) || defined(_WIN32) || defined (__BORLAND) || defined(_Windows)
36#ifndef _WINDOWS
37#define _WINDOWS
38#endif
39#endif
40
41/*
42 * When building Tix itself, BUILD_tix should be defined by the makefile
43 * so that all EXTERN declarations get DLLEXPORT; when building apps
44 * using Tix, BUILD_tix should NOT be defined so that all EXTERN
45 * declarations get DLLIMPORT as defined in tcl.h
46 *
47 * NOTE: This ifdef MUST appear after the include of tcl.h and tk.h
48 * because the EXTERN declarations in those files need DLLIMPORT.
49 */
50#ifdef BUILD_tix
51# undef TCL_STORAGE_CLASS
52# define TCL_STORAGE_CLASS DLLEXPORT
53#endif
54
55#ifdef __cplusplus
56extern "C" {
57#endif
58
59#if (TCL_MAJOR_VERSION > 7)
60# define TCL_7_5_OR_LATER
61#else
62# if ((TCL_MAJOR_VERSION == 7) && (TCL_MINOR_VERSION >= 5))
63# define TCL_7_5_OR_LATER
64# endif
65#endif
66
67
68#if (TK_MAJOR_VERSION > 4)
69# define TK_4_1_OR_LATER
70#else
71# if ((TK_MAJOR_VERSION == 4) && (TK_MINOR_VERSION >= 1))
72# define TK_4_1_OR_LATER
73# endif
74#endif /* TK_MAJOR_VERSION ... */
75
76#if (TK_MAJOR_VERSION >= 8)
77# define TK_8_0_OR_LATER
78#endif
79
80#ifdef TK_4_1_OR_LATER
81 /* TK 4.1 or later */
82# define Tix_FreeProc Tcl_FreeProc
83
84#else
85 /* TK 4.0 */
86# define Tix_FreeProc Tk_FreeProc
87
88 /* These portable features were not defined in previous versions of
89 * TK but are used in Tix. Let's define them here.
90 */
91# define TkPutImage(a, b, c, d, e, f, g, h, i, j, k, l) \
92 XPutImage(c, d, e, f, g, h, i, j, k, l)
93
94# define TkStringToKeysym XStringToKeysym
95
96#endif /* TK_4_1_OR_LATER */
97
98
99#define TIX_STDIN_ALWAYS 0
100#define TIX_STDIN_OPTIONAL 1
101#define TIX_STDIN_NONE 2
102
103typedef struct {
104 char *name; /* Name of command. */
105 int (*cmdProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp,
106 int argc, Tcl_Obj **objv));
107 /* Command procedure. */
108} Tix_TclCmd;
109
110
111/*----------------------------------------------------------------------
112 *
113 *
114 * SUB-COMMAND HANDLING
115 *
116 *
117 *----------------------------------------------------------------------
118 */
119typedef int (*Tix_CmdProc) _ANSI_ARGS_((ClientData clientData,
120 Tcl_Interp *interp, int argc, Tcl_Obj **objv));
121typedef int (*Tix_SubCmdProc) _ANSI_ARGS_((ClientData clientData,
122 Tcl_Interp *interp, int argc, Tcl_Obj **objv));
123typedef int (*Tix_CheckArgvProc) _ANSI_ARGS_((ClientData clientData,
124 Tcl_Interp *interp, int argc, Tcl_Obj **objv));
125
126typedef struct _Tix_CmdInfo {
127 int numSubCmds;
128 int minargc;
129 int maxargc;
130 char * info;
131} Tix_CmdInfo;
132
133typedef struct _Tix_SubCmdInfo {
134 int namelen;
135 char * name;
136 int minargc;
137 int maxargc;
138 Tix_SubCmdProc proc;
139 char * info;
140 Tix_CheckArgvProc checkArgvProc;
141} Tix_SubCmdInfo;
142
143/*
144 * Tix_ArraySize --
145 *
146 * Find out the number of elements inside a C array. The argument "x"
147 * must be a valid C array. Pointers don't work.
148 */
149#define Tix_ArraySize(x) (sizeof(x) / sizeof(x[0]))
150
151/*
152 * This is used for Tix_CmdInfo.maxargc and Tix_SubCmdInfo.maxargc,
153 * indicating that this command takes a variable number of arguments.
154 */
155#define TIX_VAR_ARGS -1
156
157/*
158 * TIX_DEFAULT_LEN --
159 *
160 * Use this for Tix_SubCmdInfo.namelen and Tix_ExecSubCmds() will try to
161 * determine the length of the subcommand name for you.
162 */
163#define TIX_DEFAULT_LEN -1
164
165/*
166 * TIX_DEFAULT_SUB_CMD --
167 *
168 * Use this for Tix_SubCmdInfo.name. This will match any subcommand name,
169 * including the empty string, when Tix_ExecSubCmds() finds a subcommand
170 * to execute.
171 */
172#define TIX_DEFAULT_SUBCMD 0
173
174/*
175 * TIX_DECLARE_CMD --
176 *
177 * This is just a handy macro to declare a C function to use as a
178 * command function.
179 */
180#define TIX_DECLARE_CMD(func) \
181 int func _ANSI_ARGS_((ClientData clientData,\
182 Tcl_Interp *interp, int argc, Tcl_Obj **objv))
183
184/*
185 * TIX_DECLARE_SUBCMD --
186 *
187 * This is just a handy macro to declare a C function to use as a
188 * sub command function.
189 */
190#define TIX_DECLARE_SUBCMD(func) \
191 int func _ANSI_ARGS_((ClientData clientData,\
192 Tcl_Interp *interp, int argc, Tcl_Obj **objv))
193
194/*
195 * TIX_DEFINE_CMD --
196 *
197 * This is just a handy macro to define a C function to use as a
198 * command function.
199 */
200#define TIX_DEFINE_CMD(func) \
201int func(clientData, interp, argc, objv) \
202 ClientData clientData; /* Main window associated with \
203 * interpreter. */ \
204 Tcl_Interp *interp; /* Current interpreter. */ \
205 int argc; /* Number of arguments. */ \
206 Tcl_Obj **objv; /* Argument strings. */
207
208
209/*----------------------------------------------------------------------
210 * Link-list functions --
211 *
212 * These functions makes it easy to use link lists in C code.
213 *
214 *----------------------------------------------------------------------
215 */
216typedef struct Tix_ListInfo {
217 int nextOffset; /* offset of the "next" pointer in a list
218 * item */
219 int prevOffset; /* offset of the "next" pointer in a list
220 * item */
221} Tix_ListInfo;
222
223
224/* Singly-linked list */
225typedef struct Tix_LinkList {
226 int numItems; /* number of items in this list */
227 char * head; /* (general pointer) head of the list */
228 char * tail; /* (general pointer) tail of the list */
229} Tix_LinkList;
230
231typedef struct Tix_ListIterator {
232 char * last;
233 char * curr;
234 unsigned int started : 1; /* True if the search operation has
235 * already started for this list */
236 unsigned int deleted : 1; /* True if a delete operation has been
237 * performed on the current item (in this
238 * case the curr pointer has already been
239 * adjusted
240 */
241} Tix_ListIterator;
242
243#define Tix_IsLinkListEmpty(list) ((list.numItems) == 0)
244#define TIX_UNIQUE 1
245#define TIX_UNDEFINED -1
246
247/*----------------------------------------------------------------------
248 * General Single Link List --
249 *
250 * The next pointer can be anywhere inside a link.
251 *----------------------------------------------------------------------
252 */
253
254EXTERN void Tix_LinkListInit _ANSI_ARGS_((Tix_LinkList * lPtr));
255EXTERN void Tix_LinkListAppend _ANSI_ARGS_((Tix_ListInfo * infoPtr,
256 Tix_LinkList * lPtr, char * itemPtr, int flags));
257EXTERN void Tix_LinkListStart _ANSI_ARGS_((Tix_ListInfo * infoPtr,
258 Tix_LinkList * lPtr, Tix_ListIterator * liPtr));
259EXTERN void Tix_LinkListNext _ANSI_ARGS_((Tix_ListInfo * infoPtr,
260 Tix_LinkList * lPtr, Tix_ListIterator * liPtr));
261EXTERN void Tix_LinkListDelete _ANSI_ARGS_((Tix_ListInfo * infoPtr,
262 Tix_LinkList * lPtr, Tix_ListIterator * liPtr));
263EXTERN int Tix_LinkListDeleteRange _ANSI_ARGS_((
264 Tix_ListInfo * infoPtr, Tix_LinkList * lPtr,
265 char * fromPtr, char * toPtr,
266 Tix_ListIterator * liPtr));
267EXTERN int Tix_LinkListFind _ANSI_ARGS_((
268 Tix_ListInfo * infoPtr, Tix_LinkList * lPtr,
269 char * itemPtr, Tix_ListIterator * liPtr));
270EXTERN int Tix_LinkListFindAndDelete _ANSI_ARGS_((
271 Tix_ListInfo * infoPtr, Tix_LinkList * lPtr,
272 char * itemPtr, Tix_ListIterator * liPtr));
273EXTERN void Tix_LinkListInsert _ANSI_ARGS_((
274 Tix_ListInfo * infoPtr,
275 Tix_LinkList * lPtr, char * itemPtr,
276 Tix_ListIterator * liPtr));
277EXTERN void Tix_LinkListIteratorInit _ANSI_ARGS_(( Tix_ListIterator * liPtr));
278
279#define Tix_LinkListDone(liPtr) ((liPtr)->curr == NULL)
280
281
282/*----------------------------------------------------------------------
283 * Simple Single Link List --
284 *
285 * The next pointer is always offset 0 in the link structure.
286 *----------------------------------------------------------------------
287 */
288
289EXTERN void Tix_SimpleListInit _ANSI_ARGS_((Tix_LinkList * lPtr));
290EXTERN void Tix_SimpleListAppend _ANSI_ARGS_((
291 Tix_LinkList * lPtr, char * itemPtr, int flags));
292EXTERN void Tix_SimpleListStart _ANSI_ARGS_((
293 Tix_LinkList * lPtr, Tix_ListIterator * liPtr));
294EXTERN void Tix_SimpleListNext _ANSI_ARGS_((
295 Tix_LinkList * lPtr, Tix_ListIterator * liPtr));
296EXTERN void Tix_SimpleListDelete _ANSI_ARGS_((
297 Tix_LinkList * lPtr, Tix_ListIterator * liPtr));
298EXTERN int Tix_SimpleListDeleteRange _ANSI_ARGS_((
299 Tix_LinkList * lPtr,
300 char * fromPtr, char * toPtr,
301 Tix_ListIterator * liPtr));
302EXTERN int Tix_SimpleListFind _ANSI_ARGS_((
303 Tix_LinkList * lPtr,
304 char * itemPtr, Tix_ListIterator * liPtr));
305EXTERN int Tix_SimpleListFindAndDelete _ANSI_ARGS_((
306 Tix_LinkList * lPtr, char * itemPtr,
307 Tix_ListIterator * liPtr));
308EXTERN void Tix_SimpleListInsert _ANSI_ARGS_((
309 Tix_LinkList * lPtr, char * itemPtr,
310 Tix_ListIterator * liPtr));
311EXTERN void Tix_SimpleListIteratorInit _ANSI_ARGS_((
312 Tix_ListIterator * liPtr));
313
314#define Tix_SimpleListDone(liPtr) ((liPtr)->curr == NULL)
315
316/*----------------------------------------------------------------------
317 *
318 *
319 *
320 * CUSTOM CONFIG OPTIONS
321 *
322 *
323 *----------------------------------------------------------------------
324 */
325#define TIX_RELIEF_RAISED 1
326#define TIX_RELIEF_FLAT 2
327#define TIX_RELIEF_SUNKEN 4
328#define TIX_RELIEF_GROOVE 8
329#define TIX_RELIEF_RIDGE 16
330#define TIX_RELIEF_SOLID 32
331
332typedef int Tix_Relief;
333
334EXTERN Tk_CustomOption tixConfigItemType;
335EXTERN Tk_CustomOption tixConfigItemStyle;
336EXTERN Tk_CustomOption tixConfigRelief;
337
338
339/*
340 * C functions exported by Tix
341 */
342
343EXTERN int Tix_ArgcError _ANSI_ARGS_((Tcl_Interp *interp,
344 int argc, Tcl_Obj **objv, int prefixCount,
345 char *message));
346EXTERN void Tix_CreateCommands _ANSI_ARGS_((
347 Tcl_Interp *interp, Tix_TclCmd *commands,
348 ClientData clientData,
349 Tcl_CmdDeleteProc *deleteProc));
350EXTERN Tk_Window Tix_CreateSubWindow _ANSI_ARGS_((
351 Tcl_Interp * interp, Tk_Window tkwin,
352 char * subPath));
353EXTERN int Tix_DefinePixmap _ANSI_ARGS_((
354 Tcl_Interp * interp, Tk_Uid name, char **data));
355EXTERN void Tix_DrawAnchorLines _ANSI_ARGS_((
356 Display *display, Drawable drawable,
357 GC gc, int x, int y, int w, int h));
358EXTERN int Tix_EvalArgv _ANSI_ARGS_((
359 Tcl_Interp * interp, int argc, Tcl_Obj **objv));
360EXTERN int Tix_ExistMethod _ANSI_ARGS_((Tcl_Interp *interp,
361 char *context, char *method));
362EXTERN void Tix_Exit _ANSI_ARGS_((Tcl_Interp * interp, int code));
363EXTERN Pixmap Tix_GetRenderBuffer _ANSI_ARGS_((Display *display,
364 Drawable d, int width, int height, int depth));
365
366#ifdef TCL_VARARGS
367/*
368 * The TCL_VARARGS macro is only defined in Tcl 7.5 or later
369 */
370EXTERN int Tix_GlobalVarEval _ANSI_ARGS_(
371 TCL_VARARGS(Tcl_Interp *,interp));
372#else
373EXTERN int Tix_GlobalVarEval _ANSI_ARGS_(
374 VARARGS(Tcl_Interp *interp));
375#endif
376
377EXTERN int Tix_HandleSubCmds _ANSI_ARGS_((
378 Tix_CmdInfo * cmdInfo,
379 Tix_SubCmdInfo * subCmdInfo,
380 ClientData clientData, Tcl_Interp *interp,
381 int argc, Tcl_Obj **objv));
382EXTERN int Tix_Init _ANSI_ARGS_((Tcl_Interp *interp));
383
384EXTERN int Tix_LoadTclLibrary _ANSI_ARGS_((
385 Tcl_Interp *interp, char *envName,
386 char *tclName, char *initFile,
387 char *defDir, char * appName));
388EXTERN void Tix_OpenStdin _ANSI_ARGS_((Tcl_Interp *interp));
389EXTERN void Tix_SetArgv _ANSI_ARGS_((Tcl_Interp *interp,
390 int argc, Tcl_Obj **objv));
391EXTERN void Tix_SetRcFileName _ANSI_ARGS_((
392 Tcl_Interp * interp, char * rcFileName));
393EXTERN char * TixGetStringFromObj _ANSI_ARGS_((
394 char *objPtr,int *lengthPtr));
395
396/*
397 * Entry points for Tk_CONFIG_CUSTOM stubs to call
398 */
399
400EXTERN int TixDItemParseProc _ANSI_ARGS_((ClientData clientData,
401 Tcl_Interp *interp, Tk_Window tkwin, Arg value,
402 char *widRec, int offset));
403
404EXTERN Arg TixDItemPrintProc _ANSI_ARGS_((
405 ClientData clientData, Tk_Window tkwin, char *widRec,
406 int offset, Tcl_FreeProc **freeProcPtr));
407
408EXTERN int TixDItemStyleParseProc _ANSI_ARGS_((ClientData clientData,
409 Tcl_Interp *interp, Tk_Window tkwin, Arg value,
410 char *widRec, int offset));
411
412EXTERN Arg TixDItemStylePrintProc _ANSI_ARGS_((
413 ClientData clientData, Tk_Window tkwin, char *widRec,
414 int offset, Tcl_FreeProc **freeProcPtr));
415
416
417/*
418 * Commands exported by Tix
419 *
420 */
421
422extern TIX_DECLARE_CMD(Tix_CallMethodCmd);
423extern TIX_DECLARE_CMD(Tix_ChainMethodCmd);
424extern TIX_DECLARE_CMD(Tix_ClassCmd);
425extern TIX_DECLARE_CMD(Tix_DoWhenIdleCmd);
426extern TIX_DECLARE_CMD(Tix_DoWhenMappedCmd);
427extern TIX_DECLARE_CMD(Tix_FalseCmd);
428extern TIX_DECLARE_CMD(Tix_FileCmd);
429extern TIX_DECLARE_CMD(Tix_FlushXCmd);
430extern TIX_DECLARE_CMD(Tix_FormCmd);
431extern TIX_DECLARE_CMD(Tix_GridCmd);
432extern TIX_DECLARE_CMD(Tix_GeometryRequestCmd);
433extern TIX_DECLARE_CMD(Tix_Get3DBorderCmd);
434extern TIX_DECLARE_CMD(Tix_GetBooleanCmd);
435extern TIX_DECLARE_CMD(Tix_GetIntCmd);
436extern TIX_DECLARE_CMD(Tix_GetMethodCmd);
437extern TIX_DECLARE_CMD(Tix_HListCmd);
438extern TIX_DECLARE_CMD(Tix_HandleOptionsCmd);
439extern TIX_DECLARE_CMD(Tix_InputOnlyCmd);
440extern TIX_DECLARE_CMD(Tix_ItemStyleCmd);
441extern TIX_DECLARE_CMD(Tix_ManageGeometryCmd);
442extern TIX_DECLARE_CMD(Tix_MapWindowCmd);
443extern TIX_DECLARE_CMD(Tix_MoveResizeWindowCmd);
444extern TIX_DECLARE_CMD(Tix_NoteBookFrameCmd);
445extern TIX_DECLARE_CMD(Tix_RaiseWindowCmd);
446extern TIX_DECLARE_CMD(Tix_ShellInputCmd);
447extern TIX_DECLARE_CMD(Tix_StringSubCmd);
448extern TIX_DECLARE_CMD(Tix_StrEqCmd);
449extern TIX_DECLARE_CMD(Tix_TListCmd);
450extern TIX_DECLARE_CMD(Tix_TmpLineCmd);
451extern TIX_DECLARE_CMD(Tix_TrueCmd);
452extern TIX_DECLARE_CMD(Tix_UnmapWindowCmd);
453extern TIX_DECLARE_CMD(Tix_MwmCmd);
454extern TIX_DECLARE_CMD(Tix_CreateWidgetCmd);
455
456#define SET_RECORD(interp, record, var, value) \
457 Tcl_SetVar2(interp, record, var, value, TCL_GLOBAL_ONLY)
458
459#define GET_RECORD(interp, record, var) \
460 Tcl_GetVar2(interp, record, var, TCL_GLOBAL_ONLY)
461
462
463#define TIX_HASHKEY(k) ((sizeof(k)>sizeof(int))?((char*)&(k)):((char*)(k)))
464
465/*----------------------------------------------------------------------
466 * Compatibility section
467 *---------------------------------------------------------------------- */
468
469#undef strdup
470#define strdup DoNotUse_strdup
471EXTERN char * tixStrDup _ANSI_ARGS_((CONST char * s));
472
473#ifdef _WINDOWS
474/* This is the way win/tkWinPort.h in tk8.0.5 defines it */
475#define strcasecmp stricmp
476#endif
477
478
479#ifdef __cplusplus
480}
481#endif
482
483#endif /* _TIX */