Converter.i (2273B)
1 /* -*- C++ -*- vim: set syntax=cpp: 2 * (C) 2007-2008 Frank-Rene Schaefer */ 3 #ifndef __QUEX_INCLUDE_GUARD__BUFFER__LEXATOMS__CONVERTER__CONVERTER_I 4 #define __QUEX_INCLUDE_GUARD__BUFFER__LEXATOMS__CONVERTER__CONVERTER_I 5 6 #include "MemoryManager" 7 #include "Converter" 8 9 QUEX_NAMESPACE_MAIN_OPEN 10 11 QUEX_INLINE bool 12 QUEX_NAME(Converter_construct)(QUEX_NAME(Converter)* me, 13 const char* FromCodec, const char* ToCodec, 14 bool (*open)(struct QUEX_NAME(Converter_tag)*, 15 const char* FromCodec, const char* ToCodec), 16 E_LoadResult (*convert)(QUEX_NAME(Converter)*, 17 uint8_t** source, const uint8_t* SourceEnd, 18 QUEX_TYPE_LEXATOM** drain, const QUEX_TYPE_LEXATOM* DrainEnd), 19 void (*delete_self)(QUEX_NAME(Converter)*), 20 ptrdiff_t (*stomach_byte_n)(QUEX_NAME(Converter)*), 21 void (*stomach_clear)(QUEX_NAME(Converter)*)) 22 /* RETURNS: true -- construction succesful 23 * false -- else. */ 24 { 25 me->convert = convert; 26 me->stomach_byte_n = stomach_byte_n; 27 me->stomach_clear = stomach_clear; 28 me->delete_self = delete_self; 29 30 me->virginity_f = true; 31 me->byte_n_per_lexatom = -1; /* No fixed ratio 'byte_n/lexatom' */ 32 me->ownership = E_Ownership_EXTERNAL; 33 34 /* Opens internally a conversion handle for the conversion from 'FromCodec' 35 * to 'ToCodec'. Pass '0x0' as 'ToCodec' in order to indicate a conversion 36 * to unicode of size sizeof(QUEX_TYPE_LEXATOM). 37 * 38 * It is the task of the particular implementation to provide the 'ToCodec' 39 * which is appropriate for sizeof(QUEX_TYPE_LEXATOM), i.e. ASCII, UCS2, 40 * UCS4. */ 41 42 return open(me, FromCodec, ToCodec); 43 } 44 45 QUEX_NAMESPACE_MAIN_CLOSE 46 47 #endif /* __QUEX_INCLUDE_GUARD__BUFFER__LEXATOMS__CONVERTER__CONVERTER_I */