Note that a few of these routines are implemented as macros for the sake of efficiency, but logically they behave the same as functions.
Tcl_Obj *Tcl_NewObj() Tcl_Obj *Tcl_DuplicateObj(Tcl_Obj *objPtr) void Tcl_IncrRefCount(Tcl_Obj *objPtr) void Tcl_DecrRefCount(Tcl_Obj *objPtr) int Tcl_IsShared(Tcl_Obj *objPtr) void Tcl_InvalidateStringRep(Tcl_Obj *objPtr) Tcl_Obj *Tcl_NewBooleanObj(int boolValue) void Tcl_SetBooleanObj(Tcl_Obj *objPtr, int boolValue) int Tcl_GetBooleanFromObj(Tcl_Interp *interp, Tcl_Obj *objPtr, int *boolPtr) Tcl_Obj *Tcl_NewDoubleObj(double doubleValue) void Tcl_SetDoubleObj(Tcl_Obj *objPtr, double doubleValue) int Tcl_GetDoubleFr omObj(Tcl_Interp *interp, Tcl_Obj *objPtr, double *doublePtr) Tcl_Obj *Tcl_NewIntObj(int intValue) Tcl_Obj *Tcl_NewLongObj(long longValue) void Tcl_SetIntObj(Tcl_Obj *objPtr, int intValue) void Tcl_SetLongObj(Tcl_Obj *objPtr, long longValue) int Tcl_GetIntFromObj(Tcl_Interp *interp, Tcl_Obj *objPtr, int *intPtr) int Tcl_GetLongFromObj(Tcl_Interp *interp, Tcl_Obj *objPtr, long *longPtr) int Tcl_ListObjAppendList(Tcl_Interp *interp, Tcl_Obj *listPtr, Tcl_Obj *elemListPtr) int Tcl_ListObjAppendElement(Tcl_Interp *interp, Tcl_Obj *listPtr, Tcl_Obj *objPtr) Tcl_Obj *Tcl_NewListObj(int objc, Tcl_Obj *cont objv[]) void Tcl_SetListObj(Tcl_Obj *objPtr, int objc, Tcl_Obj *const objv[]) int Tcl_ListObjGetElements(Tcl_Interp *interp, Tcl_Obj *listPtr, int *objcPtr, Tcl_Obj ***objvPtr) int Tcl_ListObjIndex(Tcl_Interp *interp, Tcl_Obj *listPtr, int index, Tcl_Obj **objPtrPtr) int Tcl_ListObjLength(Tcl_Interp *interp, Tcl_Obj *listPtr, int *intPtr) int Tcl_ListObjReplace(Tcl_Interp *interp, Tcl_Obj *listPtr, int first, int count, int objc, Tcl_Obj *const objv[]) void Tcl_RegisterObjType(Tcl_ObjType *typePtr) Tcl_ObjType *Tcl_GetObjType(char *typeName) int Tcl_AppendAllObjTypes(Tcl_Interp *interp, Tcl_Obj *objPtr) int Tcl_ConvertToT ype(Tcl_Interp *interp, Tcl_Obj *objPtr, Tcl_ObjType *typePtr) Tcl_Obj *Tcl_NewStringObj(char *bytes, int length) void Tcl_SetStringObj(Tcl_Obj *objPtr, char *bytes, int length) char *Tcl_GetStringFromObj(Tcl_Obj *objPtr, int *lengthPtr) void Tcl_AppendToObj(Tcl_Obj *objPtr, char *bytes, int length) void Tcl_AppendStringsToObj(Tcl_Obj *interp, ...) void Tcl_SetObjLength(Tcl_Obj *objPtr, int length) Tcl_Obj *Tcl_ConcatObj(int objc, Tcl_Obj *const objv[])
Tcl_Interp *Tcl_CreateInterp(void) void Tcl_DeleteInterp(Tcl_Interp *interp) int Tcl_InterpDeleted(Tcl_Interp *interp) int Tcl_Eval(Tcl_Interp *interp, char *string) int Tcl_EvalObj(Tcl_Interp *interp, Tcl_Obj *objPtr) int Tcl_EvalFile(Tcl_Interp *interp, char *fileName) int Tcl_GlobalEval(Tcl_Interp *interp, char *command) int Tcl_GlobalEvalObj(Tcl_Interp *interp, Tcl_Obj *objPtr) int Tcl_VarEval(Tcl_Interp *interp, ...) int Tcl_RecordAndEval(Tcl_Interp *interp, char *cmd, int flags) int Tcl_RecordAndEvalObj(Tcl_Interp *interp, Tcl_Obj *cmdPtr, int flags) void Tcl_AllowExceptions(Tcl_Interp *interp) Tcl_AsyncHandler Tcl_AsyncCreate(Tcl_AsyncProc *proc, ClientData clientData) void Tcl_AsyncMark(Tcl_AsyncHandler async) int Tcl_AsyncInvoke(Tcl_Interp *interp, int code) void Tcl_AsyncDelete(Tcl_AsyncHandler async) int Tcl_AsyncReady(void) void Tcl_CallWhenDeleted(Tcl_Interp *interp, Tcl_InterpDeleteProc *proc, ClientData clientData) void Tcl_DontCallWhenDeleted(Tcl_Interp *interp, Tcl_InterpDeleteProc *proc, ClientData clientData) int Tcl_IsSafe(Tcl_Interp *interp) int Tcl_MakeSafe(Tcl_Interp *interp) Tcl_Interp *Tcl_CreateSlave(Tcl_Interp *interp, char *slaveName, int isSafe) Tcl_Interp *Tcl_GetSlave(Tcl_Interp *interp, char *slaveName) Tcl_Interp *Tcl_GetMaster(Tcl_Interp *interp) int Tcl_GetInterpPath(Tcl_Interp *askInterp, Tcl_Interp *slaveInterp) int Tcl_CreateAlias(Tcl_Interp *slave, char *slaveCmd, Tcl_Interp *target, char *targetCmd, int argc, char **argv) int Tcl_CreateAliasObj(Tcl_Interp *slave, char *slaveCmd, Tcl_Interp *target, char *targetCmd, int objc, Tcl_Obj *const objv[]) int Tcl_GetAlias(Tcl_Interp *interp, char *slaveCmd, Tcl_Interp **targetInterpPtr, char **targetCmdPtr, int *argcPtr, char ***argvPtr) int Tcl_GetAliasObj(Tcl_Interp *interp, char *slaveCmd, Tcl_Interp **targetInterpPtr, char **targetCmdPtr, int *objcPtr, Tcl_Obj ***objv) int Tcl_ExposeCommand(Tcl_Interp *interp, char *hiddenCmdToken, char *cmdName) int Tcl_HideCommand(Tcl_Interp *interp, char *cmdName, char *hiddenCmdToken) int Tcl_DoOneEvent(int flags) void Tcl_DoWhenIdle(Tcl_IdleProc *proc, ClientData clientData) void Tcl_CancelIdleCall(Tcl_IdleProc *idleProc, ClientData clientData) void Tcl_Exit(int status) void Tcl_Finalize(void) void Tcl_CreateExitHandler(Tcl_ExitProc *proc, ClientData clientData) void Tcl_DeleteExitHandler(Tcl_ExitProc *proc, ClientData clientData) int Tcl_SetRecursionLimit(Tcl_Interp *interp, int depth) void Tcl_StaticPackage(Tcl_Interp *interp, char *pkgName, Tcl_PackageInitProc *initProc, Tcl_PackageInitProc *safeInitProc)
Tcl_Command Tcl_CreateCommand(Tcl_Interp *interp, char *cmdName, Tcl_CmdPrc *proc, ClientData clientData, Tcl_CmdDeleteProc *deleteProc) Tcl_Command Tcl_CreateObjCommand(Tcl_Interp *interp, char *cmdName, Tcl_ObjCmdProc *proc, ClientData clientData, Tcl_CmdDeleteProc *deleteProc) int Tcl_DeleteCommand(Tcl_Interp *interp, char *cmdName) int Tcl_DeleteCommandFromToken(Tcl_Interp *interp, Tcl_Command command) void Tcl_SetResult(Tcl_Interp *interp, char *string, Tcl_Fr eeProc *freeProc) void Tcl_AppendResult(Tcl_Interp *interp, ...) void Tcl_AppendElement(Tcl_Interp *interp, char *string) void Tcl_ResetResult(Tcl_Interp *interp) int Tcl_GetCommandInfo(Tcl_Interp *interp, char *cmdName, Tcl_CmdInfo *infoPtr) int Tcl_SetCommandInfo(Tcl_Interp *interp, char *cmdName, Tcl_CmdInfo *infoPtr) char *Tcl_GetCommandName(Tcl_Interp *interp, Tcl_Command command) void Tcl_SetObjResult(Tcl_Interp *interp, Tcl_Obj *resultObjPtr) Tcl_Obj *Tcl_GetObjResult(Tcl_Interp *interp) void Tcl_FreeResult(Tcl_Interp *interp) char *Tcl_GetStringResult(Tcl_Interp *interp)
int Tcl_GetInt(Tcl_Interp *interp, char *string, int *intPtr) int Tcl_GetDouble(Tcl_Interp *interp, char *string, double *doublePtr) int Tcl_GetBoolean(Tcl_Interp *interp, char *string, int *boolPtr) int Tcl_ExprString(Tcl_Interp *interp, char *string) int Tcl_ExprLong(Tcl_Interp *interp, char *string, long *ptr) int Tcl_ExprDouble(Tcl_Interp *interp, char *string, double *ptr) int Tcl_ExprBoolean(Tcl_Interp *interp, char *string, int *ptr) int Tcl_SplitList(Tcl_Interp *interp, char *list, int *argcPtr, char ***argvPtr) char *Tcl_Merge(int argc, char **argv) char Tcl_Backslash(const char *src, int *readPtr) void Tcl_CreateMathFunc(Tcl_Interp *interp, char *name, int numArgs, Tcl_ValueType *argTypes, Tcl_MathProc *proc, ClientData clientData) int Tcl_ExprLongObj(Tcl_Interp *interp, Tcl_Obj *objPtr, long *ptr) int Tcl_ExprDoubleObj(Tcl_Interp *interp, Tcl_Obj *objPtr, double *ptr) int Tcl_ExprBooleanObj(Tcl_Interp *interp, Tcl_Obj *objPtr, int *ptr) int Tcl_ExprObj(Tcl_Interp *interp, Tcl_Obj *objPtr, Tcl_Obj **resultPtrPtr) int Tcl_GetIndexFromObj(Tcl_Interp *interp, Tcl_Obj *objPtr, char **tablePtr, char *msg, int flags, int *indexPtr) void Tcl_PrintDouble(Tcl_Interp *interp, double value, char *dst) int Tcl_ScanCountedElement(const char *string, int length, int *flagPtr) int Tcl_ScanElement(const char *string, int *flagPtr) int Tcl_ConvertCountedElement(const char *src, int length, char *dst, int flags) int Tcl_ConvertElement(const char *src, char *dst, int flags)
void Tcl_AddErrorInfo (Tcl_Interp *interp, char *message) void Tcl_AddObjErrorInfo(Tcl_Interp *interp, char *message, int length) void Tcl_SetErrorCode(Tcl_Interp *arg1, ...) void Tcl_SetObjErrorCode(Tcl_Interp *interp, Tcl_Obj *errorObjPtr) void Tcl_BackgroundError(Tcl_Interp *interp) void Tcl_WrongNumArgs(Tcl_Interp *interp, int objc, Tcl_Obj *const objv[], char *message)
char *Tcl_SetVar(Tcl_Interp *interp, char *varName, char *newValue, int flags) char *Tcl_SetVar2(Tcl_Interp *interp, char *part1, char *part2, char *newValue, int flags) char *Tcl_GetVar(Tcl_Interp *interp, char *varName, int flags) char *Tcl_GetVar2(Tcl_Interp *interp, char *part1, char *part2, int flags) int Tcl_UnsetVar(Tcl_Interp *interp, char *varName, int flags) int Tcl_UnsetVar2(Tcl_Interp *interp, char *part1, char *part2, int flags) int Tcl_LinkVar(Tcl_Interp *interp, char *varName, char *addr, int type) void Tcl_UnlinkVar(Tcl_Interp *interp, char *varName) void Tcl_UpdateLinkedVar(Tcl_Interp *interp, char *varName) int Tcl_TraceVar(Tcl_Interp *interp, char *varName, int flags, Tcl_VarTraceProc *proc, ClientData clientData) int Tcl_TraceVar2(Tcl_Interp *interp, char *part1, char *part2, int flags, Tcl_VarTraceProc *proc, ClientData clientData) void Tcl_UntraceVar(Tcl_Interp *interp, char *varName, int flags, Tcl_VarTraceProc *proc, ClientData clientData) void Tcl_UntraceVar2(Tcl_Interp *interp, char *part1, char *part2, int flags, Tcl_VarTraceProc *proc, ClientData clientData) ClientData Tcl_VarTraceInfo(Tcl_Interp *interp, char *varName, int flags, Tcl_VarTraceProc *procPtr, ClientData prevClientData) ClientData Tcl_VarTraceInfo2(Tcl_Interp *interp, char *part1, char *part2, int flags, Tcl_VarTraceProc *procPtr, ClientData prevClientData) Tcl_Obj *Tcl_ObjGetVar2(Tcl_Interp *interp, Tcl_Obj *part1Ptr, Tcl_Obj *part2Ptr, int flags) Tcl_Obj *Tcl_ObjSetVar2(Tcl_Interp *interp, Tcl_Obj *part1Ptr, Tcl_Obj *part2Ptr, Tcl_Obj *newValuePtr, int flags) int Tcl_UpVar(Tcl_Interp *interp, char *frameName, char *varName, char *localName, int flags) int Tcl_UpVar2(Tcl_Interp *interp, char *frameName, char *part1, char *part2, char *localName, int flags)
void Tcl_InitHashTable(Tcl_HashTable *tablePtr, int keyType) void Tcl_DeleteHashTable(Tcl_HashTable *tablePtr) Tcl_HashEntry *Tcl_CreateHashEntry(Tcl_hashTable *tablePtr, char *key, int *newPtr) Tcl_HashEntry *Tcl_FindHashEntry(Tcl_HashTable *tablePtr, char *key) void Tcl_DeleteHashEntry(Tcl_HashEntry *entryPtr) ClientData Tcl_GetHashValue(Tcl_HashEntry *entryPtr) void Tcl_SetHashValue(Tcl_HashEntry *entryPtr, Clientdata value) char *Tcl_GetHashKey(Tcl_HashEntry *entryPtr) Tcl_HashEntry *Tcl_FirstHashEntry(Tcl_HashTable *tablePtr, Tcl_HashSearch *searchPtr) Tcl_HashEntry *Tcl_NextHashEntry(Tcl_HashSearch *searchPtr) char *Tcl_HashStats(Tcl_HashTable *tablePtr) ClientData Tcl_GetAssocData(Tcl_Interp *interp, char *name, Tcl_InterpDeleteProc **procPtr) void Tcl_SetAssocData(Tcl_Interp *interp, char *name, Tcl_InterpDeleteProc *proc, ClientData clientData) void Tcl_DeleteAssocData(Tcl_Interp *interp, char *name)
void Tcl_DStringInit(Tcl_DString *dsPtr) char *Tcl_DStringAppend(Tcl_DString *dsPtr, const char *string, int length) char *Tcl_DStringAppendElement(Tcl_DString *dsPtr, const char *string) void Tcl_DStringStartSublist(Tcl_DString *dsPtr) void Tcl_DStringEndSublist(Tcl_DString *dsPtr) int Tcl_DStringLength(Tcl_DString *dsPtr) char *Tcl_DStringValue(Tcl_DString *dsPtr) void Tcl_DStringSetLength(Tcl_DString *dsPtr, int length) void Tcl_DStringFree(Tcl_DString *dsPtr) void Tcl_DStringResult(Tcl_Interp *interp, Tcl_DString *dsPtr) void Tcl_DStringGetResult(Tcl_Interp *interp, Tcl_DString *dsPtr) int Tcl_CommandComplete(char *cmd) int Tcl_StringMatch(char *string, char *pattern) int Tcl_RegExpMatch(Tcl_Interp *interp, char *string, char *pattern) Tcl_RegExp Tcl_RegExpCompile(Tcl_Interp *interp, char *string) int Tcl_RegExpExec(Tcl_Interp *interp, Tcl_RegExp regexp, char *string, char *start) void Tcl_RegExpRange(Tcl_RegExp regexp, int index, char **startPtr, char **endPtr) char *Tcl_Concat(int argc, char **argv)
char *Tcl_TildeSubst(Tcl_Interp *interp, char *name, Tcl_DString *resultPtr) char *Tcl_PosixError(Tcl_Interp *interp) char *Tcl_ErrnoId(void) char *Tcl_SignalId(int sig) char *Tcl_SignalMsg(int sig) void Tcl_DetachPids(int numPids, Tcl_Pid *pidPtr) void Tcl_ReapDetachedProcs(void) void Tcl_SetErrno(int err) int Tcl_GetErrno(void)
Tcl_Channel Tcl_OpenCommandChannel(Tcl_Interp *interp, int argc, char **argv, int flags) Tcl_Channel Tcl_CreateChannel(Tcl_ChannelT ype *typePtr, char *chanName, ClientData instanceData, int mask) ClientData Tcl_GetChannelInstanceData(Tcl_Channel chan) Tcl_ChannelType *Tcl_GetChannelType(Tcl_Channel chan) char *Tcl_GetChannelName(Tcl_Channel chan) int Tcl_GetChannelHandle(Tcl_Channel chan, int direction, ClientData *handlePtr) int Tcl_GetChannelFlags(Tcl_Channel channel) void Tcl_SetDefaultTranslation(TclChannel channel, Tcl_EolTranslation transMode) int Tcl_GetChannelBufferSize(Tcl_Channel chan) void Tcl_SetChannelBufferSize(Tcl_Channel chan, int sz) void Tcl_NotifyChannel(Tcl_Channel channel, int mask) int Tcl_BadChannelOption(Tcl_Interp *interp, char *optionName, char *optionList) void Tcl_CreateChannelHandler(Tcl_Channel chan, int mask, Tcl_ChannelProc *proc, ClientData clientData) void Tcl_DeleteChannelHandler(Tcl_Channel chan, Tcl_ChannelProc *proc, ClientData clientData) void Tcl_CreateCloseHandler(Tcl_Channel chan, Tcl_CloseProc *proc, ClientData clientData) void Tcl_DeleteCloseHandler(Tcl_Channel chan, Tcl_CloseProc *proc, ClientData clientData) int Tcl_GetOpenFile(Tcl_Interp *interp, char *string, int write, int checkUsage, ClientData *filePtr) Tcl_Channel Tcl_GetStdChannel(int type) void Tcl_SetStdChannel(Tcl_Channel channel, int type) Tcl_Channel Tcl_OpenFileChannel(Tcl_Interp *interp, char *fileName, char *modeString, int permissions) Tcl_Channel Tcl_MakeFileChannel(ClientData handle, int mode) Tcl_Channel Tcl_GetChannel(Tcl_Interp *interp, char *chanName, int *modePtr) void Tcl_RegisterChannel(Tcl_Interp *interp, Tcl_Channel chan) int Tcl_UnregisterChannel(Tcl_Interp *interp, Tcl_Channel chan) int Tcl_Close(Tcl_Interp *interp, Tcl_Channel chan) int Tcl_Read(Tcl_Channel chan, char *bufPtr, int toRead) int Tcl_Gets(Tcl_Channel chan, Tcl_DString *dsPtr) int Tcl_GetsObj(Tcl_Channel chan, Tcl_Obj *objPtr) int Tcl_Write(Tcl_Channel chan, char *s, int slen) int Tcl_Flush(Tcl_Channel chan) int Tcl_Seek(Tcl_Channel chan, int offset, int mode) int Tcl_Tell(Tcl_Channel chan) int Tcl_GetChannelOption(Tcl_Interp *interp, Tcl_Channel chan, char *optionName, Tcl_DString *dsPtr) int Tcl_SetChannelOption(Tcl_Interp *interp, Tcl_Channel chan, char *optionName, char *newValue) int Tcl_Eof(Tcl_Channel chan) int Tcl_InputBlocked(Tcl_Channel chan) int Tcl_InputBuffered(Tcl_Channel chan) Tcl_Channel Tcl_OpenTcpClient(Tcl_Interp *interp, int port, char *address, char *myaddr, int myport, int async) Tcl_Channel Tcl_MakeTcpClientChannel(ClientData tcpSocket) Tcl_Channel Tcl_OpenTcpServer(Tcl_Interp *interp, int port, char *host, Tcl_TcpAcceptProc *acceptProc, ClientData callbackData) int Tcl_Ungets(Tcl_Channel chan, char *str, int len, int atHead) int Tcl_GetChannelMode(Tcl_Channel chan)
void Tcl_CreateEventSource(Tcl_EventSetupProc *setupProc, Tcl_EventCheckProc *checkProc, ClientData clientData) void Tcl_DeleteEventSource(Tcl_EventSetupProc *setupProc, Tcl_EventCheckProc *checkProc, ClientData clientData) void Tcl_SetMaxBlockTime(Tcl_Time *timePtr) void Tcl_QueueEvent(Tcl_Event *evPtr, Tcl_QueuePosition position) void Tcl_DeleteEvents(Tcl_EventDeleteProc *proc, ClientData clientData) int Tcl_WaitForEvent(Tcl_Time *timePtr) void Tcl_SetTimer(Tcl_Time *timePtr) int Tcl_ServiceAll(void) int Tcl_ServiceEvent(int flags) int Tcl_GetServiceMode(void) int Tcl_SetServiceMode(int mode)
char *Tcl_Alloc(int size) void Tcl_Free(char *ptr) char *Tcl_Realloc(char *ptr, int size) void Tcl_CreateFileHandler(int fd, int mask, Tcl_FileProc *proc, ClientData clientData) void Tcl_DeleteFileHandler(int fd) Tcl_TimerToken Tcl_CreateTimerHandler(int milliseconds, Tcl_TimerProc *proc, ClientData clientData) void Tcl_DeleteTimerHandler(Tcl_TimerToken token) Tcl_Trace Tcl_CreateTrace(Tcl_Interp *interp, int level, Tcl_CmdTraceProc *proc, ClientData clientData) void Tcl_DeleteTrace(Tcl_Interp *interp, Tcl_Trace trace) void Tcl_FindExecutable(char *argv0) int Tcl_PkgProvide(Tcl_Interp *interp, char *name, char *version) char *Tcl_PkgRequire(Tcl_Interp *interp, char *name, char *version, int exact) void Tcl_Preserve(ClientData data) void Tcl_Release(ClientData clientData) void Tcl_EventuallyFree(ClientData clientData, Tcl_FreeProc *freeProc) void Tcl_Sleep(int ms) void Tcl_SplitPath(char *path, int *argcPtr, char ***argvPtr) char *Tcl_JoinPath(int argc, char **argv, Tcl_DString *resultPtr) Tcl_PathT ype Tcl_GetPathType(char *path) void Tcl_Main(int argc, char **argv, Tcl_AppInitProc *appInitProc char *Tcl_TranslateFileName(Tcl_Interp *interp, char *name, Tcl_DString *bufferPtr)