diff --git a/CImg.h b/CImg.h index 26710b7371d3fdd510719e57bb8b3ff1a80f8bad..698ee740548fcf47a8b73d6b39912077e2f2b461 100644 --- a/CImg.h +++ b/CImg.h @@ -54,7 +54,7 @@ // Set version number of the library. #ifndef cimg_version -#define cimg_version 236 +#define cimg_version 240 /*----------------------------------------------------------- # @@ -15153,7 +15153,7 @@ namespace cimg_library_suffixed { struct _cimg_math_parser { CImg<doubleT> mem; CImg<intT> memtype; - CImgList<ulongT> _code, &code, code_init, code_end; + CImgList<ulongT> _code, &code, code_begin, code_end; CImg<ulongT> opcode; const CImg<ulongT> *p_code_end, *p_code; const CImg<ulongT> *const p_break; @@ -15311,11 +15311,11 @@ namespace cimg_library_suffixed { opcode.assign(); opcode._is_shared = true; - // Execute init() bloc if any specified. - if (code_init) { + // Execute begin() bloc if any specified. + if (code_begin) { mem[_cimg_mp_slot_x] = mem[_cimg_mp_slot_y] = mem[_cimg_mp_slot_z] = mem[_cimg_mp_slot_c] = 0; - p_code_end = code_init.end(); - for (p_code = code_init; p_code<p_code_end; ++p_code) { + p_code_end = code_begin.end(); + for (p_code = code_begin; p_code<p_code_end; ++p_code) { opcode._data = p_code->_data; const ulongT target = opcode[1]; mem[target] = _cimg_mp_defunc(*this); @@ -17473,14 +17473,6 @@ namespace cimg_library_suffixed { break; case 'b' : - if (!std::strncmp(ss,"bool(",5)) { // Boolean cast - _cimg_mp_op("Function 'bool()'"); - arg1 = compile(ss5,se1,depth1,0,is_single); - if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_bool,arg1); - if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant((bool)mem[arg1]); - _cimg_mp_scalar1(mp_bool,arg1); - } - if (!std::strncmp(ss,"break(",6)) { // Complex absolute value if (pexpr[se2 - expr._data]=='(') { // no arguments? CImg<ulongT>::vector((ulongT)mp_break,_cimg_mp_slot_nan).move_to(code); @@ -17495,6 +17487,22 @@ namespace cimg_library_suffixed { _cimg_mp_return_nan(); } } + + if (!std::strncmp(ss,"bool(",5)) { // Boolean cast + _cimg_mp_op("Function 'bool()'"); + arg1 = compile(ss5,se1,depth1,0,is_single); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_bool,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant((bool)mem[arg1]); + _cimg_mp_scalar1(mp_bool,arg1); + } + + if (!std::strncmp(ss,"begin(",6)) { // Begin + _cimg_mp_op("Function 'begin()'"); + code.swap(code_begin); + arg1 = compile(ss6,se1,depth1,p_ref,true); + code.swap(code_begin); + _cimg_mp_return(arg1); + } break; case 'c' : @@ -18369,14 +18377,6 @@ namespace cimg_library_suffixed { _cimg_mp_return(pos); } - if (!std::strncmp(ss,"init(",5)) { // Init - _cimg_mp_op("Function 'init()'"); - code.swap(code_init); - arg1 = compile(ss5,se1,depth1,p_ref,true); - code.swap(code_init); - _cimg_mp_return(arg1); - } - if (!std::strncmp(ss,"int(",4)) { // Integer cast _cimg_mp_op("Function 'int()'"); arg1 = compile(ss4,se1,depth1,0,is_single);