Diff for /parser3/src/classes/array.C between versions 1.23 and 1.25

version 1.23, 2024/10/23 23:53:06 version 1.25, 2024/10/26 15:46:52
Line 38  const char* const PARAM_INDEX = "index m Line 38  const char* const PARAM_INDEX = "index m
   
 // methods  // methods
   
 static void _create_or_add(Request& r, MethodParams& params) {  static void _copy_or_add(Request& r, MethodParams& params) {
         if(params.count()) {          if(params.count()) {
                 Value& vsrc=params.as_no_junction(0, PARAM_ARRAY_OR_HASH);                  Value& vsrc=params.as_no_junction(0, PARAM_ARRAY_OR_HASH);
                 VArray& self=GET_SELF(r, VArray);                  VArray& self=GET_SELF(r, VArray);
Line 608  static void _count(Request& r, MethodPar Line 608  static void _count(Request& r, MethodPar
         r.write(*new VInt(array.used()));          r.write(*new VInt(array.used()));
 }  }
   
 static void _append(Request& r, MethodParams& params) {  static void _create_or_append(Request& r, MethodParams& params) {
         ArrayValue& array=GET_SELF(r, VArray).array();          ArrayValue& array=GET_SELF(r, VArray).array();
   
         int count=params.count();          int count=params.count();
Line 910  static void _at(Request& r, MethodParams Line 910  static void _at(Request& r, MethodParams
                                         r.write(*new VString(*new String(pa_uitoa(pos), String::L_TAINTED)));                                          r.write(*new VString(*new String(pa_uitoa(pos), String::L_TAINTED)));
                                         break;                                          break;
                                 case AtResultTypeValue:                                  case AtResultTypeValue:
                                         r.write(*array[pos]);                                          r.write(*array.get(pos));
                                         break;                                          break;
                                 case AtResultTypeHash:                                  case AtResultTypeHash:
                                         r.write(SingleElementHash(pa_uitoa(pos), array[pos]));                                          r.write(SingleElementHash(pa_uitoa(pos), array.get(pos)));
                                         break;                                          break;
                         }                          }
                 } else {                  } else {
Line 1034  static void _reverse(Request& r, MethodP Line 1034  static void _reverse(Request& r, MethodP
         r.write(result);          r.write(result);
 }  }
   
 static void _compact(Request& r, MethodParams&) {  static void _compact(Request& r, MethodParams& params) {
         GET_SELF(r, VArray).array().compact();          bool compact_undef=false;
           if(params.count()>0){
                   const String& what=params.as_string(0, PARAMETER_MUST_BE_STRING);
                   if(!what.is_empty()){
                           if(what != "undef")
                                   throw Exception(PARSER_RUNTIME, &what, "param must be empty or 'undef'");
                           compact_undef=true;
                   }
           }
           GET_SELF(r, VArray).array().compact(compact_undef);
 }  }
   
   
Line 1044  static void _compact(Request& r, MethodP Line 1053  static void _compact(Request& r, MethodP
 MArray::MArray(): Methoded(VARRAY_TYPE) {  MArray::MArray(): Methoded(VARRAY_TYPE) {
   
         // ^array::copy[[copy_from]]          // ^array::copy[[copy_from]]
         add_native_method("copy", Method::CT_DYNAMIC, _create_or_add, 0, 1);          add_native_method("copy", Method::CT_DYNAMIC, _copy_or_add, 0, 1);
         // ^array.add[add_from]          // ^array.add[add_from]
         add_native_method("add", Method::CT_DYNAMIC, _create_or_add, 1, 1);          add_native_method("add", Method::CT_DYNAMIC, _copy_or_add, 1, 1);
         // ^array.join[join_from[;options]]          // ^array.join[join_from[;options]]
         add_native_method("join", Method::CT_DYNAMIC, _join, 1, 2);          add_native_method("join", Method::CT_DYNAMIC, _join, 1, 2);
   
         // ^array::create[value;value]          // ^array::create[value;value]
         add_native_method("create", Method::CT_DYNAMIC, _append, 0, 10000);          add_native_method("create", Method::CT_DYNAMIC, _create_or_append, 0, 10000);
         // ^array.append[value;value]          // ^array.append[value;value]
         add_native_method("append", Method::CT_DYNAMIC, _append, 1, 10000);          add_native_method("append", Method::CT_DYNAMIC, _create_or_append, 1, 10000);
         // ^array.insert[index;value...]          // ^array.insert[index;value...]
         add_native_method("insert", Method::CT_DYNAMIC, _insert, 2, 10000);          add_native_method("insert", Method::CT_DYNAMIC, _insert, 2, 10000);
   
Line 1097  MArray::MArray(): Methoded(VARRAY_TYPE) Line 1106  MArray::MArray(): Methoded(VARRAY_TYPE)
         // ^array.reverse[]          // ^array.reverse[]
         add_native_method("reverse", Method::CT_DYNAMIC, _reverse, 0, 0);          add_native_method("reverse", Method::CT_DYNAMIC, _reverse, 0, 0);
   
         // ^array.compact[]          // ^array.compact[[undef]]
         add_native_method("compact", Method::CT_DYNAMIC, _compact, 0, 0);          add_native_method("compact", Method::CT_DYNAMIC, _compact, 0, 1);
   
         // ^array._at[first|last[;'key'|'value'|'hash']]          // ^array._at[first|last[;'key'|'value'|'hash']]
         // ^array._at([-+]offset)[['key'|'value'|'hash']]          // ^array._at([-+]offset)[['key'|'value'|'hash']]

Removed from v.1.23  
changed lines
  Added in v.1.25


E-mail: