nice...dodicat wrote:For fun your first post without static methods.The help file says for extern....end externCode: Select all
type QObject extends Object as string ClassName as integer ID end type type QStaticObject extends QObject static as QObject ptr AnObject declare function ID_get as integer declare sub ID_set(as integer) declare function ClassName_get as string declare sub ClassName_set(as string) declare operator let(as string) declare operator let(as integer) declare operator cast as string declare operator cast as integer declare operator cast as any ptr declare operator cast as QObject declare constructor end type declare function Id_get alias "_ZN13QSTATICOBJECT6ID_GETEv"(as QStaticObject) as integer #ifdef __FB_64BIT__ declare sub ID_set alias "_ZN13QSTATICOBJECT6ID_SETEu7INTEGER"(as QStaticObject,as integer) #else declare sub ID_set alias"_ZN13QSTATICOBJECT6ID_SETEl"(as QStaticObject,as integer) #endif declare function ClassName_get alias "_ZN13QSTATICOBJECT13CLASSNAME_GETEv"(as QStaticObject)as string declare sub ClassName_set alias "_ZN13QSTATICOBJECT13CLASSNAME_SETER8FBSTRING"(as QStaticObject,as string) dim QStaticObject.AnObject as QObject ptr constructor QStaticObject QStaticObject.AnObject=@this end constructor function QStaticObject.ID_get as integer return AnObject->id end function function QStaticObject.ClassName_get as string return AnObject->ClassName end function sub QStaticObject.ClassName_set(v as string) AnObject->ClassName=v end sub sub QStaticObject.ID_set(v as integer) AnObject->id=v end sub operator QStaticObject.let(v as string) classname=v end operator operator QStaticObject.let(v as integer) id=v end operator operator QStaticObject.cast as string return classname end operator operator QStaticObject.cast as integer return id end operator operator QStaticObject.cast as any ptr return @this end operator operator QStaticObject.cast as QObject return this end operator dim shared as QStaticObject so ? @id_get,@id_set ? QStaticObject.AnObject so.classname="dummy" so.id=1 ? so.classname ? so.id so.id_set(2) ? so.id so.classname="dummy" so.id=1 so.classname_set("dummy_1") ? so.classname classname_set(so,"dummy_static") ? so.classname,classname_get(so) dim shared as sub(as QStaticObject,as string) str_setter str_setter=@classname_set str_setter(so,"i've done folks...") ? so.classname,classname_get(so) so="Test_static_type" ? so so=10 ? so.id, id_get(so), qstaticobject sleep
Extern "C++" blocks are exactly like Extern "C" blocks but they also mangle the names declared within them in a way compatible to that of g++-4.x.
But using the C++ demangle :
#define demangle(s) shell "C++filt "+(s)
The demangled functions do not work in an extern "C++" block in fb.
type and static type
-
- Posts: 182
- Joined: Dec 18, 2018 16:37
- Location: Germany, Hessdorf
- Contact: