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 QNapi::Promise evalToPromiseOrRejectOnThrow(
66 const std::string &expr,
const std::vector<QNapi::ValueWrapper> &exprArgs = {});
68 template<
typename Enum>
69 QNapi::Number mapOhosEnumToJs(Enum enumValue);
71 template<
typename Enum>
72 std::optional<Enum> tryMapOhosEnumFromJs(QNapi::Number enumJsValue);
74 template<
typename Enum>
75 Enum mapOhosEnumFromJs(QNapi::Number enumJsValue);
80 std::string fullTypeName;
81 std::vector<std::pair<
int,
const char *>> enumeratorsNames;
87 template<
typename Enum,
typename =
void>
88 struct OhosEnumFullTypeNameFetcher
90 static std::string fullTypeName()
92 return QtOhos::OhosEnumMeta<Enum>::moduleName + std::string(
".") + QtOhos::OhosEnumMeta<Enum>::typeName;
96 template<
typename Enum>
97 struct OhosEnumFullTypeNameFetcher<Enum,
decltype(
static_cast<
void>(&QtOhos::OhosEnumMeta<Enum>::fullTypeName))>
99 static std::string fullTypeName()
101 return QtOhos::OhosEnumMeta<Enum>::fullTypeName;
105 template<
typename Enum>
106 static OhosEnumInfo makeOhosEnumInfo();
108 virtual std::tuple<QNapi::Object, std::string> extractModuleFromEvalExpr(
const std::string &expr) = 0;
109 virtual QNapi::Number mapOhosEnumToJs(
int enumValue,
const std::type_info &enumTypeInfo, OhosEnumInfo (*ohosEnumInfoFactory)()) = 0;
110 virtual std::optional<
int> tryMapOhosEnumFromJs(QNapi::Number enumJsValue,
const std::type_info &enumTypeInfo, OhosEnumInfo (*ohosEnumInfoFactory)()) = 0;
111 virtual int mapOhosEnumFromJs(QNapi::Number enumJsValue,
const std::type_info &enumTypeInfo, OhosEnumInfo (*ohosEnumInfoFactory)()) = 0;
142 virtual ~QOhosJsThreadOps();
144 virtual QOhosJsState &jsState() = 0;
146 virtual void invoke(std::function<
void(QOhosJsState &)> task) = 0;
147 virtual void invokeAndWaitForContinue(
148 std::function<
void(QOhosJsState &, std::function<
void()>)> &&task) = 0;
149 virtual void runAndWait(
const std::function<
void(QOhosJsState &)> &task) = 0;
151 static void registerInstance(QOhosJsThreadOps *ops);
152 static QOhosJsThreadOps &instance();