@@ -19,83 +19,84 @@ template<typename> struct _js_ReadonlyArray;
19
19
template <typename > struct _js_Promise ;
20
20
struct _js_console ;
21
21
22
- template <typename T> using Array = jst::js_ref<_js_Array<T>>;
23
- template <typename T> using ReadonlyArray = jst::js_ref<_js_ReadonlyArray<T>>;
24
- template <typename T> using Promise = jst::js_ref<_js_Promise<T>>;
25
- using console = jst::js_ref<_js_console>;
22
+ template <typename T> using Array = ::tc:: jst::js_ref<_js_Array<T>>;
23
+ template <typename T> using ReadonlyArray = ::tc:: jst::js_ref<_js_ReadonlyArray<T>>;
24
+ template <typename T> using Promise = ::tc:: jst::js_ref<_js_Promise<T>>;
25
+ using console = ::tc:: jst::js_ref<_js_console>;
26
26
27
27
template <typename T>
28
- struct _js_Array : virtual jst::IObject {
29
- static_assert (jst::IsJsInteropable<T>::value);
28
+ struct _js_Array : virtual ::tc:: jst::IObject {
29
+ static_assert (::tc:: jst::IsJsInteropable<T>::value);
30
30
31
31
struct _tcjs_definitions {
32
32
using value_type = T;
33
33
};
34
34
35
- auto length () noexcept { return tc::explicit_cast<int >(_getProperty<double >(" length" )); }
35
+ auto length () noexcept { return :: tc::explicit_cast<int >(_getProperty<double >(" length" )); }
36
36
37
37
auto push (T const & item) noexcept { return _call<void >(" push" , item); }
38
38
39
- auto operator [](int i) && noexcept { return _getProperty<T>(tc::as_dec (i)); }
39
+ auto operator [](int i) && noexcept { return _getProperty<T>(:: tc::as_dec (i)); }
40
40
41
- void _setIndex (int i, T value) noexcept { _setProperty (tc::as_dec (i), tc_move (value)); }
41
+ void _setIndex (int i, T value) noexcept { _setProperty (:: tc::as_dec (i), tc_move (value)); }
42
42
43
43
// Generator range. This adds operator() to array interface (which did not exist before), but it's ok.
44
44
template <typename Fn>
45
45
auto operator ()(Fn fn) noexcept {
46
- if (_call<bool >(" some" , jst::js_lambda_wrap ([&](T value, jst::js_unknown, jst::js_unknown) noexcept {
47
- return tc::break_ == tc::continue_if_not_break (fn, tc_move (value));
46
+ if (_call<bool >(" some" , :: tc:: jst::js_lambda_wrap ([&](T value, ::tc:: jst::js_unknown, ::tc:: jst::js_unknown) noexcept {
47
+ return :: tc::break_ == tc::continue_if_not_break (fn, tc_move (value));
48
48
})))
49
- return tc::break_;
49
+ return :: tc::break_;
50
50
else
51
- return tc::continue_;
51
+ return :: tc::continue_;
52
52
}
53
53
54
54
static Array<T> _tcjs_construct () noexcept {
55
- return Array<T>(emscripten::val::array ());
55
+ return Array<T>(:: emscripten::val::array ());
56
56
}
57
57
58
- template <typename Rng, typename = std::enable_if_t <tc::is_explicit_castable<T, tc::range_value_t <Rng>&& >::value>>
58
+ template <typename Rng, typename = :: std::enable_if_t <:: tc::is_explicit_castable<T, :: tc::range_reference_t <Rng>>::value>>
59
59
static Array<T> _tcjs_construct (Rng&& rng) noexcept {
60
- Array<T> result (emscripten::val::array ());
61
- tc::for_each (rng, [&](auto && value) noexcept {
62
- result->push (tc::explicit_cast<T>(std::forward<decltype (value)>(value)));
60
+ Array<T> result (:: emscripten::val::array ());
61
+ :: tc::for_each (::std::forward<Rng>( rng) , [&](auto && value) noexcept {
62
+ result->push (:: tc::explicit_cast<T>(:: std::forward<decltype (value)>(value)));
63
63
});
64
64
return result;
65
65
}
66
+
66
67
};
67
68
68
69
template <typename T>
69
- struct _js_ReadonlyArray : virtual jst::IObject {
70
- static_assert (jst::IsJsInteropable<T>::value);
70
+ struct _js_ReadonlyArray : virtual ::tc:: jst::IObject {
71
+ static_assert (::tc:: jst::IsJsInteropable<T>::value);
71
72
72
73
struct _tcjs_definitions {
73
74
using value_type = T;
74
75
};
75
76
76
- auto length () noexcept { return tc::explicit_cast<int >(_getProperty<double >(" length" )); }
77
+ auto length () noexcept { return :: tc::explicit_cast<int >(_getProperty<double >(" length" )); }
77
78
78
- auto operator [](int i) noexcept { return _getProperty<T>(tc::as_dec (i)); }
79
+ auto operator [](int i) noexcept { return _getProperty<T>(:: tc::as_dec (i)); }
79
80
80
81
// Generator range. This adds operator() to array interface (which did not exist before), but it's ok.
81
82
template <typename Fn>
82
83
auto operator ()(Fn fn) noexcept {
83
- if (_call<bool >(" some" , jst::js_lambda_wrap ([&](T value, jst::js_unknown, jst::js_unknown) noexcept {
84
- return tc::break_ == tc::continue_if_not_break (fn, tc_move (value));
84
+ if (_call<bool >(" some" , :: tc:: jst::js_lambda_wrap ([&](T value, ::tc:: jst::js_unknown, ::tc:: jst::js_unknown) noexcept {
85
+ return :: tc::break_ == :: tc::continue_if_not_break (fn, tc_move (value));
85
86
})))
86
- return tc::break_;
87
+ return :: tc::break_;
87
88
else
88
- return tc::continue_;
89
+ return :: tc::continue_;
89
90
}
90
91
91
92
static ReadonlyArray<T> _tcjs_construct () noexcept {
92
- return ReadonlyArray<T>(emscripten::val::array ());
93
+ return ReadonlyArray<T>(:: emscripten::val::array ());
93
94
}
94
95
95
- template <typename Rng, typename = std::enable_if_t <tc::is_explicit_castable<T, tc::range_value_t <Rng>&& >::value>>
96
+ template <typename Rng, typename = :: std::enable_if_t <:: tc::is_explicit_castable<T, :: tc::range_reference_t <Rng>>::value>>
96
97
static ReadonlyArray<T> _tcjs_construct (Rng&& rng) noexcept {
97
98
return ReadonlyArray<T>(
98
- Array<T>(jst::create_js_object, std::forward<Rng>(rng)).getEmval ()
99
+ Array<T>(::tc:: jst::create_js_object, :: std::forward<Rng>(rng)).getEmval ()
99
100
);
100
101
}
101
102
};
@@ -105,36 +106,54 @@ template<typename T> struct RemovePromise<Promise<T>> { using type = T; };
105
106
template <typename T> using RemovePromise_t = typename RemovePromise<T>::type;
106
107
107
108
template <typename T>
108
- struct _js_Promise : virtual jst::IObject {
109
- static_assert (jst::IsJsInteropable<T>::value);
109
+ struct _js_Promise : virtual ::tc:: jst::IObject {
110
+ static_assert (::tc:: jst::IsJsInteropable<T>::value);
110
111
111
112
template <typename R>
112
- auto then (jst::js_function<R(T)> onfulfilled, jst::js_function<R(jst::js_unknown)> onrejected) noexcept {
113
+ auto then (::tc:: jst::js_function<R(T)> onfulfilled, ::tc:: jst::js_function<R(::tc:: jst::js_unknown)> onrejected) noexcept {
113
114
return _call<Promise<RemovePromise_t<R>>>(" then" , onfulfilled, onrejected);
114
115
}
115
116
116
117
template <typename R1>
117
- auto then (jst::js_function<R1(T)> onfulfilled) noexcept {
118
+ auto then (::tc:: jst::js_function<R1(T)> onfulfilled) noexcept {
118
119
return _call<Promise<RemovePromise_t<R1>>>(" then" , onfulfilled);
119
120
}
120
121
121
122
template <typename R1, typename R2>
122
- auto then (jst::js_function<R1(T)> onfulfilled, jst::js_function<R2(jst::js_unknown)> onrejected) noexcept {
123
- return _call<Promise<jst::js_union<RemovePromise_t<R1>, RemovePromise_t<R2>>>>(" then" , onfulfilled, onrejected);
123
+ auto then (::tc:: jst::js_function<R1(T)> onfulfilled, ::tc:: jst::js_function<R2(jst::js_unknown)> onrejected) noexcept {
124
+ return _call<Promise<::tc:: jst::js_union<RemovePromise_t<R1>, RemovePromise_t<R2>>>>(" then" , onfulfilled, onrejected);
124
125
}
125
126
};
126
127
127
128
template <>
128
- struct _js_Promise <void > : virtual _js_Promise<jst::js_undefined> {
129
+ struct _js_Promise <void > : virtual _js_Promise<::tc:: jst::js_undefined> {
129
130
// JavaScript passes 'undefined' to what TypeScript calls 'void' promise.
130
131
};
131
132
132
- struct _js_console : virtual jst::IObject {
133
+ struct _js_console : virtual ::tc:: jst::IObject {
133
134
struct _tcjs_definitions {
134
135
template <typename ... Args>
135
136
static void log (Args&&... args) noexcept {
136
- static_assert ((jst::IsJsInteropable<tc::remove_cvref_t <Args>>::value && ...));
137
- emscripten::val::global (" console" )[" log" ](std::forward<Args>(args)...);
137
+ static_assert ((::tc::jst::IsJsInteropable<::tc::remove_cvref_t <Args>>::value && ...));
138
+ ::emscripten::val::global (" console" )["log"](::std::forward<Args>(args)...);
139
+ }
140
+
141
+ template <typename ... Args>
142
+ static void error (Args&&... args) noexcept {
143
+ static_assert ((::tc::jst::IsJsInteropable<::tc::remove_cvref_t <Args>>::value && ...));
144
+ ::emscripten::val::global (" console" )["error"](::std::forward<Args>(args)...);
145
+ }
146
+
147
+ template <typename ... Args>
148
+ static void warn (Args&&... args) noexcept {
149
+ static_assert ((::tc::jst::IsJsInteropable<::tc::remove_cvref_t <Args>>::value && ...));
150
+ ::emscripten::val::global (" console" )["warn"](::std::forward<Args>(args)...);
151
+ }
152
+
153
+ template <typename ... Args>
154
+ static void debug (Args&&... args) noexcept {
155
+ static_assert ((::tc::jst::IsJsInteropable<::tc::remove_cvref_t <Args>>::value && ...));
156
+ ::emscripten::val::global (" console" )["debug"](::std::forward<Args>(args)...);
138
157
}
139
158
};
140
159
};
0 commit comments