| 124 | } // namespace |
| 125 | |
| 126 | EMSCRIPTEN_BINDINGS(builtin) { |
| 127 | using namespace emscripten::internal; |
| 128 | |
| 129 | _embind_register_void(TypeID<void>::get(), "void"); |
| 130 | |
| 131 | _embind_register_bool(TypeID<bool>::get(), "bool", true, false); |
| 132 | static_assert(sizeof(bool) == 1); |
| 133 | |
| 134 | register_integer<char>("char"); |
| 135 | register_integer<signed char>("signed char"); |
| 136 | register_integer<unsigned char>("unsigned char"); |
| 137 | register_integer<signed short>("short"); |
| 138 | register_integer<unsigned short>("unsigned short"); |
| 139 | register_integer<signed int>("int"); |
| 140 | register_integer<unsigned int>("unsigned int"); |
| 141 | #if __wasm64__ |
| 142 | register_bigint<signed long>("long"); |
| 143 | register_bigint<unsigned long>("unsigned long"); |
| 144 | #else |
| 145 | register_integer<signed long>("long"); |
| 146 | register_integer<unsigned long>("unsigned long"); |
| 147 | #endif |
| 148 | |
| 149 | register_bigint<signed long long>("long long"); |
| 150 | register_bigint<unsigned long long>("unsigned long long"); |
| 151 | |
| 152 | register_float<float>("float"); |
| 153 | register_float<double>("double"); |
| 154 | |
| 155 | _embind_register_std_string(TypeID<std::string>::get(), "std::string"); |
| 156 | _embind_register_std_wstring(TypeID<std::wstring>::get(), sizeof(wchar_t), "std::wstring"); |
| 157 | _embind_register_std_wstring(TypeID<std::u16string>::get(), sizeof(char16_t), "std::u16string"); |
| 158 | _embind_register_std_wstring(TypeID<std::u32string>::get(), sizeof(char32_t), "std::u32string"); |
| 159 | _embind_register_emval(TypeID<val>::get()); |
| 160 | |
| 161 | // Some of these types are aliases for each other. Luckily, |
| 162 | // embind.js's _embind_register_memory_view ignores duplicate |
| 163 | // registrations rather than asserting, so the first |
| 164 | // register_memory_view call for a particular type will take |
| 165 | // precedence. |
| 166 | |
| 167 | register_memory_view<char>("emscripten::memory_view<char>"); |
| 168 | register_memory_view<signed char>("emscripten::memory_view<signed char>"); |
| 169 | register_memory_view<unsigned char>("emscripten::memory_view<unsigned char>"); |
| 170 | |
| 171 | register_memory_view<short>("emscripten::memory_view<short>"); |
| 172 | register_memory_view<unsigned short>("emscripten::memory_view<unsigned short>"); |
| 173 | register_memory_view<int>("emscripten::memory_view<int>"); |
| 174 | register_memory_view<unsigned int>("emscripten::memory_view<unsigned int>"); |
| 175 | register_memory_view<long>("emscripten::memory_view<long>"); |
| 176 | register_memory_view<unsigned long>("emscripten::memory_view<unsigned long>"); |
| 177 | |
| 178 | register_memory_view<int8_t>("emscripten::memory_view<int8_t>"); |
| 179 | register_memory_view<uint8_t>("emscripten::memory_view<uint8_t>"); |
| 180 | register_memory_view<int16_t>("emscripten::memory_view<int16_t>"); |
| 181 | register_memory_view<uint16_t>("emscripten::memory_view<uint16_t>"); |
| 182 | register_memory_view<int32_t>("emscripten::memory_view<int32_t>"); |
| 183 | register_memory_view<uint32_t>("emscripten::memory_view<uint32_t>"); |