@@ -2199,38 +2199,68 @@ var LibraryEmbind = {
21992199 _embind_register_enum__docs : '/ ** @suppress { globalThis } * / ',
22002200 _embind_register_enum__deps : [ '$exposePublicSymbol ', '$enumReadValueFromPointer ',
22012201 '$AsciiToString ', '$registerType '] ,
2202- _embind_register_enum : ( rawType , name , size , isSigned ) => {
2202+ _embind_register_enum : ( rawType , name , size , isSigned , asString ) => {
22032203 name = AsciiToString ( name ) ;
22042204
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+ }
22192244 } ,
22202245
22212246 _embind_register_enum_value__deps : [ '$createNamedFunction' , '$AsciiToString' , '$requireRegisteredType' ] ,
22222247 _embind_register_enum_value : ( rawEnumType , name , enumValue ) = > {
22232248 var enumType = requireRegisteredType ( rawEnumType , 'enum' ) ;
22242249 name = AsciiToString ( name ) ;
22252250
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+ }
22342264 } ,
22352265
22362266 _embind_register_constant__deps : [ '$AsciiToString' , '$whenDependentTypesAreResolved' ] ,
0 commit comments