misc.i (7266B)
1 /* -*- C++ -*- vim: set syntax=cpp: 2 * (C) Frankt-Rene Schaefer 3 * ABSOLUTELY NO WARRANTY */ 4 #ifndef __QUEX_INCLUDE_GUARD__ANALYZER__MEMBER__MISC_I 5 #define __QUEX_INCLUDE_GUARD__ANALYZER__MEMBER__MISC_I 6 7 #if defined(__QUEX_OPTION_COUNTER) 8 # include "analyzerCounter" 9 #endif 10 #include "TokenPolicy" 11 12 QUEX_NAMESPACE_MAIN_OPEN 13 14 QUEX_INLINE QUEX_TYPE_LEXATOM* 15 QUEX_MEMBER_FUNCTIONO(lexeme_start_pointer_get) 16 { QUEX_MAP_THIS_TO_ME(QUEX_TYPE_ANALYZER) return me->buffer._lexeme_start_p; } 17 18 QUEX_INLINE QUEX_TYPE_LEXATOM* 19 QUEX_MEMBER_FUNCTIONO(input_pointer_get) 20 { QUEX_MAP_THIS_TO_ME(QUEX_TYPE_ANALYZER) return me->buffer._read_p; } 21 22 QUEX_INLINE void 23 QUEX_MEMBER_FUNCTIONO1(input_pointer_set, QUEX_TYPE_LEXATOM* Adr) 24 { QUEX_MAP_THIS_TO_ME(QUEX_TYPE_ANALYZER) me->buffer._read_p = Adr; } 25 26 QUEX_INLINE void 27 QUEX_NAME(set_callback_on_buffer_content_change)(QUEX_TYPE_ANALYZER* me, 28 void (*callback)(const QUEX_TYPE_LEXATOM*, 29 const QUEX_TYPE_LEXATOM*)) 30 { me->buffer.on_content_change = callback; } 31 32 QUEX_INLINE QUEX_TYPE_TOKEN* 33 QUEX_NAME(token_p)(QUEX_TYPE_ANALYZER* me) 34 { 35 # define self (*(QUEX_TYPE_DERIVED_ANALYZER*)me) 36 return __QUEX_CURRENT_TOKEN_P; 37 # undef self 38 } 39 40 #ifdef QUEX_OPTION_TOKEN_POLICY_SINGLE 41 QUEX_INLINE QUEX_TYPE_TOKEN* 42 QUEX_NAME(token_p_swap)(QUEX_TYPE_ANALYZER* me, QUEX_TYPE_TOKEN* TokenP) 43 { 44 QUEX_TYPE_TOKEN* prev_token_p = me->token; 45 me->token = TokenP; 46 return prev_token_p; 47 } 48 49 # if defined(QUEX_OPTION_USER_MANAGED_TOKEN_MEMORY) 50 QUEX_INLINE void 51 QUEX_NAME(token_p_set)(QUEX_TYPE_ANALYZER* me, 52 QUEX_TYPE_TOKEN* TokenP) 53 { me->token = TokenP; } 54 55 # endif 56 #else 57 QUEX_INLINE bool 58 QUEX_NAME(token_queue_is_empty)(QUEX_TYPE_ANALYZER* me) 59 { 60 return QUEX_NAME(TokenQueue_is_empty)(&me->_token_queue); 61 } 62 63 QUEX_INLINE void 64 QUEX_NAME(token_queue_remainder_get)(QUEX_TYPE_ANALYZER* me, 65 QUEX_TYPE_TOKEN** begin, 66 QUEX_TYPE_TOKEN** end) 67 { QUEX_NAME(TokenQueue_remainder_get)(&me->_token_queue, begin, end); } 68 69 QUEX_INLINE void 70 QUEX_NAME(token_queue_swap)(QUEX_TYPE_ANALYZER* me, 71 QUEX_TYPE_TOKEN** memory, size_t* n) 72 { 73 QUEX_TYPE_TOKEN* prev_memory = 0x0; 74 size_t prev_n = (size_t)-1; 75 QUEX_NAME(TokenQueue_memory_get)(&me->_token_queue, &prev_memory, &prev_n); 76 QUEX_NAME(TokenQueue_init)(&me->_token_queue, *memory, *memory + *n); 77 *memory = prev_memory; 78 *n = prev_n; 79 } 80 # if defined(QUEX_OPTION_USER_MANAGED_TOKEN_MEMORY) 81 QUEX_INLINE void QUEX_NAME(token_queue_get)(QUEX_TYPE_ANALYZER* me, 82 QUEX_TYPE_TOKEN** begin, size_t* size) 83 { 84 QUEX_NAME(TokenQueue_memory_get)(&me->_token_queue, begin, size); 85 } 86 87 QUEX_INLINE void QUEX_NAME(token_queue_set)(QUEX_TYPE_ANALYZER* me, 88 QUEX_TYPE_TOKEN* Begin, 89 size_t Size) 90 { 91 QUEX_NAME(TokenQueue_init)(&me->_token_queue, Begin, Begin + Size); 92 } 93 94 # endif 95 96 #endif 97 98 99 QUEX_INLINE const char* 100 QUEX_NAME(version)(QUEX_TYPE_ANALYZER* me) 101 { 102 (void)me; 103 return QUEX_STRING(QUEX_TYPE_ANALYZER) \ 104 ": Version " QUEX_SETTING_ANALYZER_VERSION \ 105 ". Date " QUEX_SETTING_BUILD_DATE \ 106 "Generated by Quex " QUEX_SETTING_VERSION "."; 107 } 108 109 QUEX_INLINE bool 110 QUEX_NAME(byte_order_reversion)(QUEX_TYPE_ANALYZER* me) 111 { 112 __quex_assert(me->buffer.filler); 113 return me->buffer.filler->_byte_order_reversion_active_f; 114 } 115 116 QUEX_INLINE void 117 QUEX_NAME(byte_order_reversion_set)(QUEX_TYPE_ANALYZER* me, bool Value) 118 { 119 __quex_assert(me->buffer.filler); 120 me->buffer.filler->_byte_order_reversion_active_f = Value; 121 } 122 123 124 QUEX_INLINE void 125 QUEX_NAME(print_this)(QUEX_TYPE_ANALYZER* me) 126 { 127 QUEX_NAME(Mode)** iterator = 0x0; 128 129 __QUEX_STD_printf(" CurrentMode = %s;\n", 130 me->__current_mode_p == 0x0 ? "0x0" : me->__current_mode_p->name); 131 132 QUEX_NAME(Buffer_print_this)(&me->buffer); 133 134 # ifdef QUEX_OPTION_STRING_ACCUMULATOR 135 QUEX_NAME(Accumulator_print_this)(&me->accumulator); 136 # endif 137 138 __QUEX_IF_COUNT( QUEX_NAME(Counter_print_this)(&me->counter); ) 139 140 # ifdef QUEX_OPTION_POST_CATEGORIZER 141 QUEX_NAME(PostCategorizer_print_this)(&me->post_categorizer); 142 # endif 143 144 __QUEX_STD_printf(" Mode Stack (%i/%i) = [", 145 (int)(me->_mode_stack.end - me->_mode_stack.begin), 146 (int)(me->_mode_stack.memory_end - me->_mode_stack.begin)); 147 for(iterator=me->_mode_stack.end-1; iterator >= me->_mode_stack.begin; --iterator) 148 __QUEX_STD_printf("%s, ", (*iterator)->name); 149 150 __QUEX_STD_printf("]\n"); 151 __QUEX_STD_printf(" ByteOrderInversion = %s;\n", 152 QUEX_NAME(byte_order_reversion)(me) ? "true" : "false"); 153 } 154 155 #if ! defined(__QUEX_OPTION_PLAIN_C) 156 QUEX_INLINE void 157 QUEX_MEMBER(set_callback_on_buffer_content_change)(void (*callback)(const QUEX_TYPE_LEXATOM*, 158 const QUEX_TYPE_LEXATOM*)) 159 { QUEX_NAME(set_callback_on_buffer_content_change)(this, callback); } 160 161 QUEX_INLINE QUEX_TYPE_TOKEN* 162 QUEX_MEMBER(token_p)() 163 { return QUEX_NAME(token_p)(this); } 164 165 #if defined(QUEX_OPTION_TOKEN_POLICY_SINGLE) 166 167 QUEX_INLINE QUEX_TYPE_TOKEN* 168 QUEX_MEMBER(token_p_swap)(QUEX_TYPE_TOKEN* TokenP) 169 { return QUEX_NAME(token_p_swap)(this, TokenP); } 170 171 #else 172 QUEX_INLINE bool 173 QUEX_MEMBER(token_queue_is_empty)() 174 { return QUEX_NAME(token_queue_is_empty)(this); } 175 176 QUEX_INLINE void 177 QUEX_MEMBER(token_queue_remainder_get)(QUEX_TYPE_TOKEN** begin, 178 QUEX_TYPE_TOKEN** end) 179 { QUEX_NAME(token_queue_remainder_get)(this, begin, end); } 180 181 QUEX_INLINE void 182 QUEX_MEMBER(token_queue_swap)(QUEX_TYPE_TOKEN** memory, size_t* n) 183 { QUEX_NAME(token_queue_swap)(this, memory, n); } 184 185 # if defined(QUEX_OPTION_USER_MANAGED_TOKEN_MEMORY) 186 QUEX_INLINE void 187 QUEX_MEMBER(token_queue_get)(QUEX_TYPE_TOKEN** begin, size_t* size) 188 { QUEX_NAME(token_queue_get)(this, begin, size); } 189 190 QUEX_INLINE void 191 QUEX_MEMBER(token_queue_set)(QUEX_TYPE_TOKEN* Begin, size_t Size) 192 { QUEX_NAME(token_queue_set)(this, Begin, Size); } 193 # endif 194 #endif 195 196 QUEX_INLINE const char* 197 QUEX_MEMBER(version)() const 198 { return QUEX_NAME(version)((QUEX_TYPE_ANALYZER*)this); } 199 200 QUEX_INLINE void 201 QUEX_MEMBER(print_this)() 202 { QUEX_NAME(print_this)(this); } 203 204 QUEX_INLINE bool 205 QUEX_MEMBER(byte_order_reversion)() 206 { return QUEX_NAME(byte_order_reversion)(this); } 207 208 QUEX_INLINE void 209 QUEX_MEMBER(byte_order_reversion_set)(bool Value) 210 { QUEX_NAME(byte_order_reversion_set)(this, Value); } 211 #endif 212 213 QUEX_NAMESPACE_MAIN_CLOSE 214 215 #endif /* __QUEX_INCLUDE_GUARD__ANALYZER__MEMBER__MISC_I */