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

#include <exprtk.hpp>

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

Public Member Functions

 token_inserter (const std::size_t &stride)
 
std::size_t process (generator &g)
 
virtual int insert (const token &, token &)
 
virtual int insert (const token &, const token &, token &)
 
virtual int insert (const token &, const token &, const token &, token &)
 
virtual int insert (const token &, const token &, const token &, const token &, token &)
 
virtual int insert (const token &, const token &, const token &, const token &, const token &, 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 3294 of file exprtk.hpp.

Constructor & Destructor Documentation

◆ token_inserter()

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

Definition at line 3298 of file exprtk.hpp.

3299 : stride_(stride)
3300 {
3301 if (stride > 5)
3302 {
3303 throw std::invalid_argument("token_inserter() - Invalid stride value");
3304 }
3305 }
const std::size_t stride_
Definition exprtk.hpp:3400

Member Function Documentation

◆ insert() [1/5]

virtual int exprtk::lexer::token_inserter::insert ( const token ,
const token ,
const token ,
const token ,
const token ,
token  
)
inlinevirtual

Definition at line 3393 of file exprtk.hpp.

◆ insert() [2/5]

virtual int exprtk::lexer::token_inserter::insert ( const token ,
const token ,
const token ,
const token ,
token  
)
inlinevirtual

Definition at line 3390 of file exprtk.hpp.

◆ insert() [3/5]

virtual int exprtk::lexer::token_inserter::insert ( const token ,
const token ,
const token ,
token  
)
inlinevirtual

Definition at line 3387 of file exprtk.hpp.

◆ insert() [4/5]

virtual int exprtk::lexer::token_inserter::insert ( const token ,
const token ,
token  
)
inlinevirtual

Reimplemented in exprtk::lexer::helper::commutative_inserter.

Definition at line 3384 of file exprtk.hpp.

◆ insert() [5/5]

virtual int exprtk::lexer::token_inserter::insert ( const token ,
token  
)
inlinevirtual

Definition at line 3381 of file exprtk.hpp.

Referenced by process().

Here is the caller graph for this function:

◆ process()

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

Reimplemented from exprtk::lexer::helper_interface.

Definition at line 3307 of file exprtk.hpp.

3308 {
3309 if (g.token_list_.empty())
3310 return 0;
3311 else if (g.token_list_.size() < stride_)
3312 return 0;
3313
3314 std::size_t changes = 0;
3315
3316 typedef std::pair<std::size_t, token> insert_t;
3317 std::vector<insert_t> insert_list;
3318 insert_list.reserve(10000);
3319
3320 for (std::size_t i = 0; i < (g.token_list_.size() - stride_ + 1); ++i)
3321 {
3322 int insert_index = -1;
3323 token t;
3324
3325 switch (stride_)
3326 {
3327 case 1 : insert_index = insert(g.token_list_[i],t);
3328 break;
3329
3330 case 2 : insert_index = insert(g.token_list_[i], g.token_list_[i + 1], t);
3331 break;
3332
3333 case 3 : insert_index = insert(g.token_list_[i], g.token_list_[i + 1], g.token_list_[i + 2], t);
3334 break;
3335
3336 case 4 : insert_index = insert(g.token_list_[i], g.token_list_[i + 1], g.token_list_[i + 2], g.token_list_[i + 3], t);
3337 break;
3338
3339 case 5 : insert_index = insert(g.token_list_[i], g.token_list_[i + 1], g.token_list_[i + 2], g.token_list_[i + 3], g.token_list_[i + 4], t);
3340 break;
3341 }
3342
3343 if ((insert_index >= 0) && (insert_index <= (static_cast<int>(stride_) + 1)))
3344 {
3345 insert_list.push_back(insert_t(i, t));
3346 changes++;
3347 }
3348 }
3349
3350 if (!insert_list.empty())
3351 {
3352 generator::token_list_t token_list;
3353
3354 std::size_t insert_index = 0;
3355
3356 for (std::size_t i = 0; i < g.token_list_.size(); ++i)
3357 {
3358 token_list.push_back(g.token_list_[i]);
3359
3360 if (
3361 (insert_index < insert_list.size()) &&
3362 (insert_list[insert_index].first == i)
3363 )
3364 {
3365 token_list.push_back(insert_list[insert_index].second);
3366 insert_index++;
3367 }
3368 }
3369
3370 std::swap(g.token_list_,token_list);
3371 }
3372
3373 return changes;
3374 }
std::vector< token_t > token_list_t
Definition exprtk.hpp:2462
virtual int insert(const token &, token &)
Definition exprtk.hpp:3381

References insert(), and stride_.

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

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ stride_

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

Definition at line 3400 of file exprtk.hpp.

Referenced by process().


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