New UFO implementation does not affect building compound objects at run time.
This wasn’t implemented when I left SV. Proposed implementation would be more flexible in importing of the type information from existing objects and building it from the scratch. But programs using corresponding interfaces would have to us them and not assume how they are implemented in the RTL.
TQueueHeader GROUP,TYPE !
BufferPtr LONG ! +0h
FieldsDefPtr LONG ! +4h
QueRBlock LONG ! +8h
BufferSize SIGNED ! +0Ch
END
I assume this structure from DLIB and its code that gets or set a queue pointer structure is no longer valid?
A ; are you saying a recompiling of the client side code be required. IE a recompile of XLIB or DLIB code base…
“But programs using corresponding interfaces would have to us them and not assume how they are implemented in the RTL”
A ; are you saying there will be INTERFACES for creating runtime structures and the code bases from DLIB would have to be modified to use the new interfaces?
I wrote about the type descriptor - the 2nd field of the QUEUE control block. It was proposed to have such descriptor in another form. The QUEUECB itself remains unchanged. Though, if to think, it would be good to move last field (buffer size) to the second place. In this case, first 2 fields would be a correct &STRING value.
All old products working with type descriptors would become outdated. Program would require use a new interface.
I don’t know current plans of SV in this direction.
We have access via a business partnership to C++ engineering who are busy on creating a SQLITE binding to a scripting engine.
Would there be from SV an interface or multiple interfaces to set up the control blocks at runtime?
Setting up a Bindable external in the engine looks like this…
The engine is a factory where the OPS run like a production line factory not a traditional execution cycle.
bindNativeObject(“SQLLITE”, new SQLObject(this), PRI_STARTBLOCK, VARATTR_IMMEDIATE | VARATTR_ISOP);
I don’t know SV plans to implement it. The draft of the new type descriptor was described back in 2004. New types encoding was implemented in new UFO. It is now not just a byte with a type code.
Whether SV will implement and publish any interfaces, this is not a question for me.
TValueUFOHeader GROUP,TYPE !Size = 0Dh(13)
VMTPtr LONG !+00h VMT address
DataInfo REAL !+04h
LongValue LONG,OVER(DataInfo) !+04h
RealValue REAL,OVER(DataInfo) !+04h
GROUP,OVER(DataInfo) !+04h
StrValue &STRING !+04h
END
StrRef GROUP,OVER(DataInfo) !+04h
Addr LONG !+04h
Size UNSIGNED !+08h
END
Type BYTE !+0Ch
END
! NEW ONE without the TYPE as above.
TUFOHeader GROUP,TYPE !Max = 15h(21)
VMTPtr LONG !+00h VMT address
DataPtr LONG !+04h
Flags BYTE !+08h
DataInfo GROUP !+09h
Size UNSIGNED !+09h
REAL !+0Dh
END !
Decimal GROUP,OVER(DataInfo) !+09h DECIMAL è PDECIMAL
Size BYTE !+09h
Float BYTE !+0Ah
END !
Array GROUP,OVER(DataInfo) !+09h
BaseUFO LONG !+09h UFO
Dim LONG !+0Dh
END !
GrpInfo GROUP,OVER(DataInfo) !+09h
Size UNSIGNED !+09h
ClassDesc LONG !+0Dh
RecUFOs LONG !+11h
END !
END
Once again. Some changes to RTL internal structures have been made for the future. While these changes are not released in some CW version, nothing of current is old. But I don’t know SV plans for the future.
While some RTL internal code/data is not changed in the next CW version, all old hacks to work with that code/data remain working - if you consider them as working.
I See all current data types should continue therefore to work but not work any new types such as unicode.
“all old hacks to work with that code/data remain working”
ok we will test when the new versions arrive.
And if SV release the interface specification as asked by Bruce we can check to see if this current INTERFACE is up to date.
The following Group seems to be the latest extended version.
TUFOHeader GROUP,TYPE !Max = 15h(21)
VMTPtr LONG !+00h VMT address
DataPtr LONG !+04h
Flags BYTE !+08h
DataInfo GROUP !+09h
Size UNSIGNED !+09h
REAL !+0Dh
END !
Decimal GROUP,OVER(DataInfo) !+09h DECIMAL è PDECIMAL
Size BYTE !+09h
Float BYTE !+0Ah
END !
Array GROUP,OVER(DataInfo) !+09h
BaseUFO LONG !+09h UFO
Dim LONG !+0Dh
END !
GrpInfo GROUP,OVER(DataInfo) !+09h
Size UNSIGNED !+09h
ClassDesc LONG !+0Dh
RecUFOs LONG !+11h
END !
END