Code: Select all
type QObject extends Object
as string ClassName
as integer ID
end type
type QStaticObject extends QObject
static as QObject ptr AnObject
declare static function ID_get as integer
declare static sub ID_set(as integer)
declare static function ClassName_get as string
declare static 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
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
? @QStaticObject.id_get,@QStaticObject.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
QStaticObject.classname_set("dummy_static")
? so.classname,QStaticObject.classname_get
dim shared as sub(as string) str_setter
str_setter=@QStaticObject.classname_set
str_setter("i've done men...")
? so.classname,QStaticObject.classname_get
so="Test_static_type"
? so
so=10
? so.id, qstaticobject.id_get, qstaticobject
sleep