410 |
/*************************************************************************/ |
/*************************************************************************/ |
411 |
|
|
412 |
FT_LOCAL( void ) |
FT_LOCAL( void ) |
413 |
|
gxv_StateTable_subtable_setup( FT_UShort table_size, |
414 |
|
FT_UShort classTable, |
415 |
|
FT_UShort stateArray, |
416 |
|
FT_UShort entryTable, |
417 |
|
FT_UShort* classTable_length_p, |
418 |
|
FT_UShort* stateArray_length_p, |
419 |
|
FT_UShort* entryTable_length_p, |
420 |
|
GXV_Validator valid ); |
421 |
|
|
422 |
|
FT_LOCAL( void ) |
423 |
|
gxv_XStateTable_subtable_setup( FT_ULong table_size, |
424 |
|
FT_ULong classTable, |
425 |
|
FT_ULong stateArray, |
426 |
|
FT_ULong entryTable, |
427 |
|
FT_ULong* classTable_length_p, |
428 |
|
FT_ULong* stateArray_length_p, |
429 |
|
FT_ULong* entryTable_length_p, |
430 |
|
GXV_Validator valid ); |
431 |
|
|
432 |
|
FT_LOCAL( void ) |
433 |
gxv_StateTable_validate( FT_Bytes table, |
gxv_StateTable_validate( FT_Bytes table, |
434 |
FT_Bytes limit, |
FT_Bytes limit, |
435 |
GXV_Validator valid ); |
GXV_Validator valid ); |
436 |
|
|
437 |
|
FT_LOCAL( void ) |
438 |
|
gxv_XStateTable_validate( FT_Bytes table, |
439 |
|
FT_Bytes limit, |
440 |
|
GXV_Validator valid ); |
441 |
|
|
442 |
|
|
443 |
/*************************************************************************/ |
/*************************************************************************/ |
444 |
/*************************************************************************/ |
/*************************************************************************/ |
445 |
/***** *****/ |
/***** *****/ |
446 |
/***** UTILITY MACRO *****/ |
/***** UTILITY MACROS AND FUNCTIONS *****/ |
447 |
/***** *****/ |
/***** *****/ |
448 |
/*************************************************************************/ |
/*************************************************************************/ |
449 |
/*************************************************************************/ |
/*************************************************************************/ |
450 |
|
|
451 |
|
FT_LOCAL( void ) |
452 |
|
gxv_array_getlimits_byte( FT_Bytes table, |
453 |
|
FT_Bytes limit, |
454 |
|
FT_Byte* min, |
455 |
|
FT_Byte* max, |
456 |
|
GXV_Validator valid ); |
457 |
|
|
458 |
|
FT_LOCAL( void ) |
459 |
|
gxv_array_getlimits_ushort( FT_Bytes table, |
460 |
|
FT_Bytes limit, |
461 |
|
FT_UShort* min, |
462 |
|
FT_UShort* max, |
463 |
|
GXV_Validator valid ); |
464 |
|
|
465 |
|
FT_LOCAL( void ) |
466 |
|
gxv_set_length_by_ushort_offset( FT_UShort* offset, |
467 |
|
FT_UShort** length, |
468 |
|
FT_UShort* buff, |
469 |
|
FT_UInt nmemb, |
470 |
|
FT_UShort limit, |
471 |
|
GXV_Validator valid ); |
472 |
|
|
473 |
|
FT_LOCAL( void ) |
474 |
|
gxv_set_length_by_ulong_offset( FT_ULong* offset, |
475 |
|
FT_ULong** length, |
476 |
|
FT_ULong* buff, |
477 |
|
FT_UInt nmemb, |
478 |
|
FT_ULong limit, |
479 |
|
GXV_Validator valid); |
480 |
|
|
481 |
|
|
482 |
#define GXV_SUBTABLE_OFFSET_CHECK( _offset ) \ |
#define GXV_SUBTABLE_OFFSET_CHECK( _offset ) \ |
483 |
FT_BEGIN_STMNT \ |
FT_BEGIN_STMNT \ |
484 |
if ( (_offset) > valid->subtable_length ) \ |
if ( (_offset) > valid->subtable_length ) \ |
495 |
#define GXV_USHORT_TO_SHORT( _us ) \ |
#define GXV_USHORT_TO_SHORT( _us ) \ |
496 |
( ( 0x8000U < ( _us ) ) ? ( ( _us ) - 0x8000U ) : ( _us ) ) |
( ( 0x8000U < ( _us ) ) ? ( ( _us ) - 0x8000U ) : ( _us ) ) |
497 |
|
|
498 |
|
#define GXV_STATETABLE_HEADER_SIZE ( 2 + 2 + 2 + 2 ) |
499 |
|
#define GXV_STATEHEADER_SIZE GXV_STATETABLE_HEADER_SIZE |
500 |
|
|
501 |
|
#define GXV_XSTATETABLE_HEADER_SIZE ( 4 + 4 + 4 + 4 ) |
502 |
|
#define GXV_XSTATEHEADER_SIZE GXV_XSTATETABLE_HEADER_SIZE |
503 |
|
|
504 |
|
|
505 |
/*************************************************************************/ |
/*************************************************************************/ |
506 |
/*************************************************************************/ |
/*************************************************************************/ |
526 |
} GXV_odtect_RangeRec, *GXV_odtect_Range; |
} GXV_odtect_RangeRec, *GXV_odtect_Range; |
527 |
|
|
528 |
|
|
529 |
|
FT_LOCAL( void ) |
530 |
|
gxv_odtect_add_range( FT_Bytes start, |
531 |
|
FT_ULong length, |
532 |
|
const FT_String* name, |
533 |
|
GXV_odtect_Range odtect ); |
534 |
|
|
535 |
|
FT_LOCAL( void ) |
536 |
|
gxv_odtect_validate( GXV_odtect_Range odtect, |
537 |
|
GXV_Validator valid ); |
538 |
|
|
539 |
|
|
540 |
#define GXV_ODTECT( n, odtect ) \ |
#define GXV_ODTECT( n, odtect ) \ |
541 |
GXV_odtect_DataRec odtect ## _range[n]; \ |
GXV_odtect_DataRec odtect ## _range[n]; \ |
542 |
GXV_odtect_RangeRec odtect ## _rec = { 0, NULL }; \ |
GXV_odtect_RangeRec odtect ## _rec = { 0, NULL }; \ |