General improvements and fixes (#3772)
Added fixes for a clean GCC 7.+ compile
This commit is contained in:
committed by
Oskar Wallgren
parent
153ab375f9
commit
8dcf997872
@@ -67,6 +67,20 @@ namespace exprtk
|
||||
#define exprtk_error_location \
|
||||
"exprtk.hpp:" + details::to_str(__LINE__) \
|
||||
|
||||
#if __GNUC__ >= 7
|
||||
|
||||
#define exprtk_disable_fallthrough_begin \
|
||||
_Pragma ("GCC diagnostic push") \
|
||||
_Pragma ("GCC diagnostic ignored \"-Wimplicit-fallthrough\"") \
|
||||
|
||||
#define exprtk_disable_fallthrough_end \
|
||||
_Pragma ("GCC diagnostic pop") \
|
||||
|
||||
#else
|
||||
#define exprtk_disable_fallthrough_begin (void)0;
|
||||
#define exprtk_disable_fallthrough_end (void)0;
|
||||
#endif
|
||||
|
||||
namespace details
|
||||
{
|
||||
typedef unsigned char uchar_t;
|
||||
@@ -476,7 +490,7 @@ namespace exprtk
|
||||
{
|
||||
for (std::size_t i = 0; i < reserved_words_size; ++i)
|
||||
{
|
||||
if (imatch(symbol,reserved_words[i]))
|
||||
if (imatch(symbol, reserved_words[i]))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@@ -489,7 +503,7 @@ namespace exprtk
|
||||
{
|
||||
for (std::size_t i = 0; i < reserved_symbols_size; ++i)
|
||||
{
|
||||
if (imatch(symbol,reserved_symbols[i]))
|
||||
if (imatch(symbol, reserved_symbols[i]))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@@ -502,7 +516,7 @@ namespace exprtk
|
||||
{
|
||||
for (std::size_t i = 0; i < base_function_list_size; ++i)
|
||||
{
|
||||
if (imatch(function_name,base_function_list[i]))
|
||||
if (imatch(function_name, base_function_list[i]))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@@ -515,7 +529,7 @@ namespace exprtk
|
||||
{
|
||||
for (std::size_t i = 0; i < cntrl_struct_list_size; ++i)
|
||||
{
|
||||
if (imatch(cntrl_strct,cntrl_struct_list[i]))
|
||||
if (imatch(cntrl_strct, cntrl_struct_list[i]))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@@ -528,7 +542,7 @@ namespace exprtk
|
||||
{
|
||||
for (std::size_t i = 0; i < logic_ops_list_size; ++i)
|
||||
{
|
||||
if (imatch(lgc_opr,logic_ops_list[i]))
|
||||
if (imatch(lgc_opr, logic_ops_list[i]))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@@ -1666,6 +1680,7 @@ namespace exprtk
|
||||
|
||||
if (length <= 4)
|
||||
{
|
||||
exprtk_disable_fallthrough_begin
|
||||
switch (length)
|
||||
{
|
||||
#ifdef exprtk_use_lut
|
||||
@@ -1699,6 +1714,7 @@ namespace exprtk
|
||||
|
||||
#undef exprtk_process_digit
|
||||
}
|
||||
exprtk_disable_fallthrough_end
|
||||
}
|
||||
else
|
||||
return_result = false;
|
||||
@@ -2823,7 +2839,7 @@ namespace exprtk
|
||||
const token& t0 = g.token_list_[i ];
|
||||
const token& t1 = g.token_list_[i + 1];
|
||||
|
||||
if (!operator()(t0,t1))
|
||||
if (!operator()(t0, t1))
|
||||
{
|
||||
return i;
|
||||
}
|
||||
@@ -2836,7 +2852,7 @@ namespace exprtk
|
||||
const token& t1 = g.token_list_[i + 1];
|
||||
const token& t2 = g.token_list_[i + 2];
|
||||
|
||||
if (!operator()(t0,t1,t2))
|
||||
if (!operator()(t0, t1, t2))
|
||||
{
|
||||
return i;
|
||||
}
|
||||
@@ -2850,7 +2866,7 @@ namespace exprtk
|
||||
const token& t2 = g.token_list_[i + 2];
|
||||
const token& t3 = g.token_list_[i + 3];
|
||||
|
||||
if (!operator()(t0,t1,t2,t3))
|
||||
if (!operator()(t0, t1, t2, t3))
|
||||
{
|
||||
return i;
|
||||
}
|
||||
@@ -3375,7 +3391,7 @@ namespace exprtk
|
||||
{
|
||||
details::char_t c = t.value[0];
|
||||
|
||||
if (t.type == lexer::token::e_lbracket) stack_.push(std::make_pair(')',t.position));
|
||||
if (t.type == lexer::token::e_lbracket ) stack_.push(std::make_pair(')',t.position));
|
||||
else if (t.type == lexer::token::e_lcrlbracket) stack_.push(std::make_pair('}',t.position));
|
||||
else if (t.type == lexer::token::e_lsqrbracket) stack_.push(std::make_pair(']',t.position));
|
||||
else if (exprtk::details::is_right_bracket(c))
|
||||
@@ -3716,7 +3732,7 @@ namespace exprtk
|
||||
inline bool register_scanner(lexer::token_scanner* scanner)
|
||||
{
|
||||
if (token_scanner_list.end() != std::find(token_scanner_list.begin(),
|
||||
token_scanner_list.end(),
|
||||
token_scanner_list.end (),
|
||||
scanner))
|
||||
{
|
||||
return false;
|
||||
@@ -3730,7 +3746,7 @@ namespace exprtk
|
||||
inline bool register_modifier(lexer::token_modifier* modifier)
|
||||
{
|
||||
if (token_modifier_list.end() != std::find(token_modifier_list.begin(),
|
||||
token_modifier_list.end(),
|
||||
token_modifier_list.end (),
|
||||
modifier))
|
||||
{
|
||||
return false;
|
||||
@@ -3744,7 +3760,7 @@ namespace exprtk
|
||||
inline bool register_joiner(lexer::token_joiner* joiner)
|
||||
{
|
||||
if (token_joiner_list.end() != std::find(token_joiner_list.begin(),
|
||||
token_joiner_list.end(),
|
||||
token_joiner_list.end (),
|
||||
joiner))
|
||||
{
|
||||
return false;
|
||||
@@ -3758,7 +3774,7 @@ namespace exprtk
|
||||
inline bool register_inserter(lexer::token_inserter* inserter)
|
||||
{
|
||||
if (token_inserter_list.end() != std::find(token_inserter_list.begin(),
|
||||
token_inserter_list.end(),
|
||||
token_inserter_list.end (),
|
||||
inserter))
|
||||
{
|
||||
return false;
|
||||
@@ -8115,6 +8131,7 @@ namespace exprtk
|
||||
|
||||
int i = 0;
|
||||
|
||||
exprtk_disable_fallthrough_begin
|
||||
switch (lud.remainder)
|
||||
{
|
||||
#define case_stmt(N) \
|
||||
@@ -8131,6 +8148,7 @@ namespace exprtk
|
||||
case_stmt( 3) case_stmt( 2)
|
||||
case_stmt( 1)
|
||||
}
|
||||
exprtk_disable_fallthrough_end
|
||||
|
||||
#undef exprtk_loop
|
||||
#undef case_stmt
|
||||
@@ -8453,8 +8471,8 @@ namespace exprtk
|
||||
range_t& range1 = (*str1_range_ptr_);
|
||||
|
||||
if (
|
||||
range0(s0_r0,s0_r1,str0_base_ptr_->size()) &&
|
||||
range1(s1_r0,s1_r1,str1_base_ptr_->size())
|
||||
range0(s0_r0, s0_r1, str0_base_ptr_->size()) &&
|
||||
range1(s1_r0, s1_r1, str1_base_ptr_->size())
|
||||
)
|
||||
{
|
||||
std::size_t size = std::min((s0_r1 - s0_r0),(s1_r1 - s1_r0)) + 1;
|
||||
@@ -9622,6 +9640,7 @@ namespace exprtk
|
||||
vec += lud.batch_size;
|
||||
}
|
||||
|
||||
exprtk_disable_fallthrough_begin
|
||||
switch (lud.remainder)
|
||||
{
|
||||
#define case_stmt(N) \
|
||||
@@ -9638,6 +9657,7 @@ namespace exprtk
|
||||
case_stmt( 3) case_stmt( 2)
|
||||
case_stmt( 1)
|
||||
}
|
||||
exprtk_disable_fallthrough_end
|
||||
|
||||
#undef exprtk_loop
|
||||
#undef case_stmt
|
||||
@@ -9770,6 +9790,7 @@ namespace exprtk
|
||||
vec1 += lud.batch_size;
|
||||
}
|
||||
|
||||
exprtk_disable_fallthrough_begin
|
||||
switch (lud.remainder)
|
||||
{
|
||||
#define case_stmt(N) \
|
||||
@@ -9786,6 +9807,7 @@ namespace exprtk
|
||||
case_stmt( 3) case_stmt( 2)
|
||||
case_stmt( 1)
|
||||
}
|
||||
exprtk_disable_fallthrough_end
|
||||
|
||||
#undef exprtk_loop
|
||||
#undef case_stmt
|
||||
@@ -10036,6 +10058,7 @@ namespace exprtk
|
||||
vec += lud.batch_size;
|
||||
}
|
||||
|
||||
exprtk_disable_fallthrough_begin
|
||||
switch (lud.remainder)
|
||||
{
|
||||
#define case_stmt(N) \
|
||||
@@ -10052,6 +10075,8 @@ namespace exprtk
|
||||
case_stmt( 3) case_stmt( 2)
|
||||
case_stmt( 1)
|
||||
}
|
||||
exprtk_disable_fallthrough_end
|
||||
|
||||
|
||||
#undef exprtk_loop
|
||||
#undef case_stmt
|
||||
@@ -10183,6 +10208,7 @@ namespace exprtk
|
||||
|
||||
int i = 0;
|
||||
|
||||
exprtk_disable_fallthrough_begin
|
||||
switch (lud.remainder)
|
||||
{
|
||||
#define case_stmt(N) \
|
||||
@@ -10199,6 +10225,7 @@ namespace exprtk
|
||||
case_stmt( 3) case_stmt( 2)
|
||||
case_stmt( 1)
|
||||
}
|
||||
exprtk_disable_fallthrough_end
|
||||
|
||||
#undef exprtk_loop
|
||||
#undef case_stmt
|
||||
@@ -10368,6 +10395,7 @@ namespace exprtk
|
||||
|
||||
int i = 0;
|
||||
|
||||
exprtk_disable_fallthrough_begin
|
||||
switch (lud.remainder)
|
||||
{
|
||||
#define case_stmt(N) \
|
||||
@@ -10384,6 +10412,7 @@ namespace exprtk
|
||||
case_stmt( 3) case_stmt( 2)
|
||||
case_stmt( 1)
|
||||
}
|
||||
exprtk_disable_fallthrough_end
|
||||
|
||||
#undef exprtk_loop
|
||||
#undef case_stmt
|
||||
@@ -10523,6 +10552,7 @@ namespace exprtk
|
||||
|
||||
int i = 0;
|
||||
|
||||
exprtk_disable_fallthrough_begin
|
||||
switch (lud.remainder)
|
||||
{
|
||||
#define case_stmt(N) \
|
||||
@@ -10539,6 +10569,7 @@ namespace exprtk
|
||||
case_stmt( 3) case_stmt( 2)
|
||||
case_stmt( 1)
|
||||
}
|
||||
exprtk_disable_fallthrough_end
|
||||
|
||||
#undef exprtk_loop
|
||||
#undef case_stmt
|
||||
@@ -10676,6 +10707,7 @@ namespace exprtk
|
||||
|
||||
int i = 0;
|
||||
|
||||
exprtk_disable_fallthrough_begin
|
||||
switch (lud.remainder)
|
||||
{
|
||||
#define case_stmt(N) \
|
||||
@@ -10692,6 +10724,7 @@ namespace exprtk
|
||||
case_stmt( 3) case_stmt( 2)
|
||||
case_stmt( 1)
|
||||
}
|
||||
exprtk_disable_fallthrough_end
|
||||
|
||||
#undef exprtk_loop
|
||||
#undef case_stmt
|
||||
@@ -10826,6 +10859,7 @@ namespace exprtk
|
||||
|
||||
int i = 0;
|
||||
|
||||
exprtk_disable_fallthrough_begin
|
||||
switch (lud.remainder)
|
||||
{
|
||||
#define case_stmt(N) \
|
||||
@@ -10842,6 +10876,7 @@ namespace exprtk
|
||||
case_stmt( 3) case_stmt( 2)
|
||||
case_stmt( 1)
|
||||
}
|
||||
exprtk_disable_fallthrough_end
|
||||
|
||||
#undef exprtk_loop
|
||||
#undef case_stmt
|
||||
@@ -12768,6 +12803,7 @@ namespace exprtk
|
||||
T result = T(0);
|
||||
int i = 0;
|
||||
|
||||
exprtk_disable_fallthrough_begin
|
||||
switch (vec_size)
|
||||
{
|
||||
#define case_stmt(N) \
|
||||
@@ -12784,6 +12820,7 @@ namespace exprtk
|
||||
case_stmt( 4) case_stmt( 3)
|
||||
case_stmt( 2) case_stmt( 1)
|
||||
}
|
||||
exprtk_disable_fallthrough_end
|
||||
|
||||
#undef case_stmt
|
||||
|
||||
@@ -12818,6 +12855,7 @@ namespace exprtk
|
||||
|
||||
int i = 0;
|
||||
|
||||
exprtk_disable_fallthrough_begin
|
||||
switch (lud.remainder)
|
||||
{
|
||||
#define case_stmt(N) \
|
||||
@@ -12834,6 +12872,7 @@ namespace exprtk
|
||||
case_stmt( 3) case_stmt( 2)
|
||||
case_stmt( 1)
|
||||
}
|
||||
exprtk_disable_fallthrough_end
|
||||
|
||||
#undef exprtk_loop
|
||||
#undef case_stmt
|
||||
@@ -12865,6 +12904,7 @@ namespace exprtk
|
||||
T result = T(1);
|
||||
int i = 0;
|
||||
|
||||
exprtk_disable_fallthrough_begin
|
||||
switch (vec_size)
|
||||
{
|
||||
#define case_stmt(N) \
|
||||
@@ -12881,6 +12921,7 @@ namespace exprtk
|
||||
case_stmt( 4) case_stmt( 3)
|
||||
case_stmt( 2) case_stmt( 1)
|
||||
}
|
||||
exprtk_disable_fallthrough_end
|
||||
|
||||
#undef case_stmt
|
||||
|
||||
@@ -12915,6 +12956,7 @@ namespace exprtk
|
||||
|
||||
int i = 0;
|
||||
|
||||
exprtk_disable_fallthrough_begin
|
||||
switch (lud.remainder)
|
||||
{
|
||||
#define case_stmt(N) \
|
||||
@@ -12931,6 +12973,7 @@ namespace exprtk
|
||||
case_stmt( 3) case_stmt( 2)
|
||||
case_stmt( 1)
|
||||
}
|
||||
exprtk_disable_fallthrough_end
|
||||
|
||||
#undef exprtk_loop
|
||||
#undef case_stmt
|
||||
@@ -17016,6 +17059,8 @@ namespace exprtk
|
||||
return false;
|
||||
else if (symbol_exists(vector_name))
|
||||
return false;
|
||||
else if (0 == v_size)
|
||||
return false;
|
||||
else
|
||||
return local_data().vector_store.add(vector_name,v,v_size);
|
||||
}
|
||||
@@ -17029,6 +17074,8 @@ namespace exprtk
|
||||
return false;
|
||||
else if (symbol_exists(vector_name))
|
||||
return false;
|
||||
else if (0 == v.size())
|
||||
return false;
|
||||
else
|
||||
return local_data().vector_store.add(vector_name,v);
|
||||
}
|
||||
@@ -17041,6 +17088,8 @@ namespace exprtk
|
||||
return false;
|
||||
else if (symbol_exists(vector_name))
|
||||
return false;
|
||||
else if (0 == v.size())
|
||||
return false;
|
||||
else
|
||||
return local_data().vector_store.add(vector_name,v);
|
||||
}
|
||||
@@ -18027,6 +18076,7 @@ namespace exprtk
|
||||
typedef details::scor_node<T> scor_node_t;
|
||||
typedef lexer::token token_t;
|
||||
typedef expression_node_t* expression_node_ptr;
|
||||
typedef expression<T> expression_t;
|
||||
typedef symbol_table<T> symbol_table_t;
|
||||
typedef typename expression<T>::symtab_list_t symbol_table_list_t;
|
||||
typedef details::vector_holder<T>* vector_holder_ptr;
|
||||
@@ -18336,7 +18386,7 @@ namespace exprtk
|
||||
se.active &&
|
||||
se.var_node &&
|
||||
details::is_variable_node(se.var_node)
|
||||
)
|
||||
)
|
||||
{
|
||||
variable_node_ptr vn = reinterpret_cast<variable_node_ptr>(se.var_node);
|
||||
|
||||
@@ -19864,6 +19914,17 @@ namespace exprtk
|
||||
}
|
||||
}
|
||||
|
||||
inline expression_t compile(const std::string& expression_string, symbol_table_t& symtab)
|
||||
{
|
||||
expression_t expr;
|
||||
|
||||
expr.register_symbol_table(symtab);
|
||||
|
||||
compile(expression_string,expr);
|
||||
|
||||
return expr;
|
||||
}
|
||||
|
||||
void process_lexer_errors()
|
||||
{
|
||||
for (std::size_t i = 0; i < lexer().size(); ++i)
|
||||
@@ -34052,15 +34113,15 @@ namespace exprtk
|
||||
return expression_point;
|
||||
}
|
||||
|
||||
bool strength_reduction_enabled_;
|
||||
bool strength_reduction_enabled_;
|
||||
details::node_allocator* node_allocator_;
|
||||
synthesize_map_t synthesize_map_;
|
||||
unary_op_map_t* unary_op_map_;
|
||||
binary_op_map_t* binary_op_map_;
|
||||
inv_binary_op_map_t* inv_binary_op_map_;
|
||||
sf3_map_t* sf3_map_;
|
||||
sf4_map_t* sf4_map_;
|
||||
parser_t* parser_;
|
||||
synthesize_map_t synthesize_map_;
|
||||
unary_op_map_t* unary_op_map_;
|
||||
binary_op_map_t* binary_op_map_;
|
||||
inv_binary_op_map_t* inv_binary_op_map_;
|
||||
sf3_map_t* sf3_map_;
|
||||
sf4_map_t* sf4_map_;
|
||||
parser_t* parser_;
|
||||
};
|
||||
|
||||
inline void set_error(const parser_error::type& error_type)
|
||||
@@ -35454,7 +35515,7 @@ namespace exprtk
|
||||
inline T operator()(type v0, type v1)
|
||||
{
|
||||
scoped_bft<func_2param> sb(*this);
|
||||
base_func::update(v0,v1);
|
||||
base_func::update(v0, v1);
|
||||
T result = this->value(base_func::expression);
|
||||
|
||||
return result;
|
||||
@@ -35470,7 +35531,7 @@ namespace exprtk
|
||||
inline T operator()(type v0, type v1, type v2)
|
||||
{
|
||||
scoped_bft<func_3param> sb(*this);
|
||||
base_func::update(v0,v1,v2);
|
||||
base_func::update(v0, v1, v2);
|
||||
T result = this->value(base_func::expression);
|
||||
|
||||
return result;
|
||||
@@ -35486,7 +35547,7 @@ namespace exprtk
|
||||
inline T operator()(type v0, type v1, type v2, type v3)
|
||||
{
|
||||
scoped_bft<func_4param> sb(*this);
|
||||
base_func::update(v0,v1,v2,v3);
|
||||
base_func::update(v0, v1, v2, v3);
|
||||
T result = this->value(base_func::expression);
|
||||
|
||||
return result;
|
||||
@@ -35502,7 +35563,7 @@ namespace exprtk
|
||||
inline T operator()(type v0, type v1, type v2, type v3, type v4)
|
||||
{
|
||||
scoped_bft<func_5param> sb(*this);
|
||||
base_func::update(v0,v1,v2,v3,v4);
|
||||
base_func::update(v0, v1, v2, v3, v4);
|
||||
T result = this->value(base_func::expression);
|
||||
|
||||
return result;
|
||||
@@ -35518,7 +35579,7 @@ namespace exprtk
|
||||
inline T operator()(type v0, type v1, type v2, type v3, type v4, type v5)
|
||||
{
|
||||
scoped_bft<func_6param> sb(*this);
|
||||
base_func::update(v0,v1,v2,v3,v4,v5);
|
||||
base_func::update(v0, v1, v2, v3, v4, v5);
|
||||
T result = this->value(base_func::expression);
|
||||
|
||||
return result;
|
||||
|
||||
Reference in New Issue
Block a user