109 |
FT_END_STMNT |
FT_END_STMNT |
110 |
|
|
111 |
|
|
112 |
|
#define OTV_NAME_(x) #x |
113 |
|
#define OTV_NAME(x) OTV_NAME_(x) |
114 |
|
|
115 |
|
#define OTV_FUNC_(x) x##Func |
116 |
|
#define OTV_FUNC(x) OTV_FUNC_(x) |
117 |
|
|
118 |
#ifdef FT_DEBUG_LEVEL_TRACE |
#ifdef FT_DEBUG_LEVEL_TRACE |
119 |
|
|
120 |
/* use preprocessor's argument prescan to expand one argument into two */ |
/* use preprocessor's argument prescan to expand one argument into two */ |
121 |
#define OTV_NEST1( x ) OTV_NEST1_( x ) |
#define OTV_NEST1( x ) \ |
122 |
#define OTV_NEST1_( func0, name0 ) \ |
FT_BEGIN_STMNT \ |
123 |
FT_BEGIN_STMNT \ |
valid->nesting_level = 0; \ |
124 |
valid->nesting_level = 0; \ |
valid->func[0] = OTV_FUNC(x); \ |
125 |
valid->func[0] = func0; \ |
valid->debug_function_name[0] = OTV_NAME(x); \ |
|
valid->debug_function_name[0] = name0; \ |
|
126 |
FT_END_STMNT |
FT_END_STMNT |
127 |
|
|
128 |
/* use preprocessor's argument prescan to expand two arguments into four */ |
/* use preprocessor's argument prescan to expand two arguments into four */ |
129 |
#define OTV_NEST2( x, y ) OTV_NEST2_( x, y ) |
#define OTV_NEST2( x, y ) \ |
130 |
#define OTV_NEST2_( func0, name0, func1, name1 ) \ |
FT_BEGIN_STMNT \ |
131 |
FT_BEGIN_STMNT \ |
valid->nesting_level = 0; \ |
132 |
valid->nesting_level = 0; \ |
valid->func[0] = OTV_FUNC(x); \ |
133 |
valid->func[0] = func0; \ |
valid->func[1] = OTV_FUNC(y); \ |
134 |
valid->func[1] = func1; \ |
valid->debug_function_name[0] = OTV_NAME(x); \ |
135 |
valid->debug_function_name[0] = name0; \ |
valid->debug_function_name[1] = OTV_NAME(y); \ |
|
valid->debug_function_name[1] = name1; \ |
|
136 |
FT_END_STMNT |
FT_END_STMNT |
137 |
|
|
138 |
/* use preprocessor's argument prescan to expand three arguments into six */ |
/* use preprocessor's argument prescan to expand three arguments into six */ |
139 |
#define OTV_NEST3( x, y, z ) OTV_NEST3_( x, y, z ) |
#define OTV_NEST3( x, y, z ) \ |
140 |
#define OTV_NEST3_( func0, name0, func1, name1, func2, name2 ) \ |
FT_BEGIN_STMNT \ |
141 |
FT_BEGIN_STMNT \ |
valid->nesting_level = 0; \ |
142 |
valid->nesting_level = 0; \ |
valid->func[0] = OTV_FUNC(x); \ |
143 |
valid->func[0] = func0; \ |
valid->func[1] = OTV_FUNC(y); \ |
144 |
valid->func[1] = func1; \ |
valid->func[2] = OTV_FUNC(z); \ |
145 |
valid->func[2] = func2; \ |
valid->debug_function_name[0] = OTV_NAME(x); \ |
146 |
valid->debug_function_name[0] = name0; \ |
valid->debug_function_name[1] = OTV_NAME(y); \ |
147 |
valid->debug_function_name[1] = name1; \ |
valid->debug_function_name[2] = OTV_NAME(z); \ |
|
valid->debug_function_name[2] = name2; \ |
|
148 |
FT_END_STMNT |
FT_END_STMNT |
149 |
|
|
150 |
#define OTV_INIT valid->debug_indent = 0 |
#define OTV_INIT valid->debug_indent = 0 |
175 |
#else /* !FT_DEBUG_LEVEL_TRACE */ |
#else /* !FT_DEBUG_LEVEL_TRACE */ |
176 |
|
|
177 |
/* use preprocessor's argument prescan to expand one argument into two */ |
/* use preprocessor's argument prescan to expand one argument into two */ |
178 |
#define OTV_NEST1( x ) OTV_NEST1_( x ) |
#define OTV_NEST1( x ) \ |
179 |
#define OTV_NEST1_( func0, name0 ) \ |
FT_BEGIN_STMNT \ |
180 |
FT_BEGIN_STMNT \ |
valid->nesting_level = 0; \ |
181 |
valid->nesting_level = 0; \ |
valid->func[0] = OTV_FUNC(x); \ |
|
valid->func[0] = func0; \ |
|
182 |
FT_END_STMNT |
FT_END_STMNT |
183 |
|
|
184 |
/* use preprocessor's argument prescan to expand two arguments into four */ |
/* use preprocessor's argument prescan to expand two arguments into four */ |
185 |
#define OTV_NEST2( x, y ) OTV_NEST2_( x, y ) |
#define OTV_NEST2( x, y ) \ |
|
#define OTV_NEST2_( func0, name0, func1, name1 ) \ |
|
186 |
FT_BEGIN_STMNT \ |
FT_BEGIN_STMNT \ |
187 |
valid->nesting_level = 0; \ |
valid->nesting_level = 0; \ |
188 |
valid->func[0] = func0; \ |
valid->func[0] = OTV_FUNC(x); \ |
189 |
valid->func[1] = func1; \ |
valid->func[1] = OTV_FUNC(y); \ |
190 |
FT_END_STMNT |
FT_END_STMNT |
191 |
|
|
192 |
/* use preprocessor's argument prescan to expand three arguments into six */ |
/* use preprocessor's argument prescan to expand three arguments into six */ |
193 |
#define OTV_NEST3( x, y, z ) OTV_NEST3_( x, y, z ) |
#define OTV_NEST3( x, y, z ) \ |
194 |
#define OTV_NEST3_( func0, name0, func1, name1, func2, name2 ) \ |
FT_BEGIN_STMNT \ |
195 |
FT_BEGIN_STMNT \ |
valid->nesting_level = 0; \ |
196 |
valid->nesting_level = 0; \ |
valid->func[0] = OTV_FUNC(x); \ |
197 |
valid->func[0] = func0; \ |
valid->func[1] = OTV_FUNC(y); \ |
198 |
valid->func[1] = func1; \ |
valid->func[2] = OTV_FUNC(z); \ |
|
valid->func[2] = func2; \ |
|
199 |
FT_END_STMNT |
FT_END_STMNT |
200 |
|
|
201 |
#define OTV_INIT do ; while ( 0 ) |
#define OTV_INIT do ; while ( 0 ) |
338 |
/*************************************************************************/ |
/*************************************************************************/ |
339 |
/*************************************************************************/ |
/*************************************************************************/ |
340 |
|
|
341 |
|
#if 0 |
342 |
#define ChainPosClassSet otv_x_Ox, "ChainPosClassSet" |
#define ChainPosClassSet otv_x_Ox, "ChainPosClassSet" |
343 |
#define ChainPosRuleSet otv_x_Ox, "ChainPosRuleSet" |
#define ChainPosRuleSet otv_x_Ox, "ChainPosRuleSet" |
344 |
#define ChainSubClassSet otv_x_Ox, "ChainSubClassSet" |
#define ChainSubClassSet otv_x_Ox, "ChainSubClassSet" |
352 |
#define PosRuleSet otv_x_Ox, "PosRuleSet" |
#define PosRuleSet otv_x_Ox, "PosRuleSet" |
353 |
#define SubClassSet otv_x_Ox, "SubClassSet" |
#define SubClassSet otv_x_Ox, "SubClassSet" |
354 |
#define SubRuleSet otv_x_Ox, "SubRuleSet" |
#define SubRuleSet otv_x_Ox, "SubRuleSet" |
355 |
|
#endif |
356 |
|
|
357 |
|
#define ChainPosClassSetFunc otv_x_Ox |
358 |
|
#define ChainPosRuleSetFunc otv_x_Ox |
359 |
|
#define ChainSubClassSetFunc otv_x_Ox |
360 |
|
#define ChainSubRuleSetFunc otv_x_Ox |
361 |
|
#define JstfLangSysFunc otv_x_Ox |
362 |
|
#define JstfMaxFunc otv_x_Ox |
363 |
|
#define LigGlyphFunc otv_x_Ox |
364 |
|
#define LigatureArrayFunc otv_x_Ox |
365 |
|
#define LigatureSetFunc otv_x_Ox |
366 |
|
#define PosClassSetFunc otv_x_Ox |
367 |
|
#define PosRuleSetFunc otv_x_Ox |
368 |
|
#define SubClassSetFunc otv_x_Ox |
369 |
|
#define SubRuleSetFunc otv_x_Ox |
370 |
|
|
371 |
FT_LOCAL( void ) |
FT_LOCAL( void ) |
372 |
otv_x_Ox ( FT_Bytes table, |
otv_x_Ox ( FT_Bytes table, |
373 |
OTV_Validator valid ); |
OTV_Validator valid ); |
374 |
|
|
375 |
|
#if 0 |
376 |
#define AlternateSubstFormat1 otv_u_C_x_Ox, "AlternateSubstFormat1" |
#define AlternateSubstFormat1 otv_u_C_x_Ox, "AlternateSubstFormat1" |
377 |
#define ChainContextPosFormat1 otv_u_C_x_Ox, "ChainContextPosFormat1" |
#define ChainContextPosFormat1 otv_u_C_x_Ox, "ChainContextPosFormat1" |
378 |
#define ChainContextSubstFormat1 otv_u_C_x_Ox, "ChainContextSubstFormat1" |
#define ChainContextSubstFormat1 otv_u_C_x_Ox, "ChainContextSubstFormat1" |
380 |
#define ContextSubstFormat1 otv_u_C_x_Ox, "ContextSubstFormat1" |
#define ContextSubstFormat1 otv_u_C_x_Ox, "ContextSubstFormat1" |
381 |
#define LigatureSubstFormat1 otv_u_C_x_Ox, "LigatureSubstFormat1" |
#define LigatureSubstFormat1 otv_u_C_x_Ox, "LigatureSubstFormat1" |
382 |
#define MultipleSubstFormat1 otv_u_C_x_Ox, "MultipleSubstFormat1" |
#define MultipleSubstFormat1 otv_u_C_x_Ox, "MultipleSubstFormat1" |
383 |
|
#endif |
384 |
|
|
385 |
|
#define AlternateSubstFormat1Func otv_u_C_x_Ox |
386 |
|
#define ChainContextPosFormat1Func otv_u_C_x_Ox |
387 |
|
#define ChainContextSubstFormat1Func otv_u_C_x_Ox |
388 |
|
#define ContextPosFormat1Func otv_u_C_x_Ox |
389 |
|
#define ContextSubstFormat1Func otv_u_C_x_Ox |
390 |
|
#define LigatureSubstFormat1Func otv_u_C_x_Ox |
391 |
|
#define MultipleSubstFormat1Func otv_u_C_x_Ox |
392 |
|
|
393 |
|
|
394 |
FT_LOCAL( void ) |
FT_LOCAL( void ) |
395 |
otv_u_C_x_Ox( FT_Bytes table, |
otv_u_C_x_Ox( FT_Bytes table, |
396 |
OTV_Validator valid ); |
OTV_Validator valid ); |
397 |
|
|
398 |
|
#if 0 |
399 |
#define AlternateSet otv_x_ux, "AlternateSet" |
#define AlternateSet otv_x_ux, "AlternateSet" |
400 |
#define AttachPoint otv_x_ux, "AttachPoint" |
#define AttachPoint otv_x_ux, "AttachPoint" |
401 |
#define ExtenderGlyph otv_x_ux, "ExtenderGlyph" |
#define ExtenderGlyph otv_x_ux, "ExtenderGlyph" |
402 |
#define JstfGPOSModList otv_x_ux, "JstfGPOSModList" |
#define JstfGPOSModList otv_x_ux, "JstfGPOSModList" |
403 |
#define JstfGSUBModList otv_x_ux, "JstfGSUBModList" |
#define JstfGSUBModList otv_x_ux, "JstfGSUBModList" |
404 |
#define Sequence otv_x_ux, "Sequence" |
#define Sequence otv_x_ux, "Sequence" |
405 |
|
#endif |
406 |
|
#define AlternateSetFunc otv_x_ux |
407 |
|
#define AttachPointFunc otv_x_ux |
408 |
|
#define ExtenderGlyphFunc otv_x_ux |
409 |
|
#define JstfGPOSModListFunc otv_x_ux |
410 |
|
#define JstfGSUBModListFunc otv_x_ux |
411 |
|
#define SequenceFunc otv_x_ux |
412 |
|
|
413 |
FT_LOCAL( void ) |
FT_LOCAL( void ) |
414 |
otv_x_ux( FT_Bytes table, |
otv_x_ux( FT_Bytes table, |
415 |
OTV_Validator valid ); |
OTV_Validator valid ); |
416 |
|
|
417 |
|
#if 0 |
418 |
#define PosClassRule otv_x_y_ux_sy, "PosClassRule" |
#define PosClassRule otv_x_y_ux_sy, "PosClassRule" |
419 |
#define PosRule otv_x_y_ux_sy, "PosRule" |
#define PosRule otv_x_y_ux_sy, "PosRule" |
420 |
#define SubClassRule otv_x_y_ux_sy, "SubClassRule" |
#define SubClassRule otv_x_y_ux_sy, "SubClassRule" |
421 |
#define SubRule otv_x_y_ux_sy, "SubRule" |
#define SubRule otv_x_y_ux_sy, "SubRule" |
422 |
|
#endif |
423 |
|
|
424 |
|
#define PosClassRuleFunc otv_x_y_ux_sy |
425 |
|
#define PosRuleFunc otv_x_y_ux_sy |
426 |
|
#define SubClassRuleFunc otv_x_y_ux_sy |
427 |
|
#define SubRuleFunc otv_x_y_ux_sy |
428 |
|
|
429 |
FT_LOCAL( void ) |
FT_LOCAL( void ) |
430 |
otv_x_y_ux_sy( FT_Bytes table, |
otv_x_y_ux_sy( FT_Bytes table, |
431 |
OTV_Validator valid ); |
OTV_Validator valid ); |
432 |
|
|
433 |
|
#if 0 |
434 |
#define ChainPosClassRule otv_x_ux_y_uy_z_uz_p_sp, "ChainPosClassRule" |
#define ChainPosClassRule otv_x_ux_y_uy_z_uz_p_sp, "ChainPosClassRule" |
435 |
#define ChainPosRule otv_x_ux_y_uy_z_uz_p_sp, "ChainPosRule" |
#define ChainPosRule otv_x_ux_y_uy_z_uz_p_sp, "ChainPosRule" |
436 |
#define ChainSubClassRule otv_x_ux_y_uy_z_uz_p_sp, "ChainSubClassRule" |
#define ChainSubClassRule otv_x_ux_y_uy_z_uz_p_sp, "ChainSubClassRule" |
437 |
#define ChainSubRule otv_x_ux_y_uy_z_uz_p_sp, "ChainSubRule" |
#define ChainSubRule otv_x_ux_y_uy_z_uz_p_sp, "ChainSubRule" |
438 |
|
#endif |
439 |
|
|
440 |
|
#define ChainPosClassRuleFunc otv_x_ux_y_uy_z_uz_p_sp |
441 |
|
#define ChainPosRuleFunc otv_x_ux_y_uy_z_uz_p_sp |
442 |
|
#define ChainSubClassRuleFunc otv_x_ux_y_uy_z_uz_p_sp |
443 |
|
#define ChainSubRuleFunc otv_x_ux_y_uy_z_uz_p_sp |
444 |
|
|
445 |
FT_LOCAL( void ) |
FT_LOCAL( void ) |
446 |
otv_x_ux_y_uy_z_uz_p_sp( FT_Bytes table, |
otv_x_ux_y_uy_z_uz_p_sp( FT_Bytes table, |
447 |
OTV_Validator valid ); |
OTV_Validator valid ); |
448 |
|
|
449 |
|
#if 0 |
450 |
#define ContextPosFormat2 otv_u_O_O_x_Onx, "ContextPosFormat2" |
#define ContextPosFormat2 otv_u_O_O_x_Onx, "ContextPosFormat2" |
451 |
#define ContextSubstFormat2 otv_u_O_O_x_Onx, "ContextSubstFormat2" |
#define ContextSubstFormat2 otv_u_O_O_x_Onx, "ContextSubstFormat2" |
452 |
|
#endif |
453 |
|
|
454 |
|
#define ContextPosFormat2Func otv_u_O_O_x_Onx |
455 |
|
#define ContextSubstFormat2Func otv_u_O_O_x_Onx |
456 |
|
|
457 |
FT_LOCAL( void ) |
FT_LOCAL( void ) |
458 |
otv_u_O_O_x_Onx( FT_Bytes table, |
otv_u_O_O_x_Onx( FT_Bytes table, |
459 |
OTV_Validator valid ); |
OTV_Validator valid ); |
460 |
|
|
461 |
|
#if 0 |
462 |
#define ContextPosFormat3 otv_u_x_y_Ox_sy, "ContextPosFormat3" |
#define ContextPosFormat3 otv_u_x_y_Ox_sy, "ContextPosFormat3" |
463 |
#define ContextSubstFormat3 otv_u_x_y_Ox_sy, "ContextSubstFormat3" |
#define ContextSubstFormat3 otv_u_x_y_Ox_sy, "ContextSubstFormat3" |
464 |
|
#endif |
465 |
|
|
466 |
|
#define ContextPosFormat3Func otv_u_x_y_Ox_sy |
467 |
|
#define ContextSubstFormat3Func otv_u_x_y_Ox_sy |
468 |
|
|
469 |
FT_LOCAL( void ) |
FT_LOCAL( void ) |
470 |
otv_u_x_y_Ox_sy( FT_Bytes table, |
otv_u_x_y_Ox_sy( FT_Bytes table, |
471 |
OTV_Validator valid ); |
OTV_Validator valid ); |
472 |
|
|
473 |
#define ChainContextPosFormat2 otv_u_O_O_O_O_x_Onx, "ChainContextPosFormat2" |
#if 0 |
474 |
#define ChainContextSubstFormat2 otv_u_O_O_O_O_x_Onx, "ChainContextSubstFormat2" |
#define ChainContextPosFormat2 otv_u_O_O_O_O_x_Onx, "ChainContextPosFormat2" |
475 |
|
#define ChainContextSubstFormat2 otv_u_O_O_O_O_x_Onx, "ChainContextSubstFormat2" |
476 |
|
#endif |
477 |
|
|
478 |
|
#define ChainContextPosFormat2Func otv_u_O_O_O_O_x_Onx |
479 |
|
#define ChainContextSubstFormat2Func otv_u_O_O_O_O_x_Onx |
480 |
|
|
481 |
FT_LOCAL( void ) |
FT_LOCAL( void ) |
482 |
otv_u_O_O_O_O_x_Onx( FT_Bytes table, |
otv_u_O_O_O_O_x_Onx( FT_Bytes table, |
483 |
OTV_Validator valid ); |
OTV_Validator valid ); |
484 |
|
|
485 |
#define ChainContextPosFormat3 otv_u_x_Ox_y_Oy_z_Oz_p_sp, "ChainContextPosFormat3" |
#if 0 |
486 |
#define ChainContextSubstFormat3 otv_u_x_Ox_y_Oy_z_Oz_p_sp, "ChainContextSubstFormat3" |
#define ChainContextPosFormat3 otv_u_x_Ox_y_Oy_z_Oz_p_sp, "ChainContextPosFormat3" |
487 |
|
#define ChainContextSubstFormat3 otv_u_x_Ox_y_Oy_z_Oz_p_sp, "ChainContextSubstFormat3" |
488 |
|
#endif |
489 |
|
|
490 |
|
#define ChainContextPosFormat3Func otv_u_x_Ox_y_Oy_z_Oz_p_sp |
491 |
|
#define ChainContextSubstFormat3Func otv_u_x_Ox_y_Oy_z_Oz_p_sp |
492 |
|
|
493 |
FT_LOCAL( void ) |
FT_LOCAL( void ) |
494 |
otv_u_x_Ox_y_Oy_z_Oz_p_sp( FT_Bytes table, |
otv_u_x_Ox_y_Oy_z_Oz_p_sp( FT_Bytes table, |