Diff for /parser3/src/classes/array.C between versions 1.9 and 1.10

version 1.9, 2024/09/22 17:01:23 version 1.10, 2024/09/22 18:23:22
Line 144  static void _join(Request& r, MethodPara Line 144  static void _join(Request& r, MethodPara
 static void _sql(Request& r, MethodParams& params) {}  static void _sql(Request& r, MethodParams& params) {}
   
   
 static void mid(Request& r, ArrayValue::Action_options o) {  static void mid(Request& r, size_t offset=0, size_t limit=ARRAY_OPTION_LIMIT_ALL) {
         ArrayValue& array=GET_SELF(r, VArray).array();          ArrayValue& array=GET_SELF(r, VArray).array();
         if(o.limit>0){          if(limit>0){
                 VArray *result=new VArray;                  VArray *result=new VArray;
                 ArrayValue& result_array=result->array();                  ArrayValue& result_array=result->array();
                 for(ArrayValue::Iterator i(array); i; i.next()){                  for(ArrayValue::Iterator i(array); i; i.next()){
                         if(i.value()){                          if(i.value()){
                                 if(o.offset > 0){                                  if(offset > 0){
                                         o.offset--;                                          offset--;
                                         continue;                                          continue;
                                 }                                  }
                                 if(o.limit-- == 0)                                  if(limit-- == 0)
                                         break;                                          break;
                                 result_array+=i.value();                                  result_array+=i.value();
                         }                          }
Line 168  static void mid(Request& r, ArrayValue:: Line 168  static void mid(Request& r, ArrayValue::
   
 static void _left(Request& r, MethodParams& params) {  static void _left(Request& r, MethodParams& params) {
         int sn=params.as_int(0, "n must be int", r);          int sn=params.as_int(0, "n must be int", r);
         mid(r, ArrayValue::Action_options(0, sn < 0 ? 0 : sn));          mid(r, 0, sn < 0 ? 0 : sn);
 }  }
   
 static void _right(Request& r, MethodParams& params) {  static void _right(Request& r, MethodParams& params) {
Line 177  static void _right(Request& r, MethodPar Line 177  static void _right(Request& r, MethodPar
         if(sn>0){          if(sn>0){
                 size_t used=GET_SELF(r, VArray).array().used();                  size_t used=GET_SELF(r, VArray).array().used();
                 if(sn<used){                  if(sn<used){
                         mid(r, ArrayValue::Action_options(used-sn, sn));                          mid(r, used-sn, sn);
                 } else {                  } else {
                         mid(r, ArrayValue::Action_options());                          mid(r);
                 }                  }
         } else {          } else {
                 mid(r, ArrayValue::Action_options(0, 0));                  mid(r, 0, 0);
         }          }
 }  }
   
Line 200  static void _mid(Request& r, MethodParam Line 200  static void _mid(Request& r, MethodParam
                 int n=params.as_int(1, "n must be int", r);                  int n=params.as_int(1, "n must be int", r);
                 if(n<0)                  if(n<0)
                         throw Exception(PARSER_RUNTIME, 0, "n(%d) must be >=0", n);                          throw Exception(PARSER_RUNTIME, 0, "n(%d) must be >=0", n);
                 mid(r, ArrayValue::Action_options(begin, n));                  mid(r, begin, n);
         } else {          } else {
                 mid(r, ArrayValue::Action_options(begin));                  mid(r, begin);
         }          }
 }  }
   

Removed from v.1.9  
changed lines
  Added in v.1.10


E-mail: