Create an object at a given address: Difference between revisions

Content added Content deleted
(→‎Tcl: Added implementation)
m (→‎{{header|Tcl}}: make a bit easier to read, add comments)
Line 43: Line 43:
{{libheader|critcl}}
{{libheader|critcl}}
<lang tcl>package require critcl
<lang tcl>package require critcl

# A command to 'make an integer object' and couple it to a Tcl variable
critcl::cproc linkvar {Tcl_Interp* interp char* var1} int {
critcl::cproc linkvar {Tcl_Interp* interp char* var1} int {
int *intPtr = (int *) ckalloc(sizeof(int));
int *intPtr = (int *) ckalloc(sizeof(int));
Line 50: Line 52:
return (int) intPtr;
return (int) intPtr;
}
}

# A command to couple another Tcl variable to an 'integer object'; UNSAFE!
critcl::cproc linkagain(Tcl_Interp* interp int addr char* var2} void {
critcl::cproc linkagain(Tcl_Interp* interp int addr char* var2} void {
int *intPtr = (int *) addr;
int *intPtr = (int *) addr;

Tcl_LinkVar(interp, var2, (void *) intPtr, TCL_LINK_INT);
Tcl_LinkVar(interp, var2, (void *) intPtr, TCL_LINK_INT);
}
}

# Conventionally, programs that use critcl structure in packages
# This is used to prevent recompilation, especially on systems like Windows
package provide machAddrDemo 1</lang>
package provide machAddrDemo 1</lang>
Demonstrating:
Demonstrating: