Diff for /parser3/src/classes/string.C between versions 1.243 and 1.245

version 1.243, 2019/11/20 20:48:25 version 1.245, 2019/12/05 21:41:08
Line 153  static void _bool(Request& r, MethodPara Line 153  static void _bool(Request& r, MethodPara
 }  }
   
 static void _left(Request& r, MethodParams& params) {  static void _left(Request& r, MethodParams& params) {
         ssize_t sn=params.as_int(0, "n must be int", r);          int sn=params.as_int(0, "n must be int", r);
         const String& string=GET_SELF(r, VString).string();          const String& string=GET_SELF(r, VString).string();
         r.write(sn<0 ? string : string.mid(r.charsets.source(), 0, (size_t)sn));          r.write(sn<0 ? string : string.mid(r.charsets.source(), 0, sn));
 }  }
   
 static void _right(Request& r, MethodParams& params) {  static void _right(Request& r, MethodParams& params) {
         ssize_t sn=params.as_int(0, "n must be int", r);          int sn=params.as_int(0, "n must be int", r);
         if(sn>0){          if(sn>0){
                 size_t n=(size_t)sn;                  size_t n=sn;
                 const String& string=GET_SELF(r, VString).string();                  const String& string=GET_SELF(r, VString).string();
                 size_t length=string.length(r.charsets.source());                  size_t length=string.length(r.charsets.source());
                 r.write(n<length ? string.mid(r.charsets.source(), length-n, length, length) : string);                  r.write(n<length ? string.mid(r.charsets.source(), length-n, length, length) : string);
Line 171  static void _right(Request& r, MethodPar Line 171  static void _right(Request& r, MethodPar
 static void _mid(Request& r, MethodParams& params) {  static void _mid(Request& r, MethodParams& params) {
         const String& string=GET_SELF(r, VString).string();          const String& string=GET_SELF(r, VString).string();
   
         ssize_t sbegin=params.as_int(0, "p must be int", r);          int begin=params.as_int(0, "p must be int", r);
         if(sbegin<0)          if(begin<0)
                 throw Exception(PARSER_RUNTIME, 0,  "p(%d) must be >=0", sbegin);                  throw Exception(PARSER_RUNTIME, 0,  "p(%d) must be >=0", begin);
         size_t begin=(size_t)sbegin;  
   
         size_t end;          size_t end;
         size_t length=0;          size_t length=0;
   
         if(params.count()>1) {          if(params.count()>1) {
                 ssize_t sn=params.as_int(1, "n must be int", r);                  int n=params.as_int(1, "n must be int", r);
                 if(sn<0)                  if(n<0)
                         throw Exception(PARSER_RUNTIME, 0, "n(%d) must be >=0", sn);                          throw Exception(PARSER_RUNTIME, 0, "n(%d) must be >=0", n);
                 end=begin+(size_t)sn;                  end=begin+n;
         } else {          } else {
                 length=string.length(r.charsets.source());                  length=string.length(r.charsets.source());
                 end=length;                  end=length;
Line 195  static void _pos(Request& r, MethodParam Line 195  static void _pos(Request& r, MethodParam
         Value& substr=params.as_no_junction(0, "substr must not be code");          Value& substr=params.as_no_junction(0, "substr must not be code");
                   
         const String& string=GET_SELF(r, VString).string();          const String& string=GET_SELF(r, VString).string();
         ssize_t offset=0;          int offset=0;
         if(params.count()>1){          if(params.count()>1){
                 offset=params.as_int(1, "n must be int", r);                  offset=params.as_int(1, "n must be int", r);
                 if(offset<0)                  if(offset<0)
                         throw Exception(PARSER_RUNTIME, 0, "n(%d) must be >=0", offset);                          throw Exception(PARSER_RUNTIME, 0, "n(%d) must be >=0", offset);
         }          }
   
         r.write(*new VInt((int)string.pos(r.charsets.source(), substr.as_string(), (size_t)offset)));          r.write(*new VInt((int)string.pos(r.charsets.source(), substr.as_string(), offset)));
 }  }
   
 static void split_list(MethodParams& params, int paramIndex, const String& string, ArrayString& result) {  static void split_list(MethodParams& params, int paramIndex, const String& string, ArrayString& result) {

Removed from v.1.243  
changed lines
  Added in v.1.245


E-mail: