C++ Mathematical Expression Toolkit (ExprTk) release
Loading...
Searching...
No Matches
Public Member Functions | Private Attributes | List of all members
exprtk::lexer::token_scanner Class Reference

#include <exprtk.hpp>

Inheritance diagram for exprtk::lexer::token_scanner:
[legend]
Collaboration diagram for exprtk::lexer::token_scanner:
[legend]

Public Member Functions

virtual ~token_scanner ()
 
 token_scanner (const std::size_t &stride)
 
std::size_t process (generator &g)
 
virtual bool operator() (const token &)
 
virtual bool operator() (const token &, const token &)
 
virtual bool operator() (const token &, const token &, const token &)
 
virtual bool operator() (const token &, const token &, const token &, const token &)
 
- Public Member Functions inherited from exprtk::lexer::helper_interface
virtual void init ()
 
virtual void reset ()
 
virtual bool result ()
 
virtual ~helper_interface ()
 

Private Attributes

const std::size_t stride_
 

Detailed Description

Definition at line 3112 of file exprtk.hpp.

Constructor & Destructor Documentation

◆ ~token_scanner()

virtual exprtk::lexer::token_scanner::~token_scanner ( )
inlinevirtual

Definition at line 3116 of file exprtk.hpp.

3117 {}

◆ token_scanner()

exprtk::lexer::token_scanner::token_scanner ( const std::size_t &  stride)
inlineexplicit

Definition at line 3119 of file exprtk.hpp.

3120 : stride_(stride)
3121 {
3122 if (stride > 4)
3123 {
3124 throw std::invalid_argument("token_scanner() - Invalid stride value");
3125 }
3126 }
const std::size_t stride_
Definition exprtk.hpp:3216

Member Function Documentation

◆ operator()() [1/4]

virtual bool exprtk::lexer::token_scanner::operator() ( const token )
inlinevirtual

Reimplemented in exprtk::lexer::helper::bracket_checker, and exprtk::lexer::helper::numeric_checker< T >.

Definition at line 3194 of file exprtk.hpp.

3195 {
3196 return false;
3197 }

◆ operator()() [2/4]

virtual bool exprtk::lexer::token_scanner::operator() ( const token ,
const token  
)
inlinevirtual

Reimplemented in exprtk::lexer::helper::sequence_validator.

Definition at line 3199 of file exprtk.hpp.

3200 {
3201 return false;
3202 }

◆ operator()() [3/4]

virtual bool exprtk::lexer::token_scanner::operator() ( const token ,
const token ,
const token  
)
inlinevirtual

Reimplemented in exprtk::lexer::helper::sequence_validator_3tokens.

Definition at line 3204 of file exprtk.hpp.

3205 {
3206 return false;
3207 }

◆ operator()() [4/4]

virtual bool exprtk::lexer::token_scanner::operator() ( const token ,
const token ,
const token ,
const token  
)
inlinevirtual

Definition at line 3209 of file exprtk.hpp.

3210 {
3211 return false;
3212 }

◆ process()

std::size_t exprtk::lexer::token_scanner::process ( generator g)
inlinevirtual

Reimplemented from exprtk::lexer::helper_interface.

Definition at line 3128 of file exprtk.hpp.

3129 {
3130 if (g.token_list_.size() >= stride_)
3131 {
3132 for (std::size_t i = 0; i < (g.token_list_.size() - stride_ + 1); ++i)
3133 {
3134 token t;
3135
3136 switch (stride_)
3137 {
3138 case 1 :
3139 {
3140 const token& t0 = g.token_list_[i];
3141
3142 if (!operator()(t0))
3143 {
3144 return i;
3145 }
3146 }
3147 break;
3148
3149 case 2 :
3150 {
3151 const token& t0 = g.token_list_[i ];
3152 const token& t1 = g.token_list_[i + 1];
3153
3154 if (!operator()(t0, t1))
3155 {
3156 return i;
3157 }
3158 }
3159 break;
3160
3161 case 3 :
3162 {
3163 const token& t0 = g.token_list_[i ];
3164 const token& t1 = g.token_list_[i + 1];
3165 const token& t2 = g.token_list_[i + 2];
3166
3167 if (!operator()(t0, t1, t2))
3168 {
3169 return i;
3170 }
3171 }
3172 break;
3173
3174 case 4 :
3175 {
3176 const token& t0 = g.token_list_[i ];
3177 const token& t1 = g.token_list_[i + 1];
3178 const token& t2 = g.token_list_[i + 2];
3179 const token& t3 = g.token_list_[i + 3];
3180
3181 if (!operator()(t0, t1, t2, t3))
3182 {
3183 return i;
3184 }
3185 }
3186 break;
3187 }
3188 }
3189 }
3190
3191 return (g.token_list_.size() - stride_ + 1);
3192 }

References stride_.

Referenced by exprtk::lexer::helper::helper_assembly::run_scanners().

Here is the caller graph for this function:

Member Data Documentation

◆ stride_

const std::size_t exprtk::lexer::token_scanner::stride_
private

Definition at line 3216 of file exprtk.hpp.

Referenced by process().


The documentation for this class was generated from the following file: