Diff for /parser3/src/classes/string.C between versions 1.70 and 1.72

version 1.70, 2001/08/07 13:54:13 version 1.72, 2001/08/31 09:26:12
Line 15  static const char *RCSId="$Id$"; Line 15  static const char *RCSId="$Id$";
 #include "pa_vbool.h"  #include "pa_vbool.h"
 #include "pa_string.h"  #include "pa_string.h"
 #include "pa_sql_connection.h"  #include "pa_sql_connection.h"
   #include "pa_dictionary.h"
   
 // defines  // defines
   
Line 38  static void _length(Request& r, const St Line 39  static void _length(Request& r, const St
         r.write_no_lang(result);          r.write_no_lang(result);
 }  }
   
 static void _int(Request& r, const String& method_name, MethodParams *) {  static void _int(Request& r, const String& method_name, MethodParams *params) {
         Pool& pool=r.pool();          Pool& pool=r.pool();
         Value& result=*new(pool) VInt(pool, r.self->as_int());          bool convert_problem=false; Exception rethrow_me;
           int converted;
           PTRY {
                   converted=r.self->as_int();
           }
           PCATCH(e) { // convert problem
                   if(convert_problem=params->size()==0) { // we have a problem when do not have default
                           rethrow_me=e;  
                           converted=0;
                   } else
                           converted=params->as_int(0, r); // (default)
           }
           PEND_CATCH
           if(convert_problem)
                   PTHROW(rethrow_me.type(), rethrow_me.code(), 
                           rethrow_me.problem_source(),
                           rethrow_me.comment());
   
           Value& result=*new(pool) VInt(pool, converted);
         result.set_name(method_name);          result.set_name(method_name);
         r.write_no_lang(result);          r.write_no_lang(result);
 }  }
   
 static void _double(Request& r, const String& method_name, MethodParams *) {  static void _double(Request& r, const String& method_name, MethodParams *params) {
         Pool& pool=r.pool();          Pool& pool=r.pool();
         Value& result=*new(pool) VDouble(pool, r.self->as_double());          bool convert_problem=false; Exception rethrow_me;
           double converted;
           PTRY {
                   converted=r.self->as_double();
           }
           PCATCH(e) { // convert problem
                   if(convert_problem=params->size()==0) { // we have a problem when do not have default
                           rethrow_me=e;  
                           converted=0;
                   } else
                           converted=params->as_double(0, r); // (default)
           }
           PEND_CATCH
           if(convert_problem)
                   PTHROW(rethrow_me.type(), rethrow_me.code(), 
                           rethrow_me.problem_source(),
                           rethrow_me.comment());
   
           Value& result=*new(pool) VDouble(pool, converted);
         result.set_name(method_name);          result.set_name(method_name);
         r.write_no_lang(result);          r.write_no_lang(result);
 }  }
Line 386  static void _sql(Request& r, const Strin Line 423  static void _sql(Request& r, const Strin
         r.write_assign_lang(result);          r.write_assign_lang(result);
 }  }
   
   static void _replace(Request& r, const String& method_name, MethodParams *params) {
           Pool& pool=r.pool();
           const String& src=*static_cast<VString *>(r.self)->get_string();
   
           Table *table=params->as_no_junction(0, "parameter must not be code").get_table();
           if(!table)
                   PTHROW(0, 0,
                           &method_name,
                           "parameter must be table");
   
           Dictionary dict(*table);
           r.write_assign_lang(*new(pool) VString(src.replace(pool, dict)));
   }
 // constructor  // constructor
   
 MString::MString(Pool& apool) : Methoded(apool) {  MString::MString(Pool& apool) : Methoded(apool) {
Line 396  MString::MString(Pool& apool) : Methoded Line 446  MString::MString(Pool& apool) : Methoded
         add_native_method("length", Method::CT_DYNAMIC, _length, 0, 0);          add_native_method("length", Method::CT_DYNAMIC, _length, 0, 0);
                   
         // ^string.int[]          // ^string.int[]
         add_native_method("int", Method::CT_DYNAMIC, _int, 0, 0);          // ^string.int(default)
                   add_native_method("int", Method::CT_DYNAMIC, _int, 0, 1);
         // ^string.double[]          // ^string.double[]
         add_native_method("double", Method::CT_DYNAMIC, _double, 0, 0);          // ^string.double(default)
           add_native_method("double", Method::CT_DYNAMIC, _double, 0, 1);
   
         // ^string.format{format}          // ^string.format{format}
         add_native_method("format", Method::CT_DYNAMIC, _string_format, 1, 1);          add_native_method("format", Method::CT_DYNAMIC, _string_format, 1, 1);
Line 431  MString::MString(Pool& apool) : Methoded Line 482  MString::MString(Pool& apool) : Methoded
         // ^sql[query]          // ^sql[query]
         // ^sql[query][$.limit(1) $.offset(2) $.default[n/a]]          // ^sql[query][$.limit(1) $.offset(2) $.default[n/a]]
         add_native_method("sql", Method::CT_STATIC, _sql, 1, 2);          add_native_method("sql", Method::CT_STATIC, _sql, 1, 2);
   
           // ^string.replace[table]
           add_native_method("replace", Method::CT_DYNAMIC, _replace, 1, 1);
 }         }       
   
 // global variable  // global variable

Removed from v.1.70  
changed lines
  Added in v.1.72


E-mail: