13
13
/*jslint sub:true*/ /* The symbols 'fromWireType' and 'toWireType' must be accessed via array notation to be closure-safe since craftInvokerFunction crafts functions as strings that can't be closured. */
14
14
15
15
// -- jshint doesn't understand library syntax, so we need to specifically tell it about the symbols we define
16
- /*global typeDependencies, flushPendingDeletes, getTypeName, getBasestPointer, throwBindingError, UnboundTypeError, embindRepr, registeredInstances, registeredTypes, getShiftFromSize */
16
+ /*global typeDependencies, flushPendingDeletes, getTypeName, getBasestPointer, throwBindingError, UnboundTypeError, embindRepr, registeredInstances, registeredTypes*/
17
17
/*global ensureOverloadTable, embind__requireFunction, awaitingDependencies, makeLegalFunctionName, embind_charCodes:true, registerType, createNamedFunction, RegisteredPointer, throwInternalError*/
18
18
/*global simpleReadValueFromPointer, floatReadValueFromPointer, integerReadValueFromPointer, enumReadValueFromPointer, replacePublicSymbol, craftInvokerFunction, tupleRegistrations*/
19
19
/*global finalizationRegistry, attachFinalizer, detachFinalizer, releaseClassHandle, runDestructor*/
@@ -274,110 +274,88 @@ var LibraryEmbind = {
274
274
} ) ;
275
275
} ,
276
276
277
- _embind_register_bool__deps : [
278
- '$getShiftFromSize' , '$readLatin1String' , '$registerType' ] ,
279
- _embind_register_bool : ( rawType , name , size , trueValue , falseValue ) => {
280
- var shift = getShiftFromSize ( size ) ;
281
-
277
+ _embind_register_bool__deps : [ '$readLatin1String' , '$registerType' ] ,
278
+ _embind_register_bool : ( rawType , name , trueValue , falseValue ) => {
282
279
name = readLatin1String ( name ) ;
283
280
registerType ( rawType , {
284
- name,
285
- // ambiguous emscripten ABI: sometimes return values are
286
- // true or false, and sometimes integers (0 or 1)
287
- 'fromWireType' : ( wt ) => ! ! wt ,
288
- 'toWireType' : ( destructors , o ) => o ? trueValue : falseValue ,
289
- 'argPackAdvance' : 8 ,
290
- 'readValueFromPointer' : function ( pointer ) {
291
- // TODO: if heap is fixed (like in asm.js) this could be executed outside
292
- var heap ;
293
- if ( size === 1 ) {
294
- heap = HEAP8 ;
295
- } else if ( size === 2 ) {
296
- heap = HEAP16 ;
297
- } else if ( size === 4 ) {
298
- heap = HEAP32 ;
299
- } else {
300
- throw new TypeError ( "Unknown boolean type size: " + name ) ;
301
- }
302
- return this [ 'fromWireType' ] ( heap [ pointer >> shift ] ) ;
303
- } ,
304
- destructorFunction : null , // This type does not need a destructor
305
- } ) ;
306
- } ,
307
-
308
- $getShiftFromSize__deps : [ ] ,
309
- $getShiftFromSize : ( size ) => {
310
- switch ( size ) {
311
- case 1 : return 0 ;
312
- case 2 : return 1 ;
313
- case 4 : return 2 ;
314
- case 8 : return 3 ;
315
- default :
316
- throw new TypeError ( `Unknown type size: ${ size } ` ) ;
317
- }
281
+ name,
282
+ 'fromWireType' : function ( wt ) {
283
+ // ambiguous emscripten ABI: sometimes return values are
284
+ // true or false, and sometimes integers (0 or 1)
285
+ return ! ! wt ;
286
+ } ,
287
+ 'toWireType' : function ( destructors , o ) {
288
+ return o ? trueValue : falseValue ;
289
+ } ,
290
+ 'argPackAdvance' : 8 ,
291
+ 'readValueFromPointer' : function ( pointer ) {
292
+ return this [ 'fromWireType' ] ( HEAPU8 [ pointer ] ) ;
293
+ } ,
294
+ destructorFunction : null , // This type does not need a destructor
295
+ } ) ;
318
296
} ,
319
297
320
298
$integerReadValueFromPointer__deps : [ ] ,
321
- $integerReadValueFromPointer : ( name , shift , signed ) => {
299
+ $integerReadValueFromPointer : ( name , width , signed ) => {
322
300
// integers are quite common, so generate very specialized functions
323
- switch ( shift ) {
324
- case 0 : return signed ?
301
+ switch ( width ) {
302
+ case 1 : return signed ?
325
303
function readS8FromPointer ( pointer ) { return HEAP8 [ pointer ] ; } :
326
304
function readU8FromPointer ( pointer ) { return HEAPU8 [ pointer ] ; } ;
327
- case 1 : return signed ?
305
+ case 2 : return signed ?
328
306
function readS16FromPointer ( pointer ) { return HEAP16 [ pointer >> 1 ] ; } :
329
307
function readU16FromPointer ( pointer ) { return HEAPU16 [ pointer >> 1 ] ; } ;
330
- case 2 : return signed ?
308
+ case 4 : return signed ?
331
309
function readS32FromPointer ( pointer ) { return HEAP32 [ pointer >> 2 ] ; } :
332
310
function readU32FromPointer ( pointer ) { return HEAPU32 [ pointer >> 2 ] ; } ;
333
311
#if WASM_BIGINT
334
- case 3 : return signed ?
312
+ case 8 : return signed ?
335
313
function readS64FromPointer ( pointer ) { return HEAP64 [ pointer >> 3 ] ; } :
336
314
function readU64FromPointer ( pointer ) { return HEAPU64 [ pointer >> 3 ] ; } ;
337
315
#endif
338
316
default :
339
- throw new TypeError ( "Unknown integer type: " + name ) ;
317
+ throw new TypeError ( `invalid integer width ( ${ width } ): ${ name } ` ) ;
340
318
}
341
319
} ,
342
320
343
321
$enumReadValueFromPointer__deps : [ ] ,
344
- $enumReadValueFromPointer : ( name , shift , signed ) => {
345
- switch ( shift ) {
346
- case 0 : return function ( pointer ) {
322
+ $enumReadValueFromPointer : ( name , width , signed ) => {
323
+ switch ( width ) {
324
+ case 1 : return function ( pointer ) {
347
325
var heap = signed ? HEAP8 : HEAPU8 ;
348
326
return this [ 'fromWireType' ] ( heap [ pointer ] ) ;
349
327
} ;
350
- case 1 : return function ( pointer ) {
328
+ case 2 : return function ( pointer ) {
351
329
var heap = signed ? HEAP16 : HEAPU16 ;
352
330
return this [ 'fromWireType' ] ( heap [ pointer >> 1 ] ) ;
353
331
} ;
354
- case 2 : return function ( pointer ) {
332
+ case 4 : return function ( pointer ) {
355
333
var heap = signed ? HEAP32 : HEAPU32 ;
356
334
return this [ 'fromWireType' ] ( heap [ pointer >> 2 ] ) ;
357
335
} ;
358
336
default :
359
- throw new TypeError ( "Unknown integer type: " + name ) ;
337
+ throw new TypeError ( `invalid integer width ( ${ width } ): ${ name } ` ) ;
360
338
}
361
339
} ,
362
340
363
341
$floatReadValueFromPointer__deps : [ ] ,
364
- $floatReadValueFromPointer : ( name , shift ) => {
365
- switch ( shift ) {
366
- case 2 : return function ( pointer ) {
342
+ $floatReadValueFromPointer : ( name , width ) => {
343
+ switch ( width ) {
344
+ case 4 : return function ( pointer ) {
367
345
return this [ 'fromWireType' ] ( HEAPF32 [ pointer >> 2 ] ) ;
368
346
} ;
369
- case 3 : return function ( pointer ) {
347
+ case 8 : return function ( pointer ) {
370
348
return this [ 'fromWireType' ] ( HEAPF64 [ pointer >> 3 ] ) ;
371
349
} ;
372
350
default :
373
- throw new TypeError ( "Unknown float type: " + name ) ;
351
+ throw new TypeError ( `invalid float width ( ${ width } ): ${ name } ` ) ;
374
352
}
375
353
} ,
376
354
377
355
// When converting a number from JS to C++ side, the valid range of the number is
378
356
// [minRange, maxRange], inclusive.
379
357
_embind_register_integer__deps : [
380
- '$embindRepr' , '$getShiftFromSize' , '$ integerReadValueFromPointer',
358
+ '$embindRepr' , '$integerReadValueFromPointer' ,
381
359
'$readLatin1String' , '$registerType' ] ,
382
360
_embind_register_integer : ( primitiveType , name , size , minRange , maxRange ) => {
383
361
name = readLatin1String ( name ) ;
@@ -387,8 +365,6 @@ var LibraryEmbind = {
387
365
maxRange = 4294967295 ;
388
366
}
389
367
390
- var shift = getShiftFromSize ( size ) ;
391
-
392
368
var fromWireType = ( value ) => value ;
393
369
394
370
if ( minRange === 0 ) {
@@ -426,7 +402,7 @@ var LibraryEmbind = {
426
402
'fromWireType' : fromWireType ,
427
403
'toWireType' : toWireType ,
428
404
'argPackAdvance' : 8 ,
429
- 'readValueFromPointer' : integerReadValueFromPointer ( name , shift , minRange !== 0 ) ,
405
+ 'readValueFromPointer' : integerReadValueFromPointer ( name , size , minRange !== 0 ) ,
430
406
destructorFunction : null , // This type does not need a destructor
431
407
} ) ;
432
408
} ,
@@ -437,8 +413,6 @@ var LibraryEmbind = {
437
413
_embind_register_bigint : ( primitiveType , name , size , minRange , maxRange ) => {
438
414
name = readLatin1String ( name ) ;
439
415
440
- var shift = getShiftFromSize ( size ) ;
441
-
442
416
var isUnsignedType = ( name . indexOf ( 'u' ) != - 1 ) ;
443
417
444
418
// maxRange comes through as -1 for uint64_t (see issue 13902). Work around that temporarily
@@ -459,7 +433,7 @@ var LibraryEmbind = {
459
433
return value ;
460
434
} ,
461
435
'argPackAdvance' : 8 ,
462
- 'readValueFromPointer' : integerReadValueFromPointer ( name , shift , ! isUnsignedType ) ,
436
+ 'readValueFromPointer' : integerReadValueFromPointer ( name , size , ! isUnsignedType ) ,
463
437
destructorFunction : null , // This type does not need a destructor
464
438
} ) ;
465
439
} ,
@@ -469,10 +443,9 @@ var LibraryEmbind = {
469
443
#endif
470
444
471
445
_embind_register_float__deps : [
472
- '$embindRepr' , '$floatReadValueFromPointer' , '$getShiftFromSize' ,
446
+ '$embindRepr' , '$floatReadValueFromPointer' ,
473
447
'$readLatin1String' , '$registerType' ] ,
474
448
_embind_register_float : ( rawType , name , size ) => {
475
- var shift = getShiftFromSize ( size ) ;
476
449
name = readLatin1String ( name ) ;
477
450
registerType ( rawType , {
478
451
name,
@@ -488,7 +461,7 @@ var LibraryEmbind = {
488
461
return value ;
489
462
} ,
490
463
'argPackAdvance' : 8 ,
491
- 'readValueFromPointer' : floatReadValueFromPointer ( name , shift ) ,
464
+ 'readValueFromPointer' : floatReadValueFromPointer ( name , size ) ,
492
465
destructorFunction : null , // This type does not need a destructor
493
466
} ) ;
494
467
} ,
@@ -2391,10 +2364,9 @@ var LibraryEmbind = {
2391
2364
} ) ;
2392
2365
} ,
2393
2366
2394
- _embind_register_enum__deps : [ '$exposePublicSymbol' , '$getShiftFromSize' , '$ enumReadValueFromPointer',
2367
+ _embind_register_enum__deps : [ '$exposePublicSymbol ', '$enumReadValueFromPointer ',
2395
2368
'$readLatin1String ', '$registerType '] ,
2396
2369
_embind_register_enum : ( rawType , name , size , isSigned ) => {
2397
- var shift = getShiftFromSize ( size ) ;
2398
2370
name = readLatin1String ( name ) ;
2399
2371
2400
2372
function ctor ( ) { }
@@ -2408,7 +2380,7 @@ var LibraryEmbind = {
2408
2380
} ,
2409
2381
'toWireType' : ( destructors , c ) => c . value ,
2410
2382
'argPackAdvance' : 8 ,
2411
- 'readValueFromPointer' : enumReadValueFromPointer ( name , shift , isSigned ) ,
2383
+ 'readValueFromPointer' : enumReadValueFromPointer ( name , size , isSigned ) ,
2412
2384
destructorFunction : null ,
2413
2385
} ) ;
2414
2386
exposePublicSymbol ( name , ctor ) ;
0 commit comments