34 qDebug() <<
"Now registering the Enums:: enums for pappsomspp";
39 const QMetaObject *metaObject = &Enums::staticMetaObject;
40 if(metaObject ==
nullptr)
41 qFatal() <<
"Programming error. Failed to obtain &Enums::staticMetaObject";
43 qDebug() <<
"Found namespace Enums with full name:" << metaObject->className();
45 QJSValue libraryJsRootProperty;
47 if(engine->globalObject().hasProperty(
"pappsomspp"))
50 libraryJsRootProperty = engine->globalObject().property(
"pappsomspp");
56 libraryJsRootProperty = engine->newObject();
60 QJSValue all_js_enums = engine->newObject();
63 for(
int i = 0; i < metaObject->enumeratorCount(); ++i)
65 QMetaEnum iter_meta_enum = metaObject->enumerator(i);
69 QJSValue single_js_enum = engine->newObject();
71 for(
int j = 0; j < iter_meta_enum.keyCount(); ++j)
77 single_js_enum.setProperty(iter_meta_enum.key(j), iter_meta_enum.value(j));
81 all_js_enums.setProperty(iter_meta_enum.enumName(), single_js_enum);
85 libraryJsRootProperty.setProperty(
"Enums", all_js_enums);
87 engine->globalObject().setProperty(
"pappsomspp", libraryJsRootProperty);
92 <<
"Now checking for correct exposition of Enums::enum::<key/value> pairs.";
95 engine->globalObject().property(
"pappsomspp").property(
"Enums");
97 if(jsEnums.isUndefined())
99 qDebug() <<
"Error: pappsomspp.Enums not found!";
104 qDebug() <<
"pappsomspp.Enums JS object exists";
108 engine->evaluate(
"Object.getOwnPropertyNames(pappsomspp.Enums)");
110 if(propNames.isError())
112 qDebug() <<
"JS Error:" << propNames.toString();
117 QStringList enumNames = propNames.toVariant().toStringList();
118 for(
const QString &enumName : enumNames)
120 QJSValue jsEnum = jsEnums.property(enumName);
122 if(!jsEnum.isObject())
124 qDebug() <<
"Skipping non-object property:" << enumName;
128 qDebug() <<
"\nChecking enum:" << enumName;
131 QJSValue enumKeys = engine->evaluate(
132 QString(
"Object.getOwnPropertyNames(libXpertMass.Enums.%1)")
135 if(enumKeys.isError())
137 qDebug() <<
" JS Error:" << enumKeys.toString();
142 QStringList keys = enumKeys.toVariant().toStringList();
143 for(
const QString &key : keys)
145 QJSValue value = jsEnum.property(key);
146 qDebug() <<
" " << key <<
"=" << value.toInt();
147 qDebug().noquote() <<
"\nChecked enum: " << enumName <<
"member ("
148 << key <<
" / " << value.toInt() <<
")";