1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
/* struct::tree - critcl - global declarations
*/
#include <global.h>
#include <util.h>
static void release (ClientData cd, Tcl_Interp* interp);
#define KEY "tcllib/struct::graph/critcl"
/* .................................................. */
const char*
gg_new (Tcl_Interp* interp)
{
Tcl_InterpDeleteProc* proc = release;
GG* gg = Tcl_GetAssocData (interp, KEY, &proc);
if (gg == NULL) {
gg = ALLOC (GG);
gg->counter = 0;
Tcl_SetAssocData (interp, KEY, proc, (ClientData) gg);
}
gg->counter ++;
sprintf (gg->buf, "graph%" TCL_SIZE_MODIFIER "d", gg->counter);
return gg->buf;
}
/* .................................................. */
static void
release (ClientData cd, Tcl_Interp* interp)
{
/* ClientData cd <=> GG* gg */
ckfree((char*) cd);
}
/* .................................................. */
/*
* Local Variables:
* mode: c
* c-basic-offset: 4
* fill-column: 78
* End:
*/
|