B
This commit is contained in:
parent
e5e8880e41
commit
518da4a923
1019 changed files with 15877 additions and 0 deletions
|
|
@ -0,0 +1,31 @@
|
|||
INSTALL @lib$+"CLASSLIB"
|
||||
|
||||
REM Create a base class with no members:
|
||||
DIM class{method}
|
||||
PROC_class(class{})
|
||||
|
||||
REM Instantiate the class:
|
||||
PROC_new(myobject{}, class{})
|
||||
|
||||
REM Add a member at run-time:
|
||||
member$ = "mymember#"
|
||||
PROCaddmember(myobject{}, member$, 8)
|
||||
|
||||
REM Test that the member can be accessed:
|
||||
PROCassign("myobject." + member$, "PI")
|
||||
PRINT EVAL("myobject." + member$)
|
||||
END
|
||||
|
||||
DEF PROCaddmember(RETURN obj{}, mem$, size%)
|
||||
LOCAL D%, F%, P%
|
||||
DIM D% DIM(obj{}) + size% - 1, F% LEN(mem$) + 8
|
||||
P% = !^obj{} + 4
|
||||
WHILE !P% : P% = !P% : ENDWHILE : !P% = F%
|
||||
$$(F%+4) = mem$ : F%!(LEN(mem$) + 5) = DIM(obj{})
|
||||
!(^obj{} + 4) = D%
|
||||
ENDPROC
|
||||
|
||||
DEF PROCassign(v$, n$)
|
||||
IF EVAL("FNassign(" + v$ + "," + n$ + ")")
|
||||
ENDPROC
|
||||
DEF FNassign(RETURN n, v) : n = v : = 0
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
( ( struktuur
|
||||
= (aMember=) (aMethod=.!(its.aMember))
|
||||
)
|
||||
& new$struktuur:?object
|
||||
& out$"Object as originally created:"
|
||||
& lst$object
|
||||
& A value:?(object..aMember)
|
||||
& !object:(=?originalMembersAndMethods)
|
||||
& new
|
||||
$ (
|
||||
' ( (anotherMember=)
|
||||
(anotherMethod=.!(its.anotherMember))
|
||||
()$originalMembersAndMethods
|
||||
)
|
||||
)
|
||||
: ?object
|
||||
& out
|
||||
$ "
|
||||
Object with additional member and method and with 'aMember' already set to some interesting value:"
|
||||
& lst$object
|
||||
& some other value:?(object..anotherMember)
|
||||
& out$"
|
||||
Call both methods and output their return values."
|
||||
& out$("aMember contains:" (object..aMethod)$)
|
||||
& out$("anotherMember contains:" (object..anotherMethod)$)
|
||||
&);
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
Object as originally created:
|
||||
(object=
|
||||
=(aMember=) (aMethod=.!(its.aMember)));
|
||||
|
||||
Object with additional member and method and with 'aMember' already set to some interesting value:
|
||||
(object=
|
||||
|
||||
= (anotherMember=)
|
||||
(anotherMethod=.!(its.anotherMember))
|
||||
(aMember=A value)
|
||||
(aMethod=.!(its.aMember)));
|
||||
|
||||
Call both methods and output their return values.
|
||||
aMember contains: A value
|
||||
anotherMember contains: some other value
|
||||
Loading…
Add table
Add a link
Reference in a new issue