117 |
|
|
118 |
#ifdef FT_DEBUG_LEVEL_TRACE |
#ifdef FT_DEBUG_LEVEL_TRACE |
119 |
|
|
|
/* use preprocessor's argument prescan to expand one argument into two */ |
|
120 |
#define OTV_NEST1( x ) \ |
#define OTV_NEST1( x ) \ |
121 |
FT_BEGIN_STMNT \ |
FT_BEGIN_STMNT \ |
122 |
valid->nesting_level = 0; \ |
valid->nesting_level = 0; \ |
123 |
valid->func[0] = OTV_FUNC(x); \ |
valid->func[0] = OTV_FUNC( x ); \ |
124 |
valid->debug_function_name[0] = OTV_NAME(x); \ |
valid->debug_function_name[0] = OTV_NAME( x ); \ |
125 |
FT_END_STMNT |
FT_END_STMNT |
126 |
|
|
127 |
/* use preprocessor's argument prescan to expand two arguments into four */ |
#define OTV_NEST2( x, y ) \ |
128 |
#define OTV_NEST2( x, y ) \ |
FT_BEGIN_STMNT \ |
129 |
FT_BEGIN_STMNT \ |
valid->nesting_level = 0; \ |
130 |
valid->nesting_level = 0; \ |
valid->func[0] = OTV_FUNC( x ); \ |
131 |
valid->func[0] = OTV_FUNC(x); \ |
valid->func[1] = OTV_FUNC( y ); \ |
132 |
valid->func[1] = OTV_FUNC(y); \ |
valid->debug_function_name[0] = OTV_NAME( x ); \ |
133 |
valid->debug_function_name[0] = OTV_NAME(x); \ |
valid->debug_function_name[1] = OTV_NAME( y ); \ |
|
valid->debug_function_name[1] = OTV_NAME(y); \ |
|
134 |
FT_END_STMNT |
FT_END_STMNT |
135 |
|
|
136 |
/* use preprocessor's argument prescan to expand three arguments into six */ |
#define OTV_NEST3( x, y, z ) \ |
137 |
#define OTV_NEST3( x, y, z ) \ |
FT_BEGIN_STMNT \ |
138 |
FT_BEGIN_STMNT \ |
valid->nesting_level = 0; \ |
139 |
valid->nesting_level = 0; \ |
valid->func[0] = OTV_FUNC( x ); \ |
140 |
valid->func[0] = OTV_FUNC(x); \ |
valid->func[1] = OTV_FUNC( y ); \ |
141 |
valid->func[1] = OTV_FUNC(y); \ |
valid->func[2] = OTV_FUNC( z ); \ |
142 |
valid->func[2] = OTV_FUNC(z); \ |
valid->debug_function_name[0] = OTV_NAME( x ); \ |
143 |
valid->debug_function_name[0] = OTV_NAME(x); \ |
valid->debug_function_name[1] = OTV_NAME( y ); \ |
144 |
valid->debug_function_name[1] = OTV_NAME(y); \ |
valid->debug_function_name[2] = OTV_NAME( z ); \ |
|
valid->debug_function_name[2] = OTV_NAME(z); \ |
|
145 |
FT_END_STMNT |
FT_END_STMNT |
146 |
|
|
147 |
#define OTV_INIT valid->debug_indent = 0 |
#define OTV_INIT valid->debug_indent = 0 |
171 |
|
|
172 |
#else /* !FT_DEBUG_LEVEL_TRACE */ |
#else /* !FT_DEBUG_LEVEL_TRACE */ |
173 |
|
|
174 |
/* use preprocessor's argument prescan to expand one argument into two */ |
#define OTV_NEST1( x ) \ |
175 |
#define OTV_NEST1( x ) \ |
FT_BEGIN_STMNT \ |
176 |
FT_BEGIN_STMNT \ |
valid->nesting_level = 0; \ |
177 |
valid->nesting_level = 0; \ |
valid->func[0] = OTV_FUNC( x ); \ |
|
valid->func[0] = OTV_FUNC(x); \ |
|
178 |
FT_END_STMNT |
FT_END_STMNT |
179 |
|
|
180 |
/* use preprocessor's argument prescan to expand two arguments into four */ |
#define OTV_NEST2( x, y ) \ |
181 |
#define OTV_NEST2( x, y ) \ |
FT_BEGIN_STMNT \ |
182 |
FT_BEGIN_STMNT \ |
valid->nesting_level = 0; \ |
183 |
valid->nesting_level = 0; \ |
valid->func[0] = OTV_FUNC( x ); \ |
184 |
valid->func[0] = OTV_FUNC(x); \ |
valid->func[1] = OTV_FUNC( y ); \ |
|
valid->func[1] = OTV_FUNC(y); \ |
|
185 |
FT_END_STMNT |
FT_END_STMNT |
186 |
|
|
187 |
/* use preprocessor's argument prescan to expand three arguments into six */ |
#define OTV_NEST3( x, y, z ) \ |
188 |
#define OTV_NEST3( x, y, z ) \ |
FT_BEGIN_STMNT \ |
189 |
FT_BEGIN_STMNT \ |
valid->nesting_level = 0; \ |
190 |
valid->nesting_level = 0; \ |
valid->func[0] = OTV_FUNC( x ); \ |
191 |
valid->func[0] = OTV_FUNC(x); \ |
valid->func[1] = OTV_FUNC( y ); \ |
192 |
valid->func[1] = OTV_FUNC(y); \ |
valid->func[2] = OTV_FUNC( z ); \ |
|
valid->func[2] = OTV_FUNC(z); \ |
|
193 |
FT_END_STMNT |
FT_END_STMNT |
194 |
|
|
195 |
#define OTV_INIT do ; while ( 0 ) |
#define OTV_INIT do ; while ( 0 ) |
332 |
/*************************************************************************/ |
/*************************************************************************/ |
333 |
/*************************************************************************/ |
/*************************************************************************/ |
334 |
|
|
|
#if 0 |
|
|
#define ChainPosClassSet otv_x_Ox, "ChainPosClassSet" |
|
|
#define ChainPosRuleSet otv_x_Ox, "ChainPosRuleSet" |
|
|
#define ChainSubClassSet otv_x_Ox, "ChainSubClassSet" |
|
|
#define ChainSubRuleSet otv_x_Ox, "ChainSubRuleSet" |
|
|
#define JstfLangSys otv_x_Ox, "JstfLangSys" |
|
|
#define JstfMax otv_x_Ox, "JstfMax" |
|
|
#define LigGlyph otv_x_Ox, "LigGlyph" |
|
|
#define LigatureArray otv_x_Ox, "LigatureArray" |
|
|
#define LigatureSet otv_x_Ox, "LigatureSet" |
|
|
#define PosClassSet otv_x_Ox, "PosClassSet" |
|
|
#define PosRuleSet otv_x_Ox, "PosRuleSet" |
|
|
#define SubClassSet otv_x_Ox, "SubClassSet" |
|
|
#define SubRuleSet otv_x_Ox, "SubRuleSet" |
|
|
#endif |
|
|
|
|
335 |
#define ChainPosClassSetFunc otv_x_Ox |
#define ChainPosClassSetFunc otv_x_Ox |
336 |
#define ChainPosRuleSetFunc otv_x_Ox |
#define ChainPosRuleSetFunc otv_x_Ox |
337 |
#define ChainSubClassSetFunc otv_x_Ox |
#define ChainSubClassSetFunc otv_x_Ox |
350 |
otv_x_Ox ( FT_Bytes table, |
otv_x_Ox ( FT_Bytes table, |
351 |
OTV_Validator valid ); |
OTV_Validator valid ); |
352 |
|
|
|
#if 0 |
|
|
#define AlternateSubstFormat1 otv_u_C_x_Ox, "AlternateSubstFormat1" |
|
|
#define ChainContextPosFormat1 otv_u_C_x_Ox, "ChainContextPosFormat1" |
|
|
#define ChainContextSubstFormat1 otv_u_C_x_Ox, "ChainContextSubstFormat1" |
|
|
#define ContextPosFormat1 otv_u_C_x_Ox, "ContextPosFormat1" |
|
|
#define ContextSubstFormat1 otv_u_C_x_Ox, "ContextSubstFormat1" |
|
|
#define LigatureSubstFormat1 otv_u_C_x_Ox, "LigatureSubstFormat1" |
|
|
#define MultipleSubstFormat1 otv_u_C_x_Ox, "MultipleSubstFormat1" |
|
|
#endif |
|
|
|
|
353 |
#define AlternateSubstFormat1Func otv_u_C_x_Ox |
#define AlternateSubstFormat1Func otv_u_C_x_Ox |
354 |
#define ChainContextPosFormat1Func otv_u_C_x_Ox |
#define ChainContextPosFormat1Func otv_u_C_x_Ox |
355 |
#define ChainContextSubstFormat1Func otv_u_C_x_Ox |
#define ChainContextSubstFormat1Func otv_u_C_x_Ox |
358 |
#define LigatureSubstFormat1Func otv_u_C_x_Ox |
#define LigatureSubstFormat1Func otv_u_C_x_Ox |
359 |
#define MultipleSubstFormat1Func otv_u_C_x_Ox |
#define MultipleSubstFormat1Func otv_u_C_x_Ox |
360 |
|
|
|
|
|
361 |
FT_LOCAL( void ) |
FT_LOCAL( void ) |
362 |
otv_u_C_x_Ox( FT_Bytes table, |
otv_u_C_x_Ox( FT_Bytes table, |
363 |
OTV_Validator valid ); |
OTV_Validator valid ); |
364 |
|
|
|
#if 0 |
|
|
#define AlternateSet otv_x_ux, "AlternateSet" |
|
|
#define AttachPoint otv_x_ux, "AttachPoint" |
|
|
#define ExtenderGlyph otv_x_ux, "ExtenderGlyph" |
|
|
#define JstfGPOSModList otv_x_ux, "JstfGPOSModList" |
|
|
#define JstfGSUBModList otv_x_ux, "JstfGSUBModList" |
|
|
#define Sequence otv_x_ux, "Sequence" |
|
|
#endif |
|
365 |
#define AlternateSetFunc otv_x_ux |
#define AlternateSetFunc otv_x_ux |
366 |
#define AttachPointFunc otv_x_ux |
#define AttachPointFunc otv_x_ux |
367 |
#define ExtenderGlyphFunc otv_x_ux |
#define ExtenderGlyphFunc otv_x_ux |
373 |
otv_x_ux( FT_Bytes table, |
otv_x_ux( FT_Bytes table, |
374 |
OTV_Validator valid ); |
OTV_Validator valid ); |
375 |
|
|
|
#if 0 |
|
|
#define PosClassRule otv_x_y_ux_sy, "PosClassRule" |
|
|
#define PosRule otv_x_y_ux_sy, "PosRule" |
|
|
#define SubClassRule otv_x_y_ux_sy, "SubClassRule" |
|
|
#define SubRule otv_x_y_ux_sy, "SubRule" |
|
|
#endif |
|
|
|
|
376 |
#define PosClassRuleFunc otv_x_y_ux_sy |
#define PosClassRuleFunc otv_x_y_ux_sy |
377 |
#define PosRuleFunc otv_x_y_ux_sy |
#define PosRuleFunc otv_x_y_ux_sy |
378 |
#define SubClassRuleFunc otv_x_y_ux_sy |
#define SubClassRuleFunc otv_x_y_ux_sy |
382 |
otv_x_y_ux_sy( FT_Bytes table, |
otv_x_y_ux_sy( FT_Bytes table, |
383 |
OTV_Validator valid ); |
OTV_Validator valid ); |
384 |
|
|
|
#if 0 |
|
|
#define ChainPosClassRule otv_x_ux_y_uy_z_uz_p_sp, "ChainPosClassRule" |
|
|
#define ChainPosRule otv_x_ux_y_uy_z_uz_p_sp, "ChainPosRule" |
|
|
#define ChainSubClassRule otv_x_ux_y_uy_z_uz_p_sp, "ChainSubClassRule" |
|
|
#define ChainSubRule otv_x_ux_y_uy_z_uz_p_sp, "ChainSubRule" |
|
|
#endif |
|
|
|
|
385 |
#define ChainPosClassRuleFunc otv_x_ux_y_uy_z_uz_p_sp |
#define ChainPosClassRuleFunc otv_x_ux_y_uy_z_uz_p_sp |
386 |
#define ChainPosRuleFunc otv_x_ux_y_uy_z_uz_p_sp |
#define ChainPosRuleFunc otv_x_ux_y_uy_z_uz_p_sp |
387 |
#define ChainSubClassRuleFunc otv_x_ux_y_uy_z_uz_p_sp |
#define ChainSubClassRuleFunc otv_x_ux_y_uy_z_uz_p_sp |
391 |
otv_x_ux_y_uy_z_uz_p_sp( FT_Bytes table, |
otv_x_ux_y_uy_z_uz_p_sp( FT_Bytes table, |
392 |
OTV_Validator valid ); |
OTV_Validator valid ); |
393 |
|
|
|
#if 0 |
|
|
#define ContextPosFormat2 otv_u_O_O_x_Onx, "ContextPosFormat2" |
|
|
#define ContextSubstFormat2 otv_u_O_O_x_Onx, "ContextSubstFormat2" |
|
|
#endif |
|
|
|
|
394 |
#define ContextPosFormat2Func otv_u_O_O_x_Onx |
#define ContextPosFormat2Func otv_u_O_O_x_Onx |
395 |
#define ContextSubstFormat2Func otv_u_O_O_x_Onx |
#define ContextSubstFormat2Func otv_u_O_O_x_Onx |
396 |
|
|
398 |
otv_u_O_O_x_Onx( FT_Bytes table, |
otv_u_O_O_x_Onx( FT_Bytes table, |
399 |
OTV_Validator valid ); |
OTV_Validator valid ); |
400 |
|
|
|
#if 0 |
|
|
#define ContextPosFormat3 otv_u_x_y_Ox_sy, "ContextPosFormat3" |
|
|
#define ContextSubstFormat3 otv_u_x_y_Ox_sy, "ContextSubstFormat3" |
|
|
#endif |
|
|
|
|
401 |
#define ContextPosFormat3Func otv_u_x_y_Ox_sy |
#define ContextPosFormat3Func otv_u_x_y_Ox_sy |
402 |
#define ContextSubstFormat3Func otv_u_x_y_Ox_sy |
#define ContextSubstFormat3Func otv_u_x_y_Ox_sy |
403 |
|
|
405 |
otv_u_x_y_Ox_sy( FT_Bytes table, |
otv_u_x_y_Ox_sy( FT_Bytes table, |
406 |
OTV_Validator valid ); |
OTV_Validator valid ); |
407 |
|
|
|
#if 0 |
|
|
#define ChainContextPosFormat2 otv_u_O_O_O_O_x_Onx, "ChainContextPosFormat2" |
|
|
#define ChainContextSubstFormat2 otv_u_O_O_O_O_x_Onx, "ChainContextSubstFormat2" |
|
|
#endif |
|
|
|
|
408 |
#define ChainContextPosFormat2Func otv_u_O_O_O_O_x_Onx |
#define ChainContextPosFormat2Func otv_u_O_O_O_O_x_Onx |
409 |
#define ChainContextSubstFormat2Func otv_u_O_O_O_O_x_Onx |
#define ChainContextSubstFormat2Func otv_u_O_O_O_O_x_Onx |
410 |
|
|
412 |
otv_u_O_O_O_O_x_Onx( FT_Bytes table, |
otv_u_O_O_O_O_x_Onx( FT_Bytes table, |
413 |
OTV_Validator valid ); |
OTV_Validator valid ); |
414 |
|
|
|
#if 0 |
|
|
#define ChainContextPosFormat3 otv_u_x_Ox_y_Oy_z_Oz_p_sp, "ChainContextPosFormat3" |
|
|
#define ChainContextSubstFormat3 otv_u_x_Ox_y_Oy_z_Oz_p_sp, "ChainContextSubstFormat3" |
|
|
#endif |
|
|
|
|
415 |
#define ChainContextPosFormat3Func otv_u_x_Ox_y_Oy_z_Oz_p_sp |
#define ChainContextPosFormat3Func otv_u_x_Ox_y_Oy_z_Oz_p_sp |
416 |
#define ChainContextSubstFormat3Func otv_u_x_Ox_y_Oy_z_Oz_p_sp |
#define ChainContextSubstFormat3Func otv_u_x_Ox_y_Oy_z_Oz_p_sp |
417 |
|
|