| #ifndef __OTL_PARSER_H__ |
| #define __OTL_PARSER_H__ |
| |
| #include "otlayout.h" |
| #include "otlgdef.h" |
| #include "otlgsub.h" |
| #include "otlgpos.h" |
| |
| OTL_BEGIN_HEADER |
| |
| typedef struct OTL_ParserRec_* OTL_Parser; |
| |
| typedef struct OTL_StringRec_* OTL_String; |
| |
| typedef struct OTL_StringGlyphRec_ |
| { |
| OTL_UInt gindex; |
| OTL_UInt properties; |
| OTL_UInt lig_component; |
| OTL_UInt lig_id; |
| |
| } OTL_StringGlyphRec, *OTL_StringGlyph; |
| |
| typedef struct OTL_StringRec_ |
| { |
| OTL_StringGlyph glyphs; |
| OTL_UInt cursor; |
| OTL_UInt length; |
| OTL_UInt capacity; |
| |
| } OTL_StringRec; |
| |
| typedef struct OTL_ParserRec_ |
| { |
| OTL_Bytes tab_gdef; |
| OTL_Bytes tab_gsub; |
| OTL_Bytes tab_gpos; |
| OTL_Bytes tab_base; |
| OTL_Bytes tab_jstf; |
| |
| OTL_Alternate alternate; /* external alternate handler */ |
| |
| OTL_UInt context_len; |
| OTL_UInt markup_flags; |
| |
| OTL_jmp_buf jump_buffer; |
| OTL_Memory memory; |
| OTL_Error error; |
| |
| OTL_StringRec strings[2]; |
| OTL_String str_in; |
| OTL_String str_out; |
| |
| } OTL_ParserRec; |
| |
| typedef enum |
| { |
| OTL_Err_Parser_Ok = 0, |
| OTL_Err_Parser_InvalidData, |
| OTL_Err_Parser_UncoveredGlyph |
| |
| } OTL_ParseError; |
| |
| OTL_LOCAL( OTL_UInt ) |
| otl_parser_get_gindex( OTL_Parser parser ); |
| |
| |
| OTL_LOCAL( void ) |
| otl_parser_error( OTL_Parser parser, OTL_ParserError error ); |
| |
| #define OTL_PARSER_UNCOVERED(x) \ |
| otl_parser_error( x, OTL_Err_Parser_UncoveredGlyph ) |
| |
| OTL_LOCAL( void ) |
| otl_parser_check_property( OTL_Parser parser, |
| OTL_UInt gindex, |
| OTL_UInt flags, |
| OTL_UInt *aproperty ); |
| |
| /* copy current input glyph to output */ |
| OTL_LOCAL( void ) |
| otl_parser_copy_1( OTL_Parser parser ); |
| |
| /* copy current input glyph to output, replacing its index */ |
| OTL_LOCAL( void ) |
| otl_parser_replace_1( OTL_Parser parser, |
| OTL_UInt gindex ); |
| |
| /* copy current input glyph to output, replacing it by several indices */ |
| /* read directly from the table */ |
| OTL_LOCAL( void ) |
| otl_parser_replace_n( OTL_Parser parser, |
| OTL_UInt count, |
| OTL_Bytes indices ); |
| |
| OTL_END_HEADER |
| |
| #endif /* __OTL_PARSER_H__ */ |
| |