Code: Select all
Structure _str
vt.i
id.i
name.s
EndStructure
Interface obj
getID()
getName.s()
setName(name.s)
EndInterface
Procedure getID(*c._str)
ProcedureReturn *c\id
EndProcedure
Procedure.s getName(*c._str)
ProcedureReturn *c\name
EndProcedure
Procedure setName(*c._str,name.s)
*c\name=name
EndProcedure
Procedure newObj(Map m.obj())
id=AllocateMemory(1)
*c._str=AddMapElement(m(),Str(id))
*c\vt=?vt
*c\id=id
ProcedureReturn id
EndProcedure
Procedure getObj(id,Map m.obj())
ProcedureReturn FindMapElement(m(),Str(id))
EndProcedure
DataSection
vt:
Data.i @getID()
Data.i @getName()
Data.i @setName()
EndDataSection
NewMap x.obj()
oID=newObj(x())
*o.obj=getObj(oID,x())
*o\setName("Test Object")
;--------------------------------------------------------------
;THIS WORKS
;--------------------------------------------------------------
Debug Str(*o\getID())+" = "+*o\getName()
;--------------------------------------------------------------
;THIS DOES NOT
;--------------------------------------------------------------
ForEach x()
Debug Str(x()\getID())+" = "+x()\getName()
Next
;--------------------------------------------------------------
;NEITHER DOES THIS (WITH EITHER VARIATION)
;--------------------------------------------------------------
ForEach x()
*o.obj=x()
;CopyStructure(x(),*o,obj)
Debug Str(*o\getID())+" = "+*o\getName()
Next