navigation.i (2860B)
1 /* -*- C++ -*- vim: set syntax=cpp: 2 * (C) 2005-2010 Frank-Rene Schaefer 3 * ABSOLUTELY NO WARRANTY */ 4 #ifndef __QUEX_INCLUDE_GUARD__ANALYZER__MEMBER__NAVIGATION_I 5 #define __QUEX_INCLUDE_GUARD__ANALYZER__MEMBER__NAVIGATION_I 6 7 #include "definitions" 8 9 QUEX_NAMESPACE_MAIN_OPEN 10 11 QUEX_INLINE size_t 12 QUEX_NAME(tell)(QUEX_TYPE_ANALYZER* me) 13 { 14 /* No 'undo terminating zero' -- we do not change the lexeme pointer here. */ 15 return (size_t)QUEX_NAME(Buffer_tell)(&me->buffer); 16 } 17 18 QUEX_INLINE void 19 QUEX_NAME(seek)(QUEX_TYPE_ANALYZER* me, const size_t CharacterIndex) 20 { 21 QUEX_LEXEME_TERMINATING_ZERO_UNDO(&me->buffer); 22 QUEX_NAME(Buffer_seek)(&me->buffer, (ptrdiff_t)CharacterIndex); 23 } 24 25 QUEX_INLINE void 26 QUEX_NAME(seek_forward)(QUEX_TYPE_ANALYZER* me, const size_t CharacterN) 27 { 28 QUEX_LEXEME_TERMINATING_ZERO_UNDO(&me->buffer); 29 QUEX_NAME(Buffer_seek_forward)(&me->buffer, (ptrdiff_t)CharacterN); 30 } 31 32 QUEX_INLINE void 33 QUEX_NAME(seek_backward)(QUEX_TYPE_ANALYZER* me, const size_t CharacterN) 34 { 35 QUEX_LEXEME_TERMINATING_ZERO_UNDO(&me->buffer); 36 QUEX_NAME(Buffer_seek_backward)(&me->buffer, (ptrdiff_t)CharacterN); 37 } 38 39 QUEX_INLINE void 40 QUEX_NAME(undo)(QUEX_TYPE_ANALYZER* me) 41 { 42 __QUEX_IF_COUNT_LINES(me->counter._line_number_at_end = me->counter._line_number_at_begin); 43 __QUEX_IF_COUNT_COLUMNS(me->counter._column_number_at_end = me->counter._column_number_at_begin); 44 45 QUEX_LEXEME_TERMINATING_ZERO_UNDO(&me->buffer); 46 47 me->buffer._read_p = me->buffer._lexeme_start_p; 48 49 QUEX_LEXEME_TERMINATING_ZERO_SET(&me->buffer); 50 } 51 52 QUEX_INLINE void 53 QUEX_NAME(undo_n)(QUEX_TYPE_ANALYZER* me, size_t DeltaN_Backward) 54 { 55 __QUEX_IF_COUNT_LINES(me->counter._line_number_at_end = me->counter._line_number_at_begin); 56 __QUEX_IF_COUNT_COLUMNS(me->counter._column_number_at_end = me->counter._column_number_at_begin); 57 58 QUEX_LEXEME_TERMINATING_ZERO_UNDO(&me->buffer); 59 60 me->buffer._read_p -= (ptrdiff_t)DeltaN_Backward; 61 62 QUEX_LEXEME_TERMINATING_ZERO_SET(&me->buffer); 63 64 __quex_assert(me->buffer._read_p >= me->buffer._lexeme_start_p); 65 } 66 67 68 #if ! defined(__QUEX_OPTION_PLAIN_C) 69 QUEX_INLINE size_t 70 QUEX_MEMBER(tell)() 71 { return QUEX_NAME(tell)(this); } 72 73 QUEX_INLINE void 74 QUEX_MEMBER(seek)(const size_t CharacterIndex) 75 { QUEX_NAME(seek)(this, CharacterIndex); } 76 77 QUEX_INLINE void 78 QUEX_MEMBER(seek_forward)(const size_t CharacterN) 79 { QUEX_NAME(seek_forward)(this, CharacterN); } 80 81 QUEX_INLINE void 82 QUEX_MEMBER(seek_backward)(const size_t CharacterN) 83 { QUEX_NAME(seek_backward)(this, CharacterN); } 84 85 QUEX_INLINE void 86 QUEX_MEMBER(undo)() 87 { return QUEX_NAME(undo)(this); } 88 89 QUEX_INLINE void 90 QUEX_MEMBER(undo)(size_t DeltaN_Backward) 91 { return QUEX_NAME(undo_n)(this, DeltaN_Backward); } 92 93 #endif 94 95 QUEX_NAMESPACE_MAIN_CLOSE 96 97 #endif /* __QUEX_INCLUDE_GUARD__ANALYZER__MEMBER__NAVIGATION_I */