Skip to content

Instantly share code, notes, and snippets.

@osnr
Created March 11, 2025 01:36
Show Gist options
  • Save osnr/98a344ae8ea9cae8f436c45df4080204 to your computer and use it in GitHub Desktop.
Save osnr/98a344ae8ea9cae8f436c45df4080204 to your computer and use it in GitHub Desktop.
package require oo
set block {
class C {
procs {}
}
}
set tmp [file tempfile /tmp/blockXXXXXX].tcl
set fd [open $tmp w]; puts $fd $block; close $fd
eval [read [open $tmp r]]
C method proc {name arguments rtype body} {
if {[dict exists $procs $name]} { error "C proc: Name collision: $name" }
puts "1: proc($name): [dict get [$self classvars] procs]"
dict set procs $name rtype $rtype
}
set cc [C]
$cc method insts {} {
uplevel set instvars
}
puts "cc is $cc"
$cc proc addify {int a int b} int {
return a + b;
}
puts "GOT: [dict get [::<reference.<C______>.00000000000000000000> classvars] procs]"
__exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment