sheepy

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

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