38#define FT_COMPONENT trace_gxvcommon
73 for (
i = 0;
i < nmemb;
i++ )
76 for (
i = 0;
i < nmemb;
i++ )
86 for (
i = 0;
i < nmemb;
i++ )
91 for (
j = 0;
j < nmemb;
j++ )
138 for (
i = 0;
i < nmemb;
i++ )
141 for (
i = 0;
i < nmemb;
i++ )
151 for (
i = 0;
i < nmemb;
i++ )
156 for (
j = 0;
j < nmemb;
j++ )
269 if ( binSrchHeader->
nUnits == 0 )
279 for ( searchRange = 1, entrySelector = 1;
280 ( searchRange * 2 ) <= binSrchHeader->
nUnits &&
281 searchRange < 0x8000U;
282 searchRange *= 2, entrySelector++ )
294 GXV_TRACE((
"Inconsistency found in BinSrchHeader\n" ));
295 GXV_TRACE((
"originally: unitSize=%d, nUnits=%d, "
296 "searchRange=%d, entrySelector=%d, "
301 GXV_TRACE((
"calculated: unitSize=%d, nUnits=%d, "
302 "searchRange=%d, entrySelector=%d, "
305 searchRange, entrySelector, rangeShift ));
340 if ( *unitSize_p == 0 )
346 binSrchHeader.
unitSize = *unitSize_p;
348 if ( *nUnits_p == 0 )
354 binSrchHeader.
nUnits = *nUnits_p;
364 if ( *unitSize_p == 0 )
365 *unitSize_p = binSrchHeader.
unitSize;
367 if ( *nUnits_p == 0 )
368 *nUnits_p = binSrchHeader.
nUnits;
383#define GXV_LOOKUP_VALUE_LOAD( P, SIGNSPEC ) \
384 ( P += 2, gxv_lookup_value_load( P - 2, SIGNSPEC ) )
402#define GXV_UNITSIZE_VALIDATE( FORMAT, UNITSIZE, NUNITS, CORRECTSIZE ) \
404 if ( UNITSIZE != CORRECTSIZE ) \
406 FT_ERROR(( "unitSize=%d differs from" \
407 " expected unitSize=%d" \
408 " in LookupTable %s\n", \
409 UNITSIZE, CORRECTSIZE, FORMAT )); \
410 if ( UNITSIZE != 0 && NUNITS != 0 ) \
412 FT_ERROR(( " cannot validate anymore\n" )); \
416 FT_ERROR(( " forcibly continues\n" )); \
442 GXV_TRACE((
"too short, glyphs %d - %d are missing\n",
481 while ( (
p + 4 ) < gxvalid->
root->limit )
483 if (
p[0] != 0xFF ||
p[1] != 0xFF ||
484 p[2] != 0xFF ||
p[3] != 0xFF )
511 unitSize = nUnits = 0;
527 if ( lastGlyph < gid )
529 GXV_TRACE((
"reverse ordered segment specification:"
530 " lastGlyph[%d]=%d < lastGlyph[%d]=%d\n",
537 GXV_TRACE((
"reverse ordered range specification at unit %d:",
538 " lastGlyph %d < firstGlyph %d ",
545 FT_TRACE4((
"continuing with exchanged values\n" ));
551 for ( gid =
firstGlyph; gid <= lastGlyph; gid++ )
583 unitSize = nUnits = 0;
598 if ( lastGlyph < gid )
600 GXV_TRACE((
"reverse ordered segment specification:"
601 " lastGlyph[%d]=%d < lastGlyph[%d]=%d\n",
608 GXV_TRACE((
"reverse ordered range specification at unit %d:",
609 " lastGlyph %d < firstGlyph %d ",
616 FT_TRACE4((
"continuing with exchanged values\n" ));
625 for ( gid =
firstGlyph; gid <= lastGlyph; gid++ )
653 while ( p < gxvalid->
root->limit )
655 if (
p[0] != 0xFF ||
p[1] != 0xFF )
681 unitSize = nUnits = 0;
694 GXV_TRACE((
" endmarker found within defined range"
695 " (entry %d < nUnits=%d)\n",
698 if ( prev_glyph > glyph )
700 GXV_TRACE((
"current gid 0x%04x < previous gid 0x%04x\n",
701 glyph, prev_glyph ));
742 for (
i = 0;
i < glyphCount;
i++ )
781 gxvalid->lookuptbl_head =
table;
796 p += gxvalid->subtable_length;
819 if ( gid == 0xFFFFU )
825 face = gxvalid->face;
826 if (
face->num_glyphs < gid )
828 GXV_TRACE((
" gxv_glyphid_check() gid overflow: num_glyphs %d < %d\n",
829 face->num_glyphs, gid ));
858 face = gxvalid->face;
870 if ( !( ctl_point < n_points ) )
896 if ( name_index < min_index || max_index < name_index )
900 for (
i = 0;
i < nnames;
i++ )
905 if (
name.name_id == name_index )
909 GXV_TRACE((
" nameIndex = %d (UNTITLED)\n", name_index ));
914 FT_TRACE1((
" nameIndex = %d (", name_index ));
978 for (
i = 0;
i < nGlyphs;
i++ )
993 if ( classID >= stateSize )
996 nGlyphInClass[classID]++;
1003 for (
i = 0;
i < stateSize;
i++ )
1004 if ( ( 3 <
i ) && ( nGlyphInClass[
i] > 0 ) )
1009 GXV_TRACE((
"Declared stateSize=0x%02x, Used maxClassID=0x%02x\n",
1010 stateSize, *maxClassID_p ));
1036 GXV_TRACE((
"parse %d bytes by stateSize=%d maxClassID=%d\n",
1037 (
int)(*length_p), stateSize, (
int)(maxClassID) ));
1049 while (
p + ( 1 + maxClassID ) <=
limit )
1052 for ( clazz = 0; clazz <= maxClassID; clazz++ )
1058 GXV_TRACE((
"parsed: maxState=%d, maxEntry=%d\n",
1059 *maxState_p, *maxEntry_p ));
1091 GXV_TRACE((
"maxEntry=%d entrySize=%d\n", maxEntry, entrySize ));
1093 if ( ( maxEntry + 1 ) * entrySize > *length_p )
1098 maxEntry = (
FT_Byte)( *length_p / entrySize - 1 );
1099 GXV_TRACE((
"too large maxEntry, shrinking to %d fit EntryTable length\n",
1114 if ( newState < stateArray ||
1115 stateArray + stateArray_length < newState )
1117 GXV_TRACE((
" newState offset 0x%04x is out of stateArray\n",
1123 if ( 0 != ( ( newState - stateArray ) % ( 1 + maxClassID ) ) )
1125 GXV_TRACE((
" newState offset 0x%04x is not aligned to %d-classes\n",
1126 newState, 1 + maxClassID ));
1131 state = (
FT_Byte)( ( newState - stateArray ) / ( 1 + maxClassID ) );
1199 l[0] = classTable_length_p;
1200 l[1] = stateArray_length_p;
1201 l[2] = entryTable_length_p;
1239 GXV_TRACE((
"stateSize=0x%04x\n", stateSize ));
1240 GXV_TRACE((
"offset to classTable=0x%04x\n", classTable ));
1241 GXV_TRACE((
"offset to stateArray=0x%04x\n", stateArray ));
1242 GXV_TRACE((
"offset to entryTable=0x%04x\n", entryTable ));
1244 if ( stateSize > 0xFF )
1247 if ( gxvalid->statetable.optdata_load_func )
1248 gxvalid->statetable.optdata_load_func(
p,
limit, gxvalid );
1250 if ( gxvalid->statetable.subtable_setup_func )
1251 setup_func = gxvalid->statetable.subtable_setup_func;
1264 GXV_TRACE((
"StateTable Subtables\n" ));
1266 if ( classTable != 0 )
1273 maxClassID = (
FT_Byte)( stateSize - 1 );
1275 if ( stateArray != 0 )
1291 if ( maxEntry > 0 && entryTable == 0 )
1294 if ( entryTable != 0 )
1329 l[0] = classTable_length_p;
1330 l[1] = stateArray_length_p;
1331 l[2] = entryTable_length_p;
1393 limit = lookuptbl_limit;
1421 GXV_TRACE((
"parse % 3d bytes by stateSize=% 3d maxClassID=% 3d\n",
1422 (
int)(*length_p), stateSize, (
int)(maxClassID) ));
1434 while (
p + ( ( 1 + maxClassID ) * 2 ) <=
limit )
1437 for ( clazz = 0; clazz <= maxClassID; clazz++ )
1443 GXV_TRACE((
"parsed: maxState=%d, maxEntry=%d\n",
1444 *maxState_p, *maxEntry_p ));
1470 GXV_TRACE((
"maxEntry=%d entrySize=%d\n", maxEntry, entrySize ));
1472 if ( (
p + ( maxEntry + 1 ) * entrySize ) >
limit )
1486 if ( stateArray_length < (
FT_ULong)( newState_idx * 2 ) )
1488 GXV_TRACE((
" newState index 0x%04x points out of stateArray\n",
1494 if ( 0 != ( newState_idx % ( 1 + maxClassID ) ) )
1496 FT_TRACE4((
"-> new state = %d (supposed)\n"
1497 "but newState index 0x%04x is not aligned to %d-classes\n",
1498 state, newState_idx, 1 + maxClassID ));
1584 GXV_TRACE((
"nClasses =0x%08x\n", gxvalid->xstatetable.nClasses ));
1585 GXV_TRACE((
"offset to classTable=0x%08x\n", classTable ));
1586 GXV_TRACE((
"offset to stateArray=0x%08x\n", stateArray ));
1587 GXV_TRACE((
"offset to entryTable=0x%08x\n", entryTable ));
1589 if ( gxvalid->xstatetable.nClasses > 0xFFFFU )
1592 GXV_TRACE((
"StateTable Subtables\n" ));
1594 if ( gxvalid->xstatetable.optdata_load_func )
1595 gxvalid->xstatetable.optdata_load_func(
p,
limit, gxvalid );
1597 if ( gxvalid->xstatetable.subtable_setup_func )
1598 setup_func = gxvalid->xstatetable.subtable_setup_func;
1611 if ( classTable != 0 )
1613 gxvalid->xstatetable.maxClassID = 0;
1618 table + classTable + classTable_length,
1621 if ( gxvalid->subtable_length < classTable_length )
1622 classTable_length = gxvalid->subtable_length;
1628 gxvalid->xstatetable.maxClassID =
1629 (
FT_UShort)( gxvalid->xstatetable.nClasses - 1 );
1632 if ( stateArray != 0 )
1635 gxvalid->xstatetable.maxClassID,
1636 gxvalid->xstatetable.nClasses,
1648 if ( maxEntry > 0 && entryTable == 0 )
1651 if ( entryTable != 0 )
1656 gxvalid->xstatetable.maxClassID,
1679 if ( table1_start == table2_start )
1681 if ( ( table1_length == 0 || table2_length == 0 ) )
1684 else if ( table1_start < table2_start )
1686 if ( ( table1_start + table1_length ) <= table2_start )
1689 else if ( table1_start > table2_start )
1691 if ( ( table1_start >= table2_start + table2_length ) )
1707 odtect->range[odtect->nRanges].start =
start;
1708 odtect->range[odtect->nRanges].length =
length;
1723 for (
i = 0;
i < odtect->nRanges;
i++ )
1724 for (
j = 0;
j <
i;
j++ )
1726 odtect->range[
i].length,
1727 odtect->range[
j].start,
1728 odtect->range[
j].length ) )
1730#ifdef FT_DEBUG_LEVEL_TRACE
1731 if ( odtect->range[
i].name || odtect->range[
j].name )
1732 GXV_TRACE((
"found overlap between range %d and range %d\n",
1735 GXV_TRACE((
"found overlap between `%s' and `%s\'\n",
1736 odtect->range[
i].name,
1737 odtect->range[
j].name ));
static unsigned char buff[32768]
FT_Load_Glyph(FT_Face face, FT_UInt glyph_index, FT_Int32 load_flags)
#define FT_LOAD_NO_BITMAP
#define FT_LOAD_IGNORE_TRANSFORM
#define FT_TRACE1(varformat)
#define FT_TRACE4(varformat)
#define FT_MEM_ZERO(dest, count)
FT_Get_Sfnt_Name_Count(FT_Face face)
FT_BEGIN_HEADER struct FT_SfntName_ FT_SfntName
FT_Get_Sfnt_Name(FT_Face face, FT_UInt idx, FT_SfntName *aname)
#define FT_NEXT_USHORT(buffer)
#define FT_NEXT_CHAR(buffer)
#define FT_NEXT_LONG(buffer)
#define FT_NEXT_SHORT(buffer)
#define FT_NEXT_ULONG(buffer)
#define FT_NEXT_BYTE(buffer)
#define FT_INVALID_FORMAT
#define FT_INVALID_TOO_SHORT
#define FT_INVALID_OFFSET
#define FT_INVALID_GLYPH_ID
GLenum GLuint GLint GLenum face
GLboolean GLboolean GLboolean b
GLuint GLsizei GLsizei * length
GLenum const GLvoid GLbitfield GLuint firstGlyph
GLboolean GLboolean GLboolean GLboolean a
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
gxv_array_getlimits_byte(FT_Bytes table, FT_Bytes limit, FT_Byte *min, FT_Byte *max, GXV_Validator gxvalid)
static void gxv_LookupTable_fmt6_skip_endmarkers(FT_Bytes table, FT_UShort unitSize, GXV_Validator gxvalid)
static void gxv_LookupTable_fmt6_validate(FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid)
gxv_ctlPoint_validate(FT_UShort gid, FT_UShort ctl_point, GXV_Validator gxvalid)
gxv_BinSrchHeader_validate(FT_Bytes table, FT_Bytes limit, FT_UShort *unitSize_p, FT_UShort *nUnits_p, GXV_Validator gxvalid)
gxv_array_getlimits_ushort(FT_Bytes table, FT_Bytes limit, FT_UShort *min, FT_UShort *max, GXV_Validator gxvalid)
static void gxv_LookupTable_fmt0_validate(FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid)
#define GXV_LOOKUP_VALUE_LOAD(P, SIGNSPEC)
static int gxv_compare_ranges(FT_Bytes table1_start, FT_ULong table1_length, FT_Bytes table2_start, FT_ULong table2_length)
gxv_StateTable_subtable_setup(FT_UShort table_size, FT_UShort classTable, FT_UShort stateArray, FT_UShort entryTable, FT_UShort *classTable_length_p, FT_UShort *stateArray_length_p, FT_UShort *entryTable_length_p, GXV_Validator gxvalid)
gxv_set_length_by_ushort_offset(FT_UShort *offset, FT_UShort **length, FT_UShort *buff, FT_UInt nmemb, FT_UShort limit, GXV_Validator gxvalid)
static int gxv_compare_ulong_offset(FT_ULong *a, FT_ULong *b)
gxv_StateTable_validate(FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid)
static void gxv_XStateArray_validate(FT_Bytes table, FT_ULong *length_p, FT_UShort maxClassID, FT_ULong stateSize, FT_UShort *maxState_p, FT_UShort *maxEntry_p, GXV_Validator gxvalid)
gxv_LookupTable_validate(FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid)
gxv_odtect_add_range(FT_Bytes start, FT_ULong length, const FT_String *name, GXV_odtect_Range odtect)
static void gxv_StateArray_validate(FT_Bytes table, FT_UShort *length_p, FT_Byte maxClassID, FT_UShort stateSize, FT_Byte *maxState_p, FT_Byte *maxEntry_p, GXV_Validator gxvalid)
static int gxv_compare_ushort_offset(FT_UShort *a, FT_UShort *b)
gxv_glyphid_validate(FT_UShort gid, GXV_Validator gxvalid)
static void gxv_LookupTable_fmt8_validate(FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid)
gxv_XStateTable_subtable_setup(FT_ULong table_size, FT_ULong classTable, FT_ULong stateArray, FT_ULong entryTable, FT_ULong *classTable_length_p, FT_ULong *stateArray_length_p, FT_ULong *entryTable_length_p, GXV_Validator gxvalid)
gxv_odtect_validate(GXV_odtect_Range odtect, GXV_Validator gxvalid)
static void gxv_LookupTable_fmt2_skip_endmarkers(FT_Bytes table, FT_UShort unitSize, GXV_Validator gxvalid)
static void gxv_BinSrchHeader_check_consistency(GXV_BinSrchHeader *binSrchHeader, GXV_Validator gxvalid)
static void gxv_EntryTable_validate(FT_Bytes table, FT_UShort *length_p, FT_Byte maxEntry, FT_UShort stateArray, FT_UShort stateArray_length, FT_Byte maxClassID, FT_Bytes statetable_table, FT_Bytes statetable_limit, GXV_Validator gxvalid)
gxv_sfntName_validate(FT_UShort name_index, FT_UShort min_index, FT_UShort max_index, GXV_Validator gxvalid)
struct GXV_BinSrchHeader_ GXV_BinSrchHeader
gxv_set_length_by_ulong_offset(FT_ULong *offset, FT_ULong **length, FT_ULong *buff, FT_UInt nmemb, FT_ULong limit, GXV_Validator gxvalid)
static GXV_LookupValueDesc gxv_XClassTable_lookupfmt4_transit(FT_UShort relative_gindex, GXV_LookupValueCPtr base_value_p, FT_Bytes lookuptbl_limit, GXV_Validator gxvalid)
static void gxv_ClassTable_validate(FT_Bytes table, FT_UShort *length_p, FT_UShort stateSize, FT_Byte *maxClassID_p, GXV_Validator gxvalid)
gxv_XStateTable_validate(FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid)
#define GXV_UNITSIZE_VALIDATE(FORMAT, UNITSIZE, NUNITS, CORRECTSIZE)
static GXV_LookupValueDesc gxv_lookup_value_load(FT_Bytes p, int signspec)
static void gxv_LookupTable_fmt4_validate(FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid)
static void gxv_LookupTable_fmt2_validate(FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid)
static void gxv_XEntryTable_validate(FT_Bytes table, FT_ULong *length_p, FT_UShort maxEntry, FT_ULong stateArray_length, FT_UShort maxClassID, FT_Bytes xstatetable_table, FT_Bytes xstatetable_limit, GXV_Validator gxvalid)
static void gxv_XClassTable_lookupval_validate(FT_UShort glyph, GXV_LookupValueCPtr value_p, GXV_Validator gxvalid)
void(* GXV_Validate_Func)(FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid)
#define GXV_GLYPHOFFSET_FMT(table)
#define GXV_GLYPHOFFSET_SIZE(table)
void(* GXV_XStateTable_Subtable_Setup_Func)(FT_ULong table_size, FT_ULong classTable, FT_ULong stateArray, FT_ULong entryTable, FT_ULong *classTable_length_p, FT_ULong *stateArray_length_p, FT_ULong *entryTable_length_p, GXV_Validator gxvalid)
#define GXV_NAME_ENTER(name)
#define GXV_SET_ERR_IF_PARANOID(err)
@ GXV_LOOKUPVALUE_UNSIGNED
void(* GXV_StateTable_Subtable_Setup_Func)(FT_UShort table_size, FT_UShort classTable, FT_UShort stateArray, FT_UShort entryTable, FT_UShort *classTable_length_p, FT_UShort *stateArray_length_p, FT_UShort *entryTable_length_p, GXV_Validator gxvalid)
#define GXV_TRACE_HEXDUMP_SFNTNAME(n)
#define GXV_LIMIT_CHECK(_count)
png_const_structrp png_const_inforp int * unit
GXV_StateTable_Entry_Validate_Func entry_validate_func
GXV_StateTable_ValidatorRec statetable
GXV_XStateTable_ValidatorRec xstatetable
GXV_Lookup_Fmt4_Transit_Func lookupfmt4_trans
GXV_Lookup_Value_Validate_Func lookupval_func
GXV_LookupValue_SignSpec lookupval_sign
GXV_XStateTable_Entry_Validate_Func entry_validate_func
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList