52 QOhosJsState(
const QOhosJsState &) =
delete;
53 QOhosJsState &operator=(
const QOhosJsState &) =
delete;
55 virtual ~QOhosJsState();
57 virtual napi_env env() = 0;
59 virtual QNapi::Object defaultWindowStageOrEmpty() = 0;
60 virtual QNapi::Object defaultUiContextOrEmpty() = 0;
62 template<
typename T = QNapi::Value>
63 T eval(
const std::string &expr,
const std::vector<QNapi::ValueWrapper> &exprArgs = {});
65 template<
typename Enum>
66 QNapi::Number mapOhosEnumToJs(Enum enumValue);
68 template<
typename Enum>
69 std::optional<Enum> tryMapOhosEnumFromJs(QNapi::Number enumJsValue);
71 template<
typename Enum>
72 Enum mapOhosEnumFromJs(QNapi::Number enumJsValue);
77 std::string fullTypeName;
78 std::vector<std::pair<
int,
const char *>> enumeratorsNames;
84 template<
typename Enum,
typename =
void>
85 struct OhosEnumFullTypeNameFetcher
87 static std::string fullTypeName()
89 return QtOhos::OhosEnumMeta<Enum>::moduleName + std::string(
".") + QtOhos::OhosEnumMeta<Enum>::typeName;
93 template<
typename Enum>
94 struct OhosEnumFullTypeNameFetcher<Enum,
decltype(
static_cast<
void>(&QtOhos::OhosEnumMeta<Enum>::fullTypeName))>
96 static std::string fullTypeName()
98 return QtOhos::OhosEnumMeta<Enum>::fullTypeName;
102 template<
typename Enum>
103 static OhosEnumInfo makeOhosEnumInfo();
105 virtual std::tuple<QNapi::Object, std::string> extractModuleFromEvalExpr(
const std::string &expr) = 0;
106 virtual QNapi::Number mapOhosEnumToJs(
int enumValue,
const std::type_info &enumTypeInfo, OhosEnumInfo (*ohosEnumInfoFactory)()) = 0;
107 virtual std::optional<
int> tryMapOhosEnumFromJs(QNapi::Number enumJsValue,
const std::type_info &enumTypeInfo, OhosEnumInfo (*ohosEnumInfoFactory)()) = 0;
108 virtual int mapOhosEnumFromJs(QNapi::Number enumJsValue,
const std::type_info &enumTypeInfo, OhosEnumInfo (*ohosEnumInfoFactory)()) = 0;
139 virtual ~QOhosJsThreadOps();
141 virtual QOhosJsState &jsState() = 0;
143 virtual void invoke(std::function<
void(QOhosJsState &)> task) = 0;
144 virtual void invokeAndWaitForContinue(
145 std::function<
void(QOhosJsState &, std::function<
void()>)> &&task) = 0;
146 virtual void runAndWait(
const std::function<
void(QOhosJsState &)> &task) = 0;
148 static void registerInstance(QOhosJsThreadOps *ops);
149 static QOhosJsThreadOps &instance();