Ясно, вроде понял, что требуется.
Тип в Blitz3D создаётся одновременно с листом (списком).
Структура B3D Type в BlitzMax:
Type TBBType
Field _list:TList
Field _link:TLink
Method Add(t:TList)
_list=t
_link=_list.AddLast(self)
End Method
Method InsertBefore(t:TBBType)
_link.Remove
_link=_list.InsertBeforeLink(self,t._link)
End Method
Method InsertAfter(t:TBBType)
_link.Remove
_link=_list.InsertAfterLink(self,t._link)
End Method
Method Remove()
_list.remove self
End Method
EndType
Function DeleteLast(t:TBBType)
if t TBBType(t._list.Last()).Remove()
EndFunction
Function DeleteFirst(t:TBBType)
if t TBBType(t._list.First()).Remove()
EndFunction
Function DeleteEach(t:TBBType)
if t t._list.Clear()
EndFunction
Function HandleToObject:Object(obj:Object)
Return obj
EndFunction
Function HandleFromObject(obj:Object)
Local h=HandleToObject(obj)
Return h
EndFunction
Из исходника видно, что тип в B3D состоит из ссылки на обьект(TLink)
и листа (TList). При создании нового экземпляра нужного нам типа он сразу заносится в лист предназначеный для данного типа.
Дополнительные поля (Field) добавляем используя наследование.
Ссылки на обьекты хрянятся в листе.
У обьектов есть лист, который хранит ссылки на обьекты-поля.
Дык всётаки на какой язык нужно перебросить код?
На фортран чтоли? Я не понимаю.