Group Listing of Functions

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 Objects

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[])

Interpreters and Script Evaluation

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)

Creating New Tcl Commands

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)

Initialization and Packages

int Tcl_AppInit(Tcl_Interp *interp)
int Tcl_Init(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)

Accessing Tcl Variables

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)

Hash Tables

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)

String Utilities

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)

POSIX Utilities

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)

Notifier and Events

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)

Get Tcl/Tk in a Nutshell now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.