Redesign Embind UNO Any construction

...taking a full UNO Type instead of just a UNO Type class (so that it will be
able to construct Any containing sequence, enum, struct, exception, and
interface, in later steps); moving the Type argument first (as that looks more
natural), and renaming from Any to uno_Any (in line with the other uno_Type,
uno_Sequence_..., etc.)

Change-Id: I154681c4b9187f5f5d037d503652fe7bcd41adcd
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164593
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
This commit is contained in:
Stephan Bergmann
2024-03-08 22:45:11 +01:00
parent ad7963f939
commit 80bb8c666f
3 changed files with 31 additions and 27 deletions
+2 -1
View File
@@ -248,7 +248,8 @@ while (xParaEnumeration.hasMoreElements()) {
xParagraph = new css.text.XTextRange(xParaEnumeration.nextElement(), Module.uno_Reference.FromAny);
if (xParagraph.$is()) {
xParaProps = new css.beans.XPropertySet(xParagraph.$query());
let color = new Module.Any(Math.floor(Math.random() * 0xFFFFFF), css.uno.TypeClass.LONG);
let color = new Module.uno_Any(
Module.uno_Type.Long(), Math.floor(Math.random() * 0xFFFFFF));
xParaProps.setPropertyValue("CharColor", color);
color.delete();
}
@@ -248,9 +248,9 @@ EMSCRIPTEN_BINDINGS(PrimaryBindings)
});
// Any
class_<Any>("Any")
.constructor(+[](const val& rObject, const TypeClass& rUnoType) -> Any {
switch (rUnoType)
class_<Any>("uno_Any")
.constructor(+[](const css::uno::Type& rUnoType, const val& rObject) -> Any {
switch (rUnoType.getTypeClass())
{
case TypeClass_VOID:
return {};
+26 -23
View File
@@ -112,7 +112,7 @@ Module.addOnPostRun(function() {
console.assert(v.get() === undefined);
console.assert(test.isAnyVoid(v));
v.delete();
let a = new Module.Any(undefined, css.uno.TypeClass.VOID);
let a = new Module.uno_Any(Module.uno_Type.Void(), undefined);
console.assert(test.isAnyVoid(a));
a.delete();
}
@@ -122,7 +122,7 @@ Module.addOnPostRun(function() {
console.assert(v.get() === true);
console.assert(test.isAnyBoolean(v));
v.delete();
let a = new Module.Any(true, css.uno.TypeClass.BOOLEAN);
let a = new Module.uno_Any(Module.uno_Type.Boolean(), true);
console.assert(test.isAnyBoolean(a));
a.delete();
}
@@ -132,7 +132,7 @@ Module.addOnPostRun(function() {
console.assert(v.get() === -12);
console.assert(test.isAnyByte(v));
v.delete();
let a = new Module.Any(-12, css.uno.TypeClass.BYTE);
let a = new Module.uno_Any(Module.uno_Type.Byte(), -12);
console.assert(test.isAnyByte(a));
a.delete();
}
@@ -142,7 +142,7 @@ Module.addOnPostRun(function() {
console.assert(v.get() === -1234);
console.assert(test.isAnyShort(v));
v.delete();
let a = new Module.Any(-1234, css.uno.TypeClass.SHORT);
let a = new Module.uno_Any(Module.uno_Type.Short(), -1234);
console.assert(test.isAnyShort(a));
a.delete();
}
@@ -152,7 +152,7 @@ Module.addOnPostRun(function() {
console.assert(v.get() === 54321);
console.assert(test.isAnyUnsignedShort(v));
v.delete();
let a = new Module.Any(54321, css.uno.TypeClass.UNSIGNED_SHORT);
let a = new Module.uno_Any(Module.uno_Type.UnsignedShort(), 54321);
console.assert(test.isAnyUnsignedShort(a));
a.delete();
}
@@ -162,7 +162,7 @@ Module.addOnPostRun(function() {
console.assert(v.get() === -123456);
console.assert(test.isAnyLong(v));
v.delete();
let a = new Module.Any(-123456, css.uno.TypeClass.LONG);
let a = new Module.uno_Any(Module.uno_Type.Long(), -123456);
console.assert(test.isAnyLong(a));
a.delete();
}
@@ -172,7 +172,7 @@ Module.addOnPostRun(function() {
console.assert(v.get() === 3456789012);
console.assert(test.isAnyUnsignedLong(v));
v.delete();
let a = new Module.Any(3456789012, css.uno.TypeClass.UNSIGNED_LONG);
let a = new Module.uno_Any(Module.uno_Type.UnsignedLong(), 3456789012);
console.assert(test.isAnyUnsignedLong(a));
a.delete();
}
@@ -182,7 +182,7 @@ Module.addOnPostRun(function() {
console.assert(v.get() === -123456789n);
console.assert(test.isAnyHyper(v));
v.delete();
let a = new Module.Any(-123456789n, css.uno.TypeClass.HYPER);
let a = new Module.uno_Any(Module.uno_Type.Hyper(), -123456789n);
console.assert(test.isAnyHyper(a));
a.delete();
}
@@ -192,7 +192,7 @@ Module.addOnPostRun(function() {
console.assert(v.get() === 9876543210n);
console.assert(test.isAnyUnsignedHyper(v));
v.delete();
let a = new Module.Any(9876543210n, css.uno.TypeClass.UNSIGNED_HYPER);
let a = new Module.uno_Any(Module.uno_Type.UnsignedHyper(), 9876543210n);
console.assert(test.isAnyUnsignedHyper(a));
a.delete();
}
@@ -202,7 +202,7 @@ Module.addOnPostRun(function() {
console.assert(v.get() === -10.25);
console.assert(test.isAnyFloat(v));
v.delete();
let a = new Module.Any(-10.25, css.uno.TypeClass.FLOAT);
let a = new Module.uno_Any(Module.uno_Type.Float(), -10.25);
console.assert(test.isAnyFloat(a));
a.delete();
}
@@ -212,7 +212,7 @@ Module.addOnPostRun(function() {
console.assert(v.get() === 100.5);
console.assert(test.isAnyDouble(v));
v.delete();
let a = new Module.Any(100.5, css.uno.TypeClass.DOUBLE);
let a = new Module.uno_Any(Module.uno_Type.Double(), 100.5);
console.assert(test.isAnyDouble(a));
a.delete();
}
@@ -222,7 +222,7 @@ Module.addOnPostRun(function() {
console.assert(v.get() === 'Ö');
console.assert(test.isAnyChar(v));
v.delete();
let a = new Module.Any('Ö', css.uno.TypeClass.CHAR);
let a = new Module.uno_Any(Module.uno_Type.Char(), 'Ö');
console.assert(test.isAnyChar(a));
a.delete();
}
@@ -232,7 +232,7 @@ Module.addOnPostRun(function() {
console.assert(v.get() === 'hä');
console.assert(test.isAnyString(v));
v.delete();
let a = new Module.Any('hä', css.uno.TypeClass.STRING);
let a = new Module.uno_Any(Module.uno_Type.String(), 'hä');
console.assert(test.isAnyString(a));
a.delete();
}
@@ -242,7 +242,7 @@ Module.addOnPostRun(function() {
console.assert(v.get().toString() === 'long');
console.assert(test.isAnyType(v));
v.delete();
//TODO: let a = new Module.Any(Module.uno_Type.Long(), css.uno.TypeClass.TYPE);
//TODO: let a = new Module.uno_Any(Module.uno_Type.Type(), Module.uno_Type.Long());
//TODO: console.assert(test.isAnyType(a));
//TODO: a.delete();
}
@@ -258,7 +258,7 @@ Module.addOnPostRun(function() {
console.assert(test.isAnySequence(v));
v.delete();
let s = new Module.uno_Sequence_string(["foo", "barr", "bazzz"]);
//TODO: let a = new Module.Any(s, css.uno.TypeClass.SEQUENCE);
//TODO: let a = new Module.uno_Any(Module.uno_Type.Sequence(Module.uno_Type.String()), s);
//TODO: console.assert(test.isAnySequence(a));
//TODO: a.delete();
s.delete();
@@ -269,8 +269,9 @@ Module.addOnPostRun(function() {
console.assert(v.get() === uno.org.libreoffice.embindtest.Enum.E_2);
console.assert(test.isAnyEnum(v));
v.delete();
//TODO: let a = new Module.Any(
//TODO: uno.org.libreoffice.embindtest.Enum.E_2, css.uno.TypeClass.ENUM);
//TODO: let a = new Module.uno_Any(
//TODO: Module.uno_Type.Enum('org.libreoffice.embindtest.Enum'),
//TODO: uno.org.libreoffice.embindtest.Enum.E_2);
//TODO: console.assert(test.isAnyEnum(a));
//TODO: a.delete();
}
@@ -282,8 +283,9 @@ Module.addOnPostRun(function() {
console.assert(v.get().m3 === 'hä');
console.assert(test.isAnyStruct(v));
v.delete();
//TODO: let a = new Module.Any(
//TODO: {m1: -123456, m2: 100.5, m3: 'hä'}, css.uno.TypeClass.STRUCT);
//TODO: let a = new Module.uno_Any(
//TODO: Module.uno_Type.Struct('org.libreoffice.embindtest.Struct'),
//TODO: {m1: -123456, m2: 100.5, m3: 'hä'});
//TODO: console.assert(test.isAnyStruct(a));
//TODO: a.delete();
}
@@ -297,9 +299,9 @@ Module.addOnPostRun(function() {
console.assert(v.get().m3 === 'hä');
console.assert(test.isAnyException(v));
v.delete();
//TODO: let a = new Module.Any(
//TODO: {Message: 'error', Context: null, m1: -123456, m2: 100.5, m3: 'hä'},
//TODO: css.uno.TypeClass.EXCEPTION);
//TODO: let a = new Module.uno_Any(
//TODO: Module.uno_Type.Exception('org.libreoffice.embindtest.Exception'),
//TODO: {Message: 'error', Context: null, m1: -123456, m2: 100.5, m3: 'hä'});
//TODO: console.assert(test.isAnyException(a));
//TODO: a.delete();
}
@@ -309,7 +311,8 @@ Module.addOnPostRun(function() {
console.assert(v.get().$equals(test.$query()));
console.assert(test.isAnyInterface(v));
v.delete();
//TODO: let a = new Module.Any(test, css.uno.TypeClass.INTERFACE);
//TODO: let a = new Module.uno_Any(
//TODO: Module.uno_Type.Inteface('org.libreoffice.embindtest.Test'), test);
//TODO: console.assert(test.isAnyInterface(a));
//TODO: a.delete();
}