00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef _TCLINT
00018 #define _TCLINT
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #include <stdio.h>
00031
00032 #ifndef _TCL
00033 #include "tcl.h"
00034 #endif
00035
00036 #include <ctype.h>
00037 #ifdef NO_LIMITS_H
00038 # include "../compat/limits.h"
00039 #else
00040 # include <limits.h>
00041 #endif
00042 #ifdef NO_STDLIB_H
00043 # include "../compat/stdlib.h"
00044 #else
00045 # include <stdlib.h>
00046 #endif
00047 #ifdef NO_STRING_H
00048 #include "../compat/string.h"
00049 #else
00050 #include <string.h>
00051 #endif
00052
00053 #undef TCL_STORAGE_CLASS
00054 #ifdef BUILD_tcl
00055 # define TCL_STORAGE_CLASS DLLEXPORT
00056 #else
00057 # ifdef USE_TCL_STUBS
00058 # define TCL_STORAGE_CLASS
00059 # else
00060 # define TCL_STORAGE_CLASS DLLIMPORT
00061 # endif
00062 #endif
00063
00064
00065
00066
00067
00068
00069
00070 struct Tcl_ResolvedVarInfo;
00071
00072 typedef Tcl_Var (Tcl_ResolveRuntimeVarProc) _ANSI_ARGS_((
00073 Tcl_Interp* interp, struct Tcl_ResolvedVarInfo *vinfoPtr));
00074
00075 typedef void (Tcl_ResolveVarDeleteProc) _ANSI_ARGS_((
00076 struct Tcl_ResolvedVarInfo *vinfoPtr));
00077
00078
00079
00080
00081
00082
00083
00084
00085 typedef struct Tcl_ResolvedVarInfo {
00086 Tcl_ResolveRuntimeVarProc *fetchProc;
00087 Tcl_ResolveVarDeleteProc *deleteProc;
00088 } Tcl_ResolvedVarInfo;
00089
00090
00091
00092 typedef int (Tcl_ResolveCompiledVarProc) _ANSI_ARGS_((
00093 Tcl_Interp* interp, char* name, int length,
00094 Tcl_Namespace *context, Tcl_ResolvedVarInfo **rPtr));
00095
00096 typedef int (Tcl_ResolveVarProc) _ANSI_ARGS_((
00097 Tcl_Interp* interp, char* name, Tcl_Namespace *context,
00098 int flags, Tcl_Var *rPtr));
00099
00100 typedef int (Tcl_ResolveCmdProc) _ANSI_ARGS_((Tcl_Interp* interp,
00101 char* name, Tcl_Namespace *context, int flags,
00102 Tcl_Command *rPtr));
00103
00104 typedef struct Tcl_ResolverInfo {
00105 Tcl_ResolveCmdProc *cmdResProc;
00106
00107 Tcl_ResolveVarProc *varResProc;
00108
00109
00110 Tcl_ResolveCompiledVarProc *compiledVarResProc;
00111
00112
00113 } Tcl_ResolverInfo;
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128 typedef struct Namespace {
00129 char *name;
00130
00131
00132
00133 char *fullName;
00134
00135 ClientData clientData;
00136
00137 Tcl_NamespaceDeleteProc *deleteProc;
00138
00139
00140 struct Namespace *parentPtr;
00141
00142
00143 Tcl_HashTable childTable;
00144
00145
00146 long nsId;
00147 Tcl_Interp *interp;
00148
00149 int flags;
00150
00151
00152 int activationCount;
00153
00154
00155
00156
00157 int refCount;
00158
00159
00160 Tcl_HashTable cmdTable;
00161
00162
00163
00164
00165
00166
00167
00168 Tcl_HashTable varTable;
00169
00170
00171 char **exportArrayPtr;
00172
00173
00174
00175
00176
00177
00178 int numExportPatterns;
00179
00180 int maxExportPatterns;
00181
00182 int cmdRefEpoch;
00183
00184
00185
00186
00187 int resolverEpoch;
00188
00189
00190
00191
00192 Tcl_ResolveCmdProc *cmdResProc;
00193
00194
00195
00196
00197
00198 Tcl_ResolveVarProc *varResProc;
00199
00200
00201
00202
00203
00204
00205 Tcl_ResolveCompiledVarProc *compiledVarResProc;
00206
00207
00208
00209
00210
00211
00212 } Namespace;
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230
00231
00232
00233 #define NS_DYING 0x01
00234 #define NS_DEAD 0x02
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245 #define CREATE_NS_IF_UNKNOWN 0x800
00246
00247
00248
00249
00250
00251
00252
00253
00254
00255
00256
00257
00258
00259
00260 typedef struct VarTrace {
00261 Tcl_VarTraceProc *traceProc;
00262
00263 ClientData clientData;
00264 int flags;
00265
00266
00267
00268 struct VarTrace *nextPtr;
00269
00270 } VarTrace;
00271
00272
00273
00274
00275
00276
00277
00278
00279
00280 typedef struct ActiveVarTrace {
00281 struct Var *varPtr;
00282 struct ActiveVarTrace *nextPtr;
00283
00284
00285
00286 VarTrace *nextTracePtr;
00287
00288
00289
00290 } ActiveVarTrace;
00291
00292
00293
00294
00295
00296
00297
00298 typedef struct ArraySearch {
00299 int id;
00300
00301
00302 struct Var *varPtr;
00303
00304 Tcl_HashSearch search;
00305
00306 Tcl_HashEntry *nextEntry;
00307
00308
00309
00310
00311
00312 struct ArraySearch *nextPtr;
00313
00314
00315 } ArraySearch;
00316
00317
00318
00319
00320
00321
00322
00323
00324
00325
00326 typedef struct Var {
00327 union {
00328 Tcl_Obj *objPtr;
00329
00330 Tcl_HashTable *tablePtr;
00331
00332
00333
00334 struct Var *linkPtr;
00335
00336
00337
00338 } value;
00339 char *name;
00340
00341
00342
00343
00344
00345
00346 Namespace *nsPtr;
00347
00348
00349 Tcl_HashEntry *hPtr;
00350
00351
00352
00353
00354
00355
00356
00357
00358
00359 int refCount;
00360
00361
00362
00363
00364
00365
00366
00367 VarTrace *tracePtr;
00368
00369 ArraySearch *searchPtr;
00370
00371 int flags;
00372
00373 } Var;
00374
00375
00376
00377
00378
00379
00380
00381
00382
00383
00384
00385
00386
00387
00388
00389
00390
00391
00392
00393
00394
00395
00396
00397
00398
00399
00400
00401
00402
00403
00404
00405
00406
00407
00408
00409
00410
00411
00412
00413
00414
00415
00416
00417
00418
00419
00420
00421
00422
00423
00424
00425
00426
00427
00428
00429
00430
00431
00432
00433
00434
00435 #define VAR_SCALAR 0x1
00436 #define VAR_ARRAY 0x2
00437 #define VAR_LINK 0x4
00438 #define VAR_UNDEFINED 0x8
00439 #define VAR_IN_HASHTABLE 0x10
00440 #define VAR_TRACE_ACTIVE 0x20
00441 #define VAR_ARRAY_ELEMENT 0x40
00442 #define VAR_NAMESPACE_VAR 0x80
00443
00444 #define VAR_ARGUMENT 0x100
00445 #define VAR_TEMPORARY 0x200
00446 #define VAR_RESOLVED 0x400
00447
00448
00449
00450
00451
00452
00453
00454
00455
00456
00457
00458
00459
00460 #define TclSetVarScalar(varPtr) \
00461 (varPtr)->flags = ((varPtr)->flags & ~(VAR_ARRAY|VAR_LINK)) | VAR_SCALAR
00462
00463 #define TclSetVarArray(varPtr) \
00464 (varPtr)->flags = ((varPtr)->flags & ~(VAR_SCALAR|VAR_LINK)) | VAR_ARRAY
00465
00466 #define TclSetVarLink(varPtr) \
00467 (varPtr)->flags = ((varPtr)->flags & ~(VAR_SCALAR|VAR_ARRAY)) | VAR_LINK
00468
00469 #define TclSetVarArrayElement(varPtr) \
00470 (varPtr)->flags = ((varPtr)->flags & ~VAR_ARRAY) | VAR_ARRAY_ELEMENT
00471
00472 #define TclSetVarUndefined(varPtr) \
00473 (varPtr)->flags |= VAR_UNDEFINED
00474
00475 #define TclClearVarUndefined(varPtr) \
00476 (varPtr)->flags &= ~VAR_UNDEFINED
00477
00478
00479
00480
00481
00482
00483
00484
00485
00486
00487
00488
00489
00490
00491
00492 #define TclIsVarScalar(varPtr) \
00493 ((varPtr)->flags & VAR_SCALAR)
00494
00495 #define TclIsVarLink(varPtr) \
00496 ((varPtr)->flags & VAR_LINK)
00497
00498 #define TclIsVarArray(varPtr) \
00499 ((varPtr)->flags & VAR_ARRAY)
00500
00501 #define TclIsVarUndefined(varPtr) \
00502 ((varPtr)->flags & VAR_UNDEFINED)
00503
00504 #define TclIsVarArrayElement(varPtr) \
00505 ((varPtr)->flags & VAR_ARRAY_ELEMENT)
00506
00507 #define TclIsVarTemporary(varPtr) \
00508 ((varPtr)->flags & VAR_TEMPORARY)
00509
00510 #define TclIsVarArgument(varPtr) \
00511 ((varPtr)->flags & VAR_ARGUMENT)
00512
00513 #define TclIsVarResolved(varPtr) \
00514 ((varPtr)->flags & VAR_RESOLVED)
00515
00516
00517
00518
00519
00520
00521
00522
00523
00524
00525
00526
00527
00528 struct Command;
00529
00530
00531
00532
00533
00534
00535
00536
00537
00538
00539
00540
00541
00542
00543 typedef struct CompiledLocal {
00544 struct CompiledLocal *nextPtr;
00545
00546
00547
00548 int nameLength;
00549
00550
00551 int frameIndex;
00552
00553 int flags;
00554
00555
00556
00557
00558 Tcl_Obj *defValuePtr;
00559
00560
00561 Tcl_ResolvedVarInfo *resolveInfo;
00562
00563
00564
00565
00566
00567
00568 char name[4];
00569
00570
00571
00572
00573 } CompiledLocal;
00574
00575
00576
00577
00578
00579
00580
00581 typedef struct Proc {
00582 struct Interp *iPtr;
00583
00584 int refCount;
00585
00586
00587
00588
00589 struct Command *cmdPtr;
00590
00591
00592
00593 Tcl_Obj *bodyPtr;
00594
00595 int numArgs;
00596 int numCompiledLocals;
00597
00598
00599 CompiledLocal *firstLocalPtr;
00600
00601
00602
00603
00604 CompiledLocal *lastLocalPtr;
00605
00606
00607 } Proc;
00608
00609
00610
00611
00612
00613
00614 typedef struct Trace {
00615 int level;
00616
00617 Tcl_CmdTraceProc *proc;
00618 ClientData clientData;
00619 struct Trace *nextPtr;
00620 } Trace;
00621
00622
00623
00624
00625
00626
00627
00628
00629 typedef struct AssocData {
00630 Tcl_InterpDeleteProc *proc;
00631 ClientData clientData;
00632 } AssocData;
00633
00634
00635
00636
00637
00638
00639
00640
00641
00642
00643
00644
00645
00646
00647
00648 typedef struct CallFrame {
00649 Namespace *nsPtr;
00650
00651 int isProcCallFrame;
00652
00653
00654
00655
00656
00657
00658 int objc;
00659
00660 Tcl_Obj *CONST *objv;
00661 struct CallFrame *callerPtr;
00662
00663
00664
00665 struct CallFrame *callerVarPtr;
00666
00667
00668
00669
00670
00671
00672 int level;
00673
00674
00675
00676 Proc *procPtr;
00677
00678
00679
00680
00681
00682 Tcl_HashTable *varTablePtr;
00683
00684
00685
00686 int numCompiledLocals;
00687
00688 Var* compiledLocals;
00689
00690
00691
00692 } CallFrame;
00693
00694
00695
00696
00697
00698
00699
00700
00701
00702 typedef VOID **TclHandle;
00703
00704 EXTERN TclHandle TclHandleCreate _ANSI_ARGS_((VOID *ptr));
00705 EXTERN void TclHandleFree _ANSI_ARGS_((TclHandle handle));
00706 EXTERN TclHandle TclHandlePreserve _ANSI_ARGS_((TclHandle handle));
00707 EXTERN void TclHandleRelease _ANSI_ARGS_((TclHandle handle));
00708
00709
00710
00711
00712
00713
00714
00715
00716
00717
00718
00719
00720
00721 typedef struct {
00722 char *command;
00723
00724 int bytesAvl;
00725
00726 } HistoryEvent;
00727
00728
00729
00730
00731
00732
00733
00734
00735 typedef struct HistoryRev {
00736 int firstIndex;
00737
00738 int lastIndex;
00739
00740 int newSize;
00741 char *newBytes;
00742
00743 struct HistoryRev *nextPtr;
00744
00745 } HistoryRev;
00746
00747
00748
00749
00750
00751
00752
00753
00754
00755
00756
00757
00758
00759 #define MAX_MATH_ARGS 5
00760 typedef struct MathFunc {
00761 int builtinFuncIndex;
00762
00763
00764
00765
00766
00767
00768 int numArgs;
00769 Tcl_ValueType argTypes[MAX_MATH_ARGS];
00770
00771 Tcl_MathProc *proc;
00772
00773 ClientData clientData;
00774
00775
00776 } MathFunc;
00777
00778
00779
00780
00781
00782
00783
00784 EXTERN VOID *TclThreadDataKeyGet _ANSI_ARGS_((Tcl_ThreadDataKey *keyPtr));
00785 EXTERN void TclThreadDataKeySet _ANSI_ARGS_((Tcl_ThreadDataKey *keyPtr, VOID *data));
00786
00787
00788
00789
00790 #define TCL_TSD_INIT(keyPtr) (ThreadSpecificData *)Tcl_GetThreadData((keyPtr), sizeof(ThreadSpecificData))
00791
00792
00793
00794
00795
00796
00797
00798
00799
00800
00801
00802
00803
00804
00805
00806
00807 struct CompileEnv;
00808
00809
00810
00811
00812
00813
00814
00815
00816
00817
00818
00819
00820
00821
00822
00823
00824
00825
00826 #define TCL_OUT_LINE_COMPILE (TCL_CONTINUE + 1)
00827
00828 typedef int (CompileProc) _ANSI_ARGS_((Tcl_Interp *interp,
00829 Tcl_Parse *parsePtr, struct CompileEnv *compEnvPtr));
00830
00831
00832
00833
00834
00835
00836 typedef int (CompileHookProc) _ANSI_ARGS_((Tcl_Interp *interp,
00837 struct CompileEnv *compEnvPtr, ClientData clientData));
00838
00839
00840
00841
00842
00843
00844
00845
00846
00847
00848
00849 typedef struct ExecEnv {
00850 Tcl_Obj **stackPtr;
00851
00852 int stackTop;
00853
00854 int stackEnd;
00855 } ExecEnv;
00856
00857
00858
00859
00860
00861
00862
00863
00864
00865
00866
00867
00868
00869
00870
00871
00872
00873 typedef struct LiteralEntry {
00874 struct LiteralEntry *nextPtr;
00875
00876
00877 Tcl_Obj *objPtr;
00878
00879
00880 int refCount;
00881
00882
00883
00884
00885
00886
00887 } LiteralEntry;
00888
00889 typedef struct LiteralTable {
00890 LiteralEntry **buckets;
00891
00892
00893 LiteralEntry *staticBuckets[TCL_SMALL_HASH_TABLE];
00894
00895
00896
00897 int numBuckets;
00898
00899 int numEntries;
00900
00901 int rebuildSize;
00902
00903 int mask;
00904
00905 } LiteralTable;
00906
00907
00908
00909
00910
00911
00912
00913 #ifdef TCL_COMPILE_STATS
00914 typedef struct ByteCodeStats {
00915 long numExecutions;
00916 long numCompilations;
00917 long numByteCodesFreed;
00918 long instructionCount[256];
00919
00920
00921 double totalSrcBytes;
00922 double totalByteCodeBytes;
00923 double currentSrcBytes;
00924 double currentByteCodeBytes;
00925
00926 long srcCount[32];
00927
00928 long byteCodeCount[32];
00929 long lifetimeCount[32];
00930
00931 double currentInstBytes;
00932 double currentLitBytes;
00933 double currentExceptBytes;
00934 double currentAuxBytes;
00935 double currentCmdMapBytes;
00936
00937 long numLiteralsCreated;
00938 double totalLitStringBytes;
00939 double currentLitStringBytes;
00940 long literalCount[32];
00941 } ByteCodeStats;
00942 #endif
00943
00944
00945
00946
00947
00948
00949
00950
00951
00952
00953
00954
00955
00956
00957
00958 typedef struct ImportRef {
00959 struct Command *importedCmdPtr;
00960
00961
00962
00963
00964 struct ImportRef *nextPtr;
00965
00966
00967
00968
00969 } ImportRef;
00970
00971
00972
00973
00974
00975
00976
00977 typedef struct ImportedCmdData {
00978 struct Command *realCmdPtr;
00979
00980 struct Command *selfPtr;
00981
00982
00983
00984 } ImportedCmdData;
00985
00986
00987
00988
00989
00990
00991 typedef struct Command {
00992 Tcl_HashEntry *hPtr;
00993
00994
00995
00996
00997
00998
00999
01000
01001
01002 Namespace *nsPtr;
01003
01004 int refCount;
01005
01006
01007
01008
01009
01010 int cmdEpoch;
01011
01012
01013 CompileProc *compileProc;
01014
01015 Tcl_ObjCmdProc *objProc;
01016 ClientData objClientData;
01017 Tcl_CmdProc *proc;
01018 ClientData clientData;
01019 Tcl_CmdDeleteProc *deleteProc;
01020
01021
01022 ClientData deleteData;
01023 int deleted;
01024
01025
01026
01027 ImportRef *importRefPtr;
01028
01029
01030
01031
01032
01033
01034 } Command;
01035
01036
01037
01038
01039
01040
01041
01042
01043
01044
01045
01046
01047
01048
01049
01050
01051 typedef struct ResolverScheme {
01052 char *name;
01053 Tcl_ResolveCmdProc *cmdResProc;
01054
01055
01056 Tcl_ResolveVarProc *varResProc;
01057
01058
01059
01060 Tcl_ResolveCompiledVarProc *compiledVarResProc;
01061
01062
01063
01064 struct ResolverScheme *nextPtr;
01065
01066 } ResolverScheme;
01067
01068
01069
01070
01071
01072
01073
01074
01075
01076
01077
01078 typedef struct Interp {
01079
01080
01081
01082
01083
01084
01085
01086
01087
01088
01089
01090
01091
01092
01093
01094
01095
01096 char *result;
01097
01098
01099 Tcl_FreeProc *freeProc;
01100
01101
01102
01103
01104
01105
01106 int errorLine;
01107
01108
01109 struct TclStubs *stubTable;
01110
01111
01112
01113
01114
01115
01116
01117 TclHandle handle;
01118
01119
01120 Namespace *globalNsPtr;
01121 Tcl_HashTable *hiddenCmdTablePtr;
01122
01123
01124
01125 ClientData interpInfo;
01126
01127
01128 Tcl_HashTable mathFuncTable;
01129
01130
01131
01132
01133
01134
01135
01136
01137
01138
01139
01140 int numLevels;
01141
01142
01143
01144
01145 int maxNestingDepth;
01146
01147
01148 CallFrame *framePtr;
01149
01150
01151 CallFrame *varFramePtr;
01152
01153
01154
01155
01156 ActiveVarTrace *activeTracePtr;
01157
01158
01159 int returnCode;
01160
01161 char *errorInfo;
01162
01163 char *errorCode;
01164
01165
01166
01167
01168
01169
01170
01171 char *appendResult;
01172
01173
01174 int appendAvl;
01175
01176 int appendUsed;
01177
01178
01179
01180
01181
01182
01183 Tcl_HashTable packageTable;
01184
01185
01186
01187 char *packageUnknown;
01188
01189
01190
01191
01192
01193
01194
01195
01196 int cmdCount;
01197
01198 int evalFlags;
01199
01200
01201
01202 int termOffset;
01203
01204 LiteralTable literalTable;
01205
01206
01207
01208
01209
01210 int compileEpoch;
01211
01212
01213
01214
01215 Proc *compiledProcPtr;
01216
01217
01218
01219
01220 ResolverScheme *resolverPtr;
01221
01222
01223
01224
01225
01226 char *scriptFile;
01227
01228
01229
01230
01231 int flags;
01232 long randSeed;
01233 Trace *tracePtr;
01234 Tcl_HashTable *assocData;
01235
01236
01237 struct ExecEnv *execEnvPtr;
01238
01239
01240 Tcl_Obj *emptyObjPtr;
01241
01242
01243
01244 char resultSpace[TCL_RESULT_SIZE+1];
01245
01246 Tcl_Obj *objResultPtr;
01247
01248
01249 Tcl_ThreadId threadId;
01250
01251
01252
01253
01254
01255
01256 #ifdef TCL_COMPILE_STATS
01257 ByteCodeStats stats;
01258
01259 #endif
01260 } Interp;
01261
01262
01263
01264
01265
01266
01267
01268
01269
01270
01271
01272 #define TCL_BRACKET_TERM 1
01273 #define TCL_ALLOW_EXCEPTIONS 4
01274
01275
01276
01277
01278
01279
01280
01281
01282
01283
01284
01285
01286
01287
01288
01289
01290
01291
01292
01293
01294
01295
01296
01297
01298
01299
01300
01301
01302
01303
01304
01305
01306
01307
01308
01309
01310
01311 #define DELETED 1
01312 #define ERR_IN_PROGRESS 2
01313 #define ERR_ALREADY_LOGGED 4
01314 #define ERROR_CODE_SET 8
01315 #define EXPR_INITIALIZED 0x10
01316 #define DONT_COMPILE_CMDS_INLINE 0x20
01317 #define RAND_SEED_INITIALIZED 0x40
01318 #define SAFE_INTERP 0x80
01319 #define USE_EVAL_DIRECT 0x100
01320
01321
01322
01323
01324
01325
01326
01327
01328
01329
01330
01331
01332
01333
01334
01335
01336
01337 typedef struct ParseValue {
01338 char *buffer;
01339
01340 char *next;
01341
01342 char *end;
01343
01344 void (*expandProc) _ANSI_ARGS_((struct ParseValue *pvPtr, int needed));
01345
01346
01347 ClientData clientData;
01348
01349 } ParseValue;
01350
01351
01352
01353
01354
01355
01356
01357 #define MAX_NESTING_DEPTH 1000
01358
01359
01360
01361
01362
01363
01364
01365 #define UCHAR(c) ((unsigned char) (c))
01366
01367
01368
01369
01370
01371
01372
01373
01374
01375
01376
01377
01378
01379 #define TCL_ALIGN(x) (((int)(x) + 7) & ~7)
01380
01381
01382
01383
01384
01385
01386 typedef enum {
01387 TCL_PLATFORM_UNIX,
01388 TCL_PLATFORM_MAC,
01389 TCL_PLATFORM_WINDOWS
01390 } TclPlatformType;
01391
01392
01393
01394
01395
01396
01397
01398
01399
01400
01401
01402
01403
01404
01405
01406
01407
01408 #define TCL_INVOKE_HIDDEN (1<<0)
01409 #define TCL_INVOKE_NO_UNKNOWN (1<<1)
01410 #define TCL_INVOKE_NO_TRACEBACK (1<<2)
01411
01412
01413
01414
01415
01416
01417
01418
01419
01420
01421 typedef struct List {
01422 int maxElemCount;
01423 int elemCount;
01424 Tcl_Obj **elements;
01425 } List;
01426
01427
01428
01429
01430
01431
01432
01433
01434
01435
01436 typedef int (TclGetFileAttrProc) _ANSI_ARGS_((Tcl_Interp *interp,
01437 int objIndex, CONST char *fileName, Tcl_Obj **attrObjPtrPtr));
01438 typedef int (TclSetFileAttrProc) _ANSI_ARGS_((Tcl_Interp *interp,
01439 int objIndex, CONST char *fileName, Tcl_Obj *attrObjPtr));
01440
01441 typedef struct TclFileAttrProcs {
01442 TclGetFileAttrProc *getProc;
01443 TclSetFileAttrProc *setProc;
01444 } TclFileAttrProcs;
01445
01446
01447
01448
01449
01450
01451 typedef struct TclFile_ *TclFile;
01452
01453
01454
01455
01456
01457
01458
01459
01460 typedef int (TclStatProc_) _ANSI_ARGS_((CONST char *path, struct stat *buf));
01461 typedef int (TclAccessProc_) _ANSI_ARGS_((CONST char *path, int mode));
01462 typedef Tcl_Channel (TclOpenFileChannelProc_) _ANSI_ARGS_((Tcl_Interp *interp,
01463 char *fileName, char *modeString,
01464 int permissions));
01465
01466 typedef int (*TclCmdProcType) _ANSI_ARGS_((ClientData clientData,
01467 Tcl_Interp *interp, int argc, char *argv[]));
01468 typedef int (*TclObjCmdProcType) _ANSI_ARGS_((ClientData clientData,
01469 Tcl_Interp *interp, int objc, struct Tcl_Obj * CONST objv[]));
01470
01471
01472
01473
01474
01475 typedef struct TclpTime_t_ *TclpTime_t;
01476
01477
01478
01479
01480
01481
01482
01483
01484 typedef struct GlobTypeData {
01485
01486 int type;
01487
01488 int perm;
01489
01490 Tcl_Obj* macType;
01491
01492 Tcl_Obj* macCreator;
01493 } GlobTypeData;
01494
01495
01496
01497
01498 #define TCL_GLOB_TYPE_BLOCK (1<<0)
01499 #define TCL_GLOB_TYPE_CHAR (1<<1)
01500 #define TCL_GLOB_TYPE_DIR (1<<2)
01501 #define TCL_GLOB_TYPE_PIPE (1<<3)
01502 #define TCL_GLOB_TYPE_FILE (1<<4)
01503 #define TCL_GLOB_TYPE_LINK (1<<5)
01504 #define TCL_GLOB_TYPE_SOCK (1<<6)
01505
01506 #define TCL_GLOB_PERM_RONLY (1<<0)
01507 #define TCL_GLOB_PERM_HIDDEN (1<<1)
01508 #define TCL_GLOB_PERM_R (1<<2)
01509 #define TCL_GLOB_PERM_W (1<<3)
01510 #define TCL_GLOB_PERM_X (1<<4)
01511
01512
01513
01514
01515
01516
01517
01518 extern Tcl_Time tclBlockTime;
01519 extern int tclBlockTimeSet;
01520 extern char * tclExecutableName;
01521 extern char * tclNativeExecutableName;
01522 extern char * tclDefaultEncodingDir;
01523 extern Tcl_ChannelType tclFileChannelType;
01524 extern char * tclMemDumpFileName;
01525 extern TclPlatformType tclPlatform;
01526 extern char * tclpFileAttrStrings[];
01527 extern CONST TclFileAttrProcs tclpFileAttrProcs[];
01528
01529
01530
01531
01532
01533 extern Tcl_ObjType tclBooleanType;
01534 extern Tcl_ObjType tclByteArrayType;
01535 extern Tcl_ObjType tclByteCodeType;
01536 extern Tcl_ObjType tclDoubleType;
01537 extern Tcl_ObjType tclIntType;
01538 extern Tcl_ObjType tclListType;
01539 extern Tcl_ObjType tclProcBodyType;
01540 extern Tcl_ObjType tclStringType;
01541
01542
01543
01544
01545
01546
01547 extern Tcl_Obj * tclFreeObjList;
01548
01549 #ifdef TCL_COMPILE_STATS
01550 extern long tclObjsAlloced;
01551 extern long tclObjsFreed;
01552 #endif
01553
01554
01555
01556
01557
01558
01559
01560 extern char * tclEmptyStringRep;
01561
01562
01563
01564
01565
01566
01567
01568
01569 EXTERN int TclAccess _ANSI_ARGS_((CONST char *path,
01570 int mode));
01571 EXTERN int TclAccessDeleteProc _ANSI_ARGS_((TclAccessProc_ *proc));
01572 EXTERN int TclAccessInsertProc _ANSI_ARGS_((TclAccessProc_ *proc));
01573 EXTERN void TclAllocateFreeObjects _ANSI_ARGS_((void));
01574 EXTERN int TclArraySet _ANSI_ARGS_((Tcl_Interp *interp,
01575 Tcl_Obj *arrayNameObj, Tcl_Obj *arrayElemObj));
01576 EXTERN int TclCheckBadOctal _ANSI_ARGS_((Tcl_Interp *interp,
01577 char *value));
01578 EXTERN int TclCleanupChildren _ANSI_ARGS_((Tcl_Interp *interp,
01579 int numPids, Tcl_Pid *pidPtr,
01580 Tcl_Channel errorChan));
01581 EXTERN void TclCleanupCommand _ANSI_ARGS_((Command *cmdPtr));
01582 EXTERN int TclCopyChannel _ANSI_ARGS_((Tcl_Interp *interp,
01583 Tcl_Channel inChan, Tcl_Channel outChan,
01584 int toRead, Tcl_Obj *cmdPtr));
01585
01586
01587
01588 EXTERN int TclCreatePipeline _ANSI_ARGS_((Tcl_Interp *interp,
01589 int argc, char **argv, Tcl_Pid **pidArrayPtr,
01590 TclFile *inPipePtr, TclFile *outPipePtr,
01591 TclFile *errFilePtr));
01592 EXTERN int TclCreateProc _ANSI_ARGS_((Tcl_Interp *interp,
01593 Namespace *nsPtr, char *procName,
01594 Tcl_Obj *argsPtr, Tcl_Obj *bodyPtr,
01595 Proc **procPtrPtr));
01596 EXTERN void TclDeleteCompiledLocalVars _ANSI_ARGS_((
01597 Interp *iPtr, CallFrame *framePtr));
01598 EXTERN void TclDeleteVars _ANSI_ARGS_((Interp *iPtr,
01599 Tcl_HashTable *tablePtr));
01600 EXTERN int TclDoGlob _ANSI_ARGS_((Tcl_Interp *interp,
01601 char *separators, Tcl_DString *headPtr,
01602 char *tail, GlobTypeData *types));
01603 EXTERN void TclDumpMemoryInfo _ANSI_ARGS_((FILE *outFile));
01604 EXTERN void TclExpandTokenArray _ANSI_ARGS_((
01605 Tcl_Parse *parsePtr));
01606 EXTERN void TclExprFloatError _ANSI_ARGS_((Tcl_Interp *interp,
01607 double value));
01608 EXTERN int TclFileAttrsCmd _ANSI_ARGS_((Tcl_Interp *interp,
01609 int objc, Tcl_Obj *CONST objv[]));
01610 EXTERN int TclFileCopyCmd _ANSI_ARGS_((Tcl_Interp *interp,
01611 int argc, char **argv)) ;
01612 EXTERN int TclFileDeleteCmd _ANSI_ARGS_((Tcl_Interp *interp,
01613 int argc, char **argv));
01614 EXTERN int TclFileMakeDirsCmd _ANSI_ARGS_((Tcl_Interp *interp,
01615 int argc, char **argv)) ;
01616 EXTERN int TclFileRenameCmd _ANSI_ARGS_((Tcl_Interp *interp,
01617 int argc, char **argv)) ;
01618 EXTERN void TclFinalizeAllocSubsystem _ANSI_ARGS_((void));
01619 EXTERN void TclFinalizeCompExecEnv _ANSI_ARGS_((void));
01620 EXTERN void TclFinalizeCompilation _ANSI_ARGS_((void));
01621 EXTERN void TclFinalizeEncodingSubsystem _ANSI_ARGS_((void));
01622 EXTERN void TclFinalizeEnvironment _ANSI_ARGS_((void));
01623 EXTERN void TclFinalizeExecution _ANSI_ARGS_((void));
01624 EXTERN void TclFinalizeIOSubsystem _ANSI_ARGS_((void));
01625 EXTERN void TclFinalizeLoad _ANSI_ARGS_((void));
01626 EXTERN void TclFinalizeMemorySubsystem _ANSI_ARGS_((void));
01627 EXTERN void TclFinalizeNotifier _ANSI_ARGS_((void));
01628 EXTERN void TclFinalizeSynchronization _ANSI_ARGS_((void));
01629 EXTERN void TclFinalizeThreadData _ANSI_ARGS_((void));
01630 EXTERN void TclFindEncodings _ANSI_ARGS_((CONST char *argv0));
01631 EXTERN Proc * TclFindProc _ANSI_ARGS_((Interp *iPtr,
01632 char *procName));
01633 EXTERN int TclFormatInt _ANSI_ARGS_((char *buffer, long n));
01634 EXTERN void TclFreePackageInfo _ANSI_ARGS_((Interp *iPtr));
01635 EXTERN int TclGetDate _ANSI_ARGS_((char *p,
01636 unsigned long now, long zone,
01637 unsigned long *timePtr));
01638 EXTERN Tcl_Obj * TclGetElementOfIndexedArray _ANSI_ARGS_((
01639 Tcl_Interp *interp, int localIndex,
01640 Tcl_Obj *elemPtr, int leaveErrorMsg));
01641 EXTERN char * TclGetExtension _ANSI_ARGS_((char *name));
01642 EXTERN int TclGetFrame _ANSI_ARGS_((Tcl_Interp *interp,
01643 char *string, CallFrame **framePtrPtr));
01644 EXTERN TclCmdProcType TclGetInterpProc _ANSI_ARGS_((void));
01645 EXTERN int TclGetIntForIndex _ANSI_ARGS_((Tcl_Interp *interp,
01646 Tcl_Obj *objPtr, int endValue, int *indexPtr));
01647 EXTERN Tcl_Obj * TclGetIndexedScalar _ANSI_ARGS_((Tcl_Interp *interp,
01648 int localIndex, int leaveErrorMsg));
01649 EXTERN int TclGetLong _ANSI_ARGS_((Tcl_Interp *interp,
01650 char *string, long *longPtr));
01651 EXTERN int TclGetLoadedPackages _ANSI_ARGS_((
01652 Tcl_Interp *interp, char *targetName));
01653 EXTERN int TclGetNamespaceForQualName _ANSI_ARGS_((
01654 Tcl_Interp *interp, char *qualName,
01655 Namespace *cxtNsPtr, int flags,
01656 Namespace **nsPtrPtr, Namespace **altNsPtrPtr,
01657 Namespace **actualCxtPtrPtr,
01658 char **simpleNamePtr));
01659 EXTERN TclObjCmdProcType TclGetObjInterpProc _ANSI_ARGS_((void));
01660 EXTERN int TclGetOpenMode _ANSI_ARGS_((Tcl_Interp *interp,
01661 char *string, int *seekFlagPtr));
01662 EXTERN Tcl_Command TclGetOriginalCommand _ANSI_ARGS_((
01663 Tcl_Command command));
01664 EXTERN int TclGlob _ANSI_ARGS_((Tcl_Interp *interp,
01665 char *pattern, char *unquotedPrefix,
01666 int globFlags, GlobTypeData* types));
01667 EXTERN int TclGlobalInvoke _ANSI_ARGS_((Tcl_Interp *interp,
01668 int argc, char **argv, int flags));
01669 EXTERN int TclGuessPackageName _ANSI_ARGS_((char *fileName,
01670 Tcl_DString *bufPtr));
01671 EXTERN int TclHideUnsafeCommands _ANSI_ARGS_((
01672 Tcl_Interp *interp));
01673 EXTERN int TclInExit _ANSI_ARGS_((void));
01674 EXTERN Tcl_Obj * TclIncrElementOfIndexedArray _ANSI_ARGS_((
01675 Tcl_Interp *interp, int localIndex,
01676 Tcl_Obj *elemPtr, long incrAmount));
01677 EXTERN Tcl_Obj * TclIncrIndexedScalar _ANSI_ARGS_((
01678 Tcl_Interp *interp, int localIndex,
01679 long incrAmount));
01680 EXTERN Tcl_Obj * TclIncrVar2 _ANSI_ARGS_((Tcl_Interp *interp,
01681 Tcl_Obj *part1Ptr, Tcl_Obj *part2Ptr,
01682 long incrAmount, int flags));
01683 EXTERN void TclInitAlloc _ANSI_ARGS_((void));
01684 EXTERN void TclInitCompiledLocals _ANSI_ARGS_((
01685 Tcl_Interp *interp, CallFrame *framePtr,
01686 Namespace *nsPtr));
01687 EXTERN void TclInitDbCkalloc _ANSI_ARGS_((void));
01688 EXTERN void TclInitEncodingSubsystem _ANSI_ARGS_((void));
01689 EXTERN void TclInitIOSubsystem _ANSI_ARGS_((void));
01690 EXTERN void TclInitNamespaceSubsystem _ANSI_ARGS_((void));
01691 EXTERN void TclInitNotifier _ANSI_ARGS_((void));
01692 EXTERN void TclInitObjSubsystem _ANSI_ARGS_((void));
01693 EXTERN void TclInitSubsystems _ANSI_ARGS_((CONST char *argv0));
01694 EXTERN int TclInvoke _ANSI_ARGS_((Tcl_Interp *interp,
01695 int argc, char **argv, int flags));
01696 EXTERN int TclInvokeObjectCommand _ANSI_ARGS_((
01697 ClientData clientData, Tcl_Interp *interp,
01698 int argc, char **argv));
01699 EXTERN int TclInvokeStringCommand _ANSI_ARGS_((
01700 ClientData clientData, Tcl_Interp *interp,
01701 int objc, Tcl_Obj *CONST objv[]));
01702 EXTERN int TclIsLocalScalar _ANSI_ARGS_((CONST char *src,
01703 int len));
01704 EXTERN Proc * TclIsProc _ANSI_ARGS_((Command *cmdPtr));
01705 EXTERN Var * TclLookupVar _ANSI_ARGS_((Tcl_Interp *interp,
01706 char *part1, char *part2, int flags, char *msg,
01707 int createPart1, int createPart2,
01708 Var **arrayPtrPtr));
01709 EXTERN int TclMathInProgress _ANSI_ARGS_((void));
01710 EXTERN int TclNeedSpace _ANSI_ARGS_((char *start, char *end));
01711 EXTERN Tcl_Obj * TclNewProcBodyObj _ANSI_ARGS_((Proc *procPtr));
01712 EXTERN int TclObjCommandComplete _ANSI_ARGS_((Tcl_Obj *cmdPtr));
01713 EXTERN int TclObjInterpProc _ANSI_ARGS_((ClientData clientData,
01714 Tcl_Interp *interp, int objc,
01715 Tcl_Obj *CONST objv[]));
01716 EXTERN int TclObjInvoke _ANSI_ARGS_((Tcl_Interp *interp,
01717 int objc, Tcl_Obj *CONST objv[], int flags));
01718 EXTERN int TclObjInvokeGlobal _ANSI_ARGS_((Tcl_Interp *interp,
01719 int objc, Tcl_Obj *CONST objv[], int flags));
01720 EXTERN int TclOpenFileChannelDeleteProc _ANSI_ARGS_((
01721 TclOpenFileChannelProc_ *proc));
01722 EXTERN int TclOpenFileChannelInsertProc _ANSI_ARGS_((
01723 TclOpenFileChannelProc_ *proc));
01724 EXTERN int TclpAccess _ANSI_ARGS_((CONST char *filename,
01725 int mode));
01726 EXTERN char * TclpAlloc _ANSI_ARGS_((unsigned int size));
01727 EXTERN int TclpCheckStackSpace _ANSI_ARGS_((void));
01728 EXTERN int TclpCopyFile _ANSI_ARGS_((CONST char *source,
01729 CONST char *dest));
01730 EXTERN int TclpCopyDirectory _ANSI_ARGS_((CONST char *source,
01731 CONST char *dest, Tcl_DString *errorPtr));
01732 EXTERN int TclpCreateDirectory _ANSI_ARGS_((CONST char *path));
01733 EXTERN int TclpDeleteFile _ANSI_ARGS_((CONST char *path));
01734 EXTERN void TclpExit _ANSI_ARGS_((int status));
01735 EXTERN void TclpFinalizeCondition _ANSI_ARGS_((
01736 Tcl_Condition *condPtr));
01737 EXTERN void TclpFinalizeMutex _ANSI_ARGS_((Tcl_Mutex *mutexPtr));
01738 EXTERN void TclpFinalizeThreadData _ANSI_ARGS_((
01739 Tcl_ThreadDataKey *keyPtr));
01740 EXTERN void TclpFinalizeThreadDataKey _ANSI_ARGS_((
01741 Tcl_ThreadDataKey *keyPtr));
01742 EXTERN char * TclpFindExecutable _ANSI_ARGS_((
01743 CONST char *argv0));
01744 EXTERN int TclpFindVariable _ANSI_ARGS_((CONST char *name,
01745 int *lengthPtr));
01746 EXTERN void TclpFree _ANSI_ARGS_((char *ptr));
01747 EXTERN unsigned long TclpGetClicks _ANSI_ARGS_((void));
01748 EXTERN Tcl_Channel TclpGetDefaultStdChannel _ANSI_ARGS_((int type));
01749 EXTERN unsigned long TclpGetSeconds _ANSI_ARGS_((void));
01750 EXTERN void TclpGetTime _ANSI_ARGS_((Tcl_Time *time));
01751 EXTERN int TclpGetTimeZone _ANSI_ARGS_((unsigned long time));
01752 EXTERN char * TclpGetUserHome _ANSI_ARGS_((CONST char *name,
01753 Tcl_DString *bufferPtr));
01754 EXTERN int TclpHasSockets _ANSI_ARGS_((Tcl_Interp *interp));
01755 EXTERN void TclpInitLibraryPath _ANSI_ARGS_((CONST char *argv0));
01756 EXTERN void TclpInitLock _ANSI_ARGS_((void));
01757 EXTERN void TclpInitPlatform _ANSI_ARGS_((void));
01758 EXTERN void TclpInitUnlock _ANSI_ARGS_((void));
01759 EXTERN int TclpListVolumes _ANSI_ARGS_((Tcl_Interp *interp));
01760 EXTERN void TclpMasterLock _ANSI_ARGS_((void));
01761 EXTERN void TclpMasterUnlock _ANSI_ARGS_((void));
01762 EXTERN int TclpMatchFiles _ANSI_ARGS_((Tcl_Interp *interp,
01763 char *separators, Tcl_DString *dirPtr,
01764 char *pattern, char *tail));
01765 EXTERN Tcl_Channel TclpOpenFileChannel _ANSI_ARGS_((Tcl_Interp *interp,
01766 char *fileName, char *modeString,
01767 int permissions));
01768 EXTERN char * TclpReadlink _ANSI_ARGS_((CONST char *fileName,
01769 Tcl_DString *linkPtr));
01770 EXTERN char * TclpRealloc _ANSI_ARGS_((char *ptr,
01771 unsigned int size));
01772 EXTERN void TclpReleaseFile _ANSI_ARGS_((TclFile file));
01773 EXTERN int TclpRemoveDirectory _ANSI_ARGS_((CONST char *path,
01774 int recursive, Tcl_DString *errorPtr));
01775 EXTERN int TclpRenameFile _ANSI_ARGS_((CONST char *source,
01776 CONST char *dest));
01777 EXTERN void TclpSetInitialEncodings _ANSI_ARGS_((void));
01778 EXTERN void TclpSetVariables _ANSI_ARGS_((Tcl_Interp *interp));
01779 EXTERN VOID * TclpSysAlloc _ANSI_ARGS_((long size, int isBin));
01780 EXTERN void TclpSysFree _ANSI_ARGS_((VOID *ptr));
01781 EXTERN VOID * TclpSysRealloc _ANSI_ARGS_((VOID *cp,
01782 unsigned int size));
01783 EXTERN void TclpUnloadFile _ANSI_ARGS_((ClientData clientData));
01784 EXTERN char * TclPrecTraceProc _ANSI_ARGS_((ClientData clientData,
01785 Tcl_Interp *interp, char *name1, char *name2,
01786 int flags));
01787 EXTERN int TclPreventAliasLoop _ANSI_ARGS_((Tcl_Interp *interp,
01788 Tcl_Interp *cmdInterp, Tcl_Command cmd));
01789 EXTERN void TclProcCleanupProc _ANSI_ARGS_((Proc *procPtr));
01790 EXTERN int TclProcCompileProc _ANSI_ARGS_((Tcl_Interp *interp,
01791 Proc *procPtr, Tcl_Obj *bodyPtr, Namespace *nsPtr,
01792 CONST char *description, CONST char *procName));
01793 EXTERN void TclProcDeleteProc _ANSI_ARGS_((ClientData clientData));
01794 EXTERN int TclProcInterpProc _ANSI_ARGS_((ClientData clientData,
01795 Tcl_Interp *interp, int argc, char **argv));
01796 EXTERN VOID * TclpThreadDataKeyGet _ANSI_ARGS_((
01797 Tcl_ThreadDataKey *keyPtr));
01798 EXTERN void TclpThreadDataKeyInit _ANSI_ARGS_((
01799 Tcl_ThreadDataKey *keyPtr));
01800 EXTERN void TclpThreadDataKeySet _ANSI_ARGS_((
01801 Tcl_ThreadDataKey *keyPtr, VOID *data));
01802 EXTERN void TclpThreadExit _ANSI_ARGS_((int status));
01803 EXTERN void TclRememberCondition _ANSI_ARGS_((Tcl_Condition *mutex));
01804 EXTERN void TclRememberDataKey _ANSI_ARGS_((Tcl_ThreadDataKey *mutex));
01805 EXTERN void TclRememberMutex _ANSI_ARGS_((Tcl_Mutex *mutex));
01806 EXTERN int TclRenameCommand _ANSI_ARGS_((Tcl_Interp *interp,
01807 char *oldName, char *newName)) ;
01808 EXTERN void TclResetShadowedCmdRefs _ANSI_ARGS_((
01809 Tcl_Interp *interp, Command *newCmdPtr));
01810 EXTERN int TclServiceIdle _ANSI_ARGS_((void));
01811 EXTERN Tcl_Obj * TclSetElementOfIndexedArray _ANSI_ARGS_((
01812 Tcl_Interp *interp, int localIndex,
01813 Tcl_Obj *elemPtr, Tcl_Obj *objPtr,
01814 int leaveErrorMsg));
01815 EXTERN Tcl_Obj * TclSetIndexedScalar _ANSI_ARGS_((Tcl_Interp *interp,
01816 int localIndex, Tcl_Obj *objPtr,
01817 int leaveErrorMsg));
01818 EXTERN char * TclSetPreInitScript _ANSI_ARGS_((char *string));
01819 EXTERN void TclSetupEnv _ANSI_ARGS_((Tcl_Interp *interp));
01820 EXTERN int TclSockGetPort _ANSI_ARGS_((Tcl_Interp *interp,
01821 char *string, char *proto, int *portPtr));
01822 EXTERN int TclSockMinimumBuffers _ANSI_ARGS_((int sock,
01823 int size));
01824 EXTERN int TclStat _ANSI_ARGS_((CONST char *path,
01825 struct stat *buf));
01826 EXTERN int TclStatDeleteProc _ANSI_ARGS_((TclStatProc_ *proc));
01827 EXTERN int TclStatInsertProc _ANSI_ARGS_((TclStatProc_ *proc));
01828 EXTERN void TclTeardownNamespace _ANSI_ARGS_((Namespace *nsPtr));
01829 EXTERN void TclTransferResult _ANSI_ARGS_((Tcl_Interp *sourceInterp,
01830 int result, Tcl_Interp *targetInterp));
01831 EXTERN int TclUpdateReturnInfo _ANSI_ARGS_((Interp *iPtr));
01832
01833
01834
01835
01836
01837
01838
01839 EXTERN int Tcl_AfterObjCmd _ANSI_ARGS_((ClientData clientData,
01840 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01841 EXTERN int Tcl_AppendObjCmd _ANSI_ARGS_((ClientData clientData,
01842 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01843 EXTERN int Tcl_ArrayObjCmd _ANSI_ARGS_((ClientData clientData,
01844 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01845 EXTERN int Tcl_BinaryObjCmd _ANSI_ARGS_((ClientData clientData,
01846 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01847 EXTERN int Tcl_BreakObjCmd _ANSI_ARGS_((ClientData clientData,
01848 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01849 EXTERN int Tcl_CaseObjCmd _ANSI_ARGS_((ClientData clientData,
01850 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01851 EXTERN int Tcl_CatchObjCmd _ANSI_ARGS_((ClientData clientData,
01852 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01853 EXTERN int Tcl_CdObjCmd _ANSI_ARGS_((ClientData clientData,
01854 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01855 EXTERN int Tcl_ClockObjCmd _ANSI_ARGS_((ClientData clientData,
01856 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01857 EXTERN int Tcl_CloseObjCmd _ANSI_ARGS_((ClientData clientData,
01858 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01859 EXTERN int Tcl_ConcatObjCmd _ANSI_ARGS_((ClientData clientData,
01860 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01861 EXTERN int Tcl_ContinueObjCmd _ANSI_ARGS_((ClientData clientData,
01862 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01863 EXTERN int Tcl_EncodingObjCmd _ANSI_ARGS_((ClientData clientData,
01864 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01865 EXTERN int Tcl_EofObjCmd _ANSI_ARGS_((ClientData clientData,
01866 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01867 EXTERN int Tcl_ErrorObjCmd _ANSI_ARGS_((ClientData clientData,
01868 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01869 EXTERN int Tcl_EvalObjCmd _ANSI_ARGS_((ClientData clientData,
01870 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01871 EXTERN int Tcl_ExecObjCmd _ANSI_ARGS_((ClientData clientData,
01872 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01873 EXTERN int Tcl_ExitObjCmd _ANSI_ARGS_((ClientData clientData,
01874 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01875 EXTERN int Tcl_ExprObjCmd _ANSI_ARGS_((ClientData clientData,
01876 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01877 EXTERN int Tcl_FblockedObjCmd _ANSI_ARGS_((ClientData clientData,
01878 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01879 EXTERN int Tcl_FconfigureObjCmd _ANSI_ARGS_((ClientData clientData,
01880 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01881 EXTERN int Tcl_FcopyObjCmd _ANSI_ARGS_((ClientData dummy,
01882 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01883 EXTERN int Tcl_FileObjCmd _ANSI_ARGS_((ClientData dummy,
01884 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01885 EXTERN int Tcl_FileEventObjCmd _ANSI_ARGS_((ClientData clientData,
01886 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01887 EXTERN int Tcl_FlushObjCmd _ANSI_ARGS_((ClientData clientData,
01888 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01889 EXTERN int Tcl_ForObjCmd _ANSI_ARGS_((ClientData clientData,
01890 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01891 EXTERN int Tcl_ForeachObjCmd _ANSI_ARGS_((ClientData clientData,
01892 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01893 EXTERN int Tcl_FormatObjCmd _ANSI_ARGS_((ClientData dummy,
01894 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01895 EXTERN int Tcl_GetsObjCmd _ANSI_ARGS_((ClientData clientData,
01896 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01897 EXTERN int Tcl_GlobalObjCmd _ANSI_ARGS_((ClientData clientData,
01898 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01899 EXTERN int Tcl_GlobObjCmd _ANSI_ARGS_((ClientData clientData,
01900 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01901 EXTERN int Tcl_IfObjCmd _ANSI_ARGS_((ClientData clientData,
01902 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01903 EXTERN int Tcl_IncrObjCmd _ANSI_ARGS_((ClientData clientData,
01904 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01905 EXTERN int Tcl_InfoObjCmd _ANSI_ARGS_((ClientData clientData,
01906 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01907 EXTERN int Tcl_InterpObjCmd _ANSI_ARGS_((ClientData clientData,
01908 Tcl_Interp *interp, int argc, Tcl_Obj *CONST objv[]));
01909 EXTERN int Tcl_JoinObjCmd _ANSI_ARGS_((ClientData clientData,
01910 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01911 EXTERN int Tcl_LappendObjCmd _ANSI_ARGS_((ClientData clientData,
01912 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01913 EXTERN int Tcl_LindexObjCmd _ANSI_ARGS_((ClientData clientData,
01914 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01915 EXTERN int Tcl_LinsertObjCmd _ANSI_ARGS_((ClientData clientData,
01916 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01917 EXTERN int Tcl_LlengthObjCmd _ANSI_ARGS_((ClientData clientData,
01918 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01919 EXTERN int Tcl_ListObjCmd _ANSI_ARGS_((ClientData clientData,
01920 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01921 EXTERN int Tcl_LoadObjCmd _ANSI_ARGS_((ClientData clientData,
01922 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01923 EXTERN int Tcl_LrangeObjCmd _ANSI_ARGS_((ClientData clientData,
01924 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01925 EXTERN int Tcl_LreplaceObjCmd _ANSI_ARGS_((ClientData clientData,
01926 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01927 EXTERN int Tcl_LsearchObjCmd _ANSI_ARGS_((ClientData clientData,
01928 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01929 EXTERN int Tcl_LsortObjCmd _ANSI_ARGS_((ClientData clientData,
01930 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01931 EXTERN int Tcl_NamespaceObjCmd _ANSI_ARGS_((ClientData clientData,
01932 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01933 EXTERN int Tcl_OpenObjCmd _ANSI_ARGS_((ClientData clientData,
01934 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01935 EXTERN int Tcl_PackageObjCmd _ANSI_ARGS_((ClientData clientData,
01936 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01937 EXTERN int Tcl_PidObjCmd _ANSI_ARGS_((ClientData clientData,
01938 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01939 EXTERN int Tcl_PutsObjCmd _ANSI_ARGS_((ClientData clientData,
01940 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01941 EXTERN int Tcl_PwdObjCmd _ANSI_ARGS_((ClientData clientData,
01942 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01943 EXTERN int Tcl_ReadObjCmd _ANSI_ARGS_((ClientData clientData,
01944 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01945 EXTERN int Tcl_RegexpObjCmd _ANSI_ARGS_((ClientData clientData,
01946 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01947 EXTERN int Tcl_RegsubObjCmd _ANSI_ARGS_((ClientData clientData,
01948 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01949 EXTERN int Tcl_RenameObjCmd _ANSI_ARGS_((ClientData clientData,
01950 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01951 EXTERN int Tcl_ReturnObjCmd _ANSI_ARGS_((ClientData clientData,
01952 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01953 EXTERN int Tcl_ScanObjCmd _ANSI_ARGS_((ClientData clientData,
01954 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01955 EXTERN int Tcl_SeekObjCmd _ANSI_ARGS_((ClientData clientData,
01956 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01957 EXTERN int Tcl_SetObjCmd _ANSI_ARGS_((ClientData clientData,
01958 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01959 EXTERN int Tcl_SplitObjCmd _ANSI_ARGS_((ClientData clientData,
01960 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01961 EXTERN int Tcl_SocketObjCmd _ANSI_ARGS_((ClientData clientData,
01962 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01963 EXTERN int Tcl_SourceObjCmd _ANSI_ARGS_((ClientData clientData,
01964 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01965 EXTERN int Tcl_StringObjCmd _ANSI_ARGS_((ClientData clientData,
01966 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01967 EXTERN int Tcl_SubstObjCmd _ANSI_ARGS_((ClientData clientData,
01968 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01969 EXTERN int Tcl_SwitchObjCmd _ANSI_ARGS_((ClientData clientData,
01970 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01971 EXTERN int Tcl_TellObjCmd _ANSI_ARGS_((ClientData clientData,
01972 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01973 EXTERN int Tcl_TimeObjCmd _ANSI_ARGS_((ClientData clientData,
01974 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01975 EXTERN int Tcl_TraceObjCmd _ANSI_ARGS_((ClientData clientData,
01976 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01977 EXTERN int Tcl_UnsetObjCmd _ANSI_ARGS_((ClientData clientData,
01978 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01979 EXTERN int Tcl_UpdateObjCmd _ANSI_ARGS_((ClientData clientData,
01980 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01981 EXTERN int Tcl_UplevelObjCmd _ANSI_ARGS_((ClientData clientData,
01982 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01983 EXTERN int Tcl_UpvarObjCmd _ANSI_ARGS_((ClientData clientData,
01984 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01985 EXTERN int Tcl_VariableObjCmd _ANSI_ARGS_((ClientData clientData,
01986 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01987 EXTERN int Tcl_VwaitObjCmd _ANSI_ARGS_((ClientData clientData,
01988 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01989 EXTERN int Tcl_WhileObjCmd _ANSI_ARGS_((ClientData clientData,
01990 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
01991
01992
01993
01994
01995
01996
01997
01998 #ifdef MAC_TCL
01999 EXTERN int Tcl_EchoCmd _ANSI_ARGS_((ClientData clientData,
02000 Tcl_Interp *interp, int argc, char **argv));
02001 EXTERN int Tcl_LsObjCmd _ANSI_ARGS_((ClientData clientData,
02002 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
02003 EXTERN int Tcl_BeepObjCmd _ANSI_ARGS_((ClientData clientData,
02004 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
02005 EXTERN int Tcl_MacSourceObjCmd _ANSI_ARGS_((ClientData clientData,
02006 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
02007 EXTERN int Tcl_ResourceObjCmd _ANSI_ARGS_((ClientData clientData,
02008 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
02009 #endif
02010
02011
02012
02013
02014
02015
02016
02017 EXTERN int TclCompileBreakCmd _ANSI_ARGS_((Tcl_Interp *interp,
02018 Tcl_Parse *parsePtr, struct CompileEnv *envPtr));
02019 EXTERN int TclCompileCatchCmd _ANSI_ARGS_((Tcl_Interp *interp,
02020 Tcl_Parse *parsePtr, struct CompileEnv *envPtr));
02021 EXTERN int TclCompileContinueCmd _ANSI_ARGS_((Tcl_Interp *interp,
02022 Tcl_Parse *parsePtr, struct CompileEnv *envPtr));
02023 EXTERN int TclCompileExprCmd _ANSI_ARGS_((Tcl_Interp *interp,
02024 Tcl_Parse *parsePtr, struct CompileEnv *envPtr));
02025 EXTERN int TclCompileForCmd _ANSI_ARGS_((Tcl_Interp *interp,
02026 Tcl_Parse *parsePtr, struct CompileEnv *envPtr));
02027 EXTERN int TclCompileForeachCmd _ANSI_ARGS_((Tcl_Interp *interp,
02028 Tcl_Parse *parsePtr, struct CompileEnv *envPtr));
02029 EXTERN int TclCompileIfCmd _ANSI_ARGS_((Tcl_Interp *interp,
02030 Tcl_Parse *parsePtr, struct CompileEnv *envPtr));
02031 EXTERN int TclCompileIncrCmd _ANSI_ARGS_((Tcl_Interp *interp,
02032 Tcl_Parse *parsePtr, struct CompileEnv *envPtr));
02033 EXTERN int TclCompileSetCmd _ANSI_ARGS_((Tcl_Interp *interp,
02034 Tcl_Parse *parsePtr, struct CompileEnv *envPtr));
02035 EXTERN int TclCompileWhileCmd _ANSI_ARGS_((Tcl_Interp *interp,
02036 Tcl_Parse *parsePtr, struct CompileEnv *envPtr));
02037
02038
02039
02040
02041
02042
02043
02044
02045
02046
02047
02048
02049
02050
02051
02052
02053
02054
02055
02056 #ifdef TCL_COMPILE_STATS
02057 # define TclIncrObjsAllocated() \
02058 tclObjsAlloced++
02059 # define TclIncrObjsFreed() \
02060 tclObjsFreed++
02061 #else
02062 # define TclIncrObjsAllocated()
02063 # define TclIncrObjsFreed()
02064 #endif
02065
02066 #ifdef TCL_MEM_DEBUG
02067 # define TclNewObj(objPtr) \
02068 (objPtr) = (Tcl_Obj *) \
02069 Tcl_DbCkalloc(sizeof(Tcl_Obj), __FILE__, __LINE__); \
02070 (objPtr)->refCount = 0; \
02071 (objPtr)->bytes = tclEmptyStringRep; \
02072 (objPtr)->length = 0; \
02073 (objPtr)->typePtr = NULL; \
02074 TclIncrObjsAllocated()
02075
02076 # define TclDbNewObj(objPtr, file, line) \
02077 (objPtr) = (Tcl_Obj *) Tcl_DbCkalloc(sizeof(Tcl_Obj), (file), (line)); \
02078 (objPtr)->refCount = 0; \
02079 (objPtr)->bytes = tclEmptyStringRep; \
02080 (objPtr)->length = 0; \
02081 (objPtr)->typePtr = NULL; \
02082 TclIncrObjsAllocated()
02083
02084 # define TclDecrRefCount(objPtr) \
02085 if (--(objPtr)->refCount <= 0) { \
02086 if ((objPtr)->refCount < -1) \
02087 panic("Reference count for %lx was negative: %s line %d", \
02088 (objPtr), __FILE__, __LINE__); \
02089 if (((objPtr)->bytes != NULL) \
02090 && ((objPtr)->bytes != tclEmptyStringRep)) { \
02091 ckfree((char *) (objPtr)->bytes); \
02092 } \
02093 if (((objPtr)->typePtr != NULL) \
02094 && ((objPtr)->typePtr->freeIntRepProc != NULL)) { \
02095 (objPtr)->typePtr->freeIntRepProc(objPtr); \
02096 } \
02097 ckfree((char *) (objPtr)); \
02098 TclIncrObjsFreed(); \
02099 }
02100
02101 #else
02102
02103 #ifdef TCL_THREADS
02104 extern Tcl_Mutex tclObjMutex;
02105 #endif
02106
02107 # define TclNewObj(objPtr) \
02108 Tcl_MutexLock(&tclObjMutex); \
02109 if (tclFreeObjList == NULL) { \
02110 TclAllocateFreeObjects(); \
02111 } \
02112 (objPtr) = tclFreeObjList; \
02113 tclFreeObjList = (Tcl_Obj *) \
02114 tclFreeObjList->internalRep.otherValuePtr; \
02115 (objPtr)->refCount = 0; \
02116 (objPtr)->bytes = tclEmptyStringRep; \
02117 (objPtr)->length = 0; \
02118 (objPtr)->typePtr = NULL; \
02119 TclIncrObjsAllocated(); \
02120 Tcl_MutexUnlock(&tclObjMutex)
02121
02122 # define TclDecrRefCount(objPtr) \
02123 if (--(objPtr)->refCount <= 0) { \
02124 if (((objPtr)->bytes != NULL) \
02125 && ((objPtr)->bytes != tclEmptyStringRep)) { \
02126 ckfree((char *) (objPtr)->bytes); \
02127 } \
02128 if (((objPtr)->typePtr != NULL) \
02129 && ((objPtr)->typePtr->freeIntRepProc != NULL)) { \
02130 (objPtr)->typePtr->freeIntRepProc(objPtr); \
02131 } \
02132 Tcl_MutexLock(&tclObjMutex); \
02133 (objPtr)->internalRep.otherValuePtr = (VOID *) tclFreeObjList; \
02134 tclFreeObjList = (objPtr); \
02135 TclIncrObjsFreed(); \
02136 Tcl_MutexUnlock(&tclObjMutex); \
02137 }
02138 #endif
02139
02140
02141
02142
02143
02144
02145
02146
02147
02148
02149
02150
02151
02152
02153
02154 #define TclInitStringRep(objPtr, bytePtr, len) \
02155 if ((len) == 0) { \
02156 (objPtr)->bytes = tclEmptyStringRep; \
02157 (objPtr)->length = 0; \
02158 } else { \
02159 (objPtr)->bytes = (char *) ckalloc((unsigned) ((len) + 1)); \
02160 memcpy((VOID *) (objPtr)->bytes, (VOID *) (bytePtr), \
02161 (unsigned) (len)); \
02162 (objPtr)->bytes[len] = '\0'; \
02163 (objPtr)->length = (len); \
02164 }
02165
02166
02167
02168
02169
02170
02171
02172
02173
02174
02175
02176
02177
02178
02179 #define TclGetString(objPtr) \
02180 ((objPtr)->bytes? (objPtr)->bytes : Tcl_GetString((objPtr)))
02181
02182 #include "tclIntDecls.h"
02183
02184 # undef TCL_STORAGE_CLASS
02185 # define TCL_STORAGE_CLASS DLLIMPORT
02186
02187 #endif
02188