diff options
Diffstat (limited to 'generic/ttk/ttkStubLib.c')
-rw-r--r-- | generic/ttk/ttkStubLib.c | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/generic/ttk/ttkStubLib.c b/generic/ttk/ttkStubLib.c new file mode 100644 index 0000000..e13abde --- /dev/null +++ b/generic/ttk/ttkStubLib.c @@ -0,0 +1,69 @@ +/* + * $Id: ttkStubLib.c,v 1.1 2006/10/31 01:42:26 hobbs Exp $ + * SOURCE: tk/generic/tkStubLib.c, version 1.9 2004/03/17 + */ + +#include "tk.h" + +#define USE_TTK_STUBS 1 +#include "ttkTheme.h" + +const TtkStubs *ttkStubsPtr; + +/* + *---------------------------------------------------------------------- + * + * TtkInitializeStubs -- + * Load the Ttk package, initialize stub table pointer. + * Do not call this function directly, use Ttk_InitStubs() macro instead. + * + * Results: + * The actual version of the package that satisfies the request, or + * NULL to indicate that an error occurred. + * + * Side effects: + * Sets the stub table pointer. + * + */ +const char *TtkInitializeStubs( + Tcl_Interp *interp, const char *version, int epoch, int revision) +{ + int exact = 0; + const char *packageName = "Ttk"; + const char *errMsg = NULL; + ClientData pkgClientData = NULL; + const char *actualVersion= Tcl_PkgRequireEx( + interp, packageName, version, exact, &pkgClientData); + TtkStubs *stubsPtr = pkgClientData; + + if (!actualVersion) { + return NULL; + } + + if (!stubsPtr) { + errMsg = "missing stub table pointer"; + goto error; + } + if (stubsPtr->epoch != epoch) { + errMsg = "epoch number mismatch"; + goto error; + } + if (stubsPtr->revision < revision) { + errMsg = "require later revision"; + goto error; + } + + ttkStubsPtr = stubsPtr; + return actualVersion; + +error: + Tcl_ResetResult(interp); + Tcl_AppendResult(interp, + "Error loading ", packageName, " package", + " (requested version '", version, + "', loaded version '", actualVersion, "'): ", + errMsg, + NULL); + return NULL; +} + |