@@ -2197,38 +2197,68 @@ var LibraryEmbind = {
2197
2197
_embind_register_enum__docs : '/ ** @suppress { globalThis } * / ',
2198
2198
_embind_register_enum__deps : [ '$exposePublicSymbol ', '$enumReadValueFromPointer ',
2199
2199
'$AsciiToString ', '$registerType '] ,
2200
- _embind_register_enum : ( rawType , name , size , isSigned ) => {
2200
+ _embind_register_enum : ( rawType , name , size , isSigned , asString ) => {
2201
2201
name = AsciiToString ( name ) ;
2202
2202
2203
- function ctor ( ) { }
2204
- ctor . values = { } ;
2205
-
2206
- registerType ( rawType , {
2207
- name,
2208
- constructor : ctor ,
2209
- fromWireType : function ( c ) {
2210
- return this . constructor . values [ c ] ;
2211
- } ,
2212
- toWireType : ( destructors , c ) => c . value ,
2213
- readValueFromPointer : enumReadValueFromPointer ( name , size , isSigned ) ,
2214
- destructorFunction : null ,
2215
- } ) ;
2216
- exposePublicSymbol ( name , ctor ) ;
2203
+ if ( asString ) {
2204
+ var valuesMap = { } ;
2205
+ var reverseMap = { } ;
2206
+ var keysMap = { } ;
2207
+
2208
+ registerType ( rawType , {
2209
+ name : name ,
2210
+ valuesMap,
2211
+ reverseMap,
2212
+ keysMap,
2213
+ asString,
2214
+ fromWireType : function ( c ) {
2215
+ return this . reverseMap [ c ] ;
2216
+ } ,
2217
+ toWireType : function ( destructors , c ) {
2218
+ return this . valuesMap [ c ] ;
2219
+ } ,
2220
+ readValueFromPointer : enumReadValueFromPointer ( name , size , isSigned ) ,
2221
+ destructorFunction : null ,
2222
+ } ) ;
2223
+ exposePublicSymbol ( name , keysMap ) ;
2224
+ // Just exposes a simple dict. argCount is meaningless here,
2225
+ delete Module [ name ] . argCount ;
2226
+ } else {
2227
+ function ctor ( ) { }
2228
+ ctor . values = { } ;
2229
+
2230
+ registerType ( rawType , {
2231
+ name,
2232
+ constructor : ctor ,
2233
+ fromWireType : function ( c ) {
2234
+ return this . constructor . values [ c ] ;
2235
+ } ,
2236
+ toWireType : ( destructors , c ) => c . value ,
2237
+ readValueFromPointer : enumReadValueFromPointer ( name , size , isSigned ) ,
2238
+ destructorFunction : null ,
2239
+ } ) ;
2240
+ exposePublicSymbol ( name , ctor ) ;
2241
+ }
2217
2242
} ,
2218
2243
2219
2244
_embind_register_enum_value__deps : [ '$createNamedFunction' , '$AsciiToString' , '$requireRegisteredType' ] ,
2220
2245
_embind_register_enum_value : ( rawEnumType , name , enumValue ) = > {
2221
2246
var enumType = requireRegisteredType ( rawEnumType , 'enum' ) ;
2222
2247
name = AsciiToString ( name ) ;
2223
2248
2224
- var Enum = enumType . constructor ;
2225
-
2226
- var Value = Object . create ( enumType . constructor . prototype , {
2227
- value : { value : enumValue } ,
2228
- constructor : { value : createNamedFunction ( `${ enumType . name } _${ name } ` , function ( ) { } ) } ,
2229
- } ) ;
2230
- Enum . values [ enumValue ] = Value ;
2231
- Enum [ name ] = Value ;
2249
+ if ( enumType . asString ) {
2250
+ enumType . valuesMap [ name ] = enumValue ;
2251
+ enumType . reverseMap [ enumValue ] = name ;
2252
+ enumType . keysMap [ name ] = name ;
2253
+ } else {
2254
+ var Enum = enumType . constructor ;
2255
+ var Value = Object . create ( enumType . constructor . prototype , {
2256
+ value : { value : enumValue } ,
2257
+ constructor : { value : createNamedFunction ( `${ enumType . name } _${ name } ` , function ( ) { } ) } ,
2258
+ } ) ;
2259
+ Enum . values [ enumValue ] = Value ;
2260
+ Enum [ name ] = Value ;
2261
+ }
2232
2262
} ,
2233
2263
2234
2264
_embind_register_constant__deps : [ '$AsciiToString' , '$whenDependentTypesAreResolved' ] ,
0 commit comments