sheepy

build system (sheepy) and package manager (spm) for C
git clone https://spartatek.se/git/sheepy.git
Log | Files | Refs | README | LICENSE

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 */