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