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: |