dim var as new
string”The introduction of polymorphic struct types into UNO (see Increasing UNO Ease of Use) has lead to the addition of a new feature to BASIC (on SRC680 CWS sb18).
The existing feature “dim var as new
type”, where type is the name of
a UNO struct type (see
UNO Type System), can be used to create in BASIC instances
of UNO struct types. This syntax only works for plain UNO struct types, though.
To also support the new instantiated polymorphic UNO struct types,
type can now be replaced with a string literal that
gives the UNO name of an arbitrary UNO struct type. Examples:
rem new syntax for instantiated polymorphic struct
types:
dim x as new "com.sun.star.beans.Optional<long>"
rem (circuitous) new syntax for plain struct types:
dim y as new "com.sun.star.beans.PropertyValue"
rem old syntax for plain struct types:
dim z as new com.sun.star.beans.PropertyValue
One problem for BASIC programmers might be that such a string literal has to
be a UNO type name, which is rather unrelated to a BASIC type name. For
example, the com.sun.star.beans.Optional type instantiated over
UNO's short type (an integral type corresponding to BASIC's
integer) has to be named
"com.sun.star.beans.Optional<short>", not
"com.sun.star.beans.Optional<integer>".
The main need to operate on instantiated polymorphic UNO struct types in
BASIC will arise once designers of UNO APIs start to use the new features of
extended interface type attributes, which leverage the three new polymorphic UNO
struct type templates com.sun.star.beans.Ambigious,
com.sun.star.beans.Defaulted, and
com.sun.star.beans.Optional. (If it turns out then that this new
syntax is too awkward to use for the average BASIC programmer, it might be
extended.)