Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,27 @@
|
|||
link ximage
|
||||
|
||||
procedure main()
|
||||
c1 := foo(1,2) # instance of foo
|
||||
write("c1:\n",ximage(c1))
|
||||
c1 := extend(c1,["c","d"],[8,9]) # 2 new fields
|
||||
write("new c1:\n",ximage(c1))
|
||||
c1 := extend(c1,["e"],[7]) # 1 more
|
||||
write("newest c1:\n",ximage(c1))
|
||||
end
|
||||
|
||||
class foo(a,b) # dummy class
|
||||
end
|
||||
|
||||
procedure extend(instance,newvars,newvals) #: extend a class instance
|
||||
every put(f := [],fieldnames(instance)) # copy existing fieldnames
|
||||
c := ["tempconstructor"] ||| f # new constructor
|
||||
every put(c,!newvars) # append new vars
|
||||
t := constructor!c # new constructor
|
||||
x := t() # new instance
|
||||
every x[v := !f] := instance[v] # same as old instance
|
||||
x.__s := x # new self
|
||||
if \newvals then
|
||||
every i := 1 to min(*newvars,*newvals) do
|
||||
x[newvars[i]] := newvals[i] # add new vars = values
|
||||
return x
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue