--- parser3/src/classes/string.C 2001/04/15 13:12:18 1.38 +++ parser3/src/classes/string.C 2001/04/27 16:48:21 1.40.2.2 @@ -5,20 +5,28 @@ Author: Alexander Petrosyan (http://design.ru/paf) - $Id: string.C,v 1.38 2001/04/15 13:12:18 paf Exp $ + $Id: string.C,v 1.40.2.2 2001/04/27 16:48:21 paf Exp $ */ +#include "classes.h" #include "pa_request.h" -#include "_string.h" #include "pa_vdouble.h" #include "pa_vint.h" #include "pa_vtable.h" #include "pa_vbool.h" #include "pa_string.h" -// global var +// defines -VStateless_class *string_class; +#define STRING_CLASS_NAME "string" + +// class + +class MString : public Methoded { +public: + MString(Pool& pool); + bool used_directly() { return false; } +}; // methods @@ -136,6 +144,7 @@ static void search_action(Table& table, table+=row; } +/// used by string: _match / replace_action struct Replace_action_info { Request *request; const String *origin; const String *src; String *dest; @@ -192,7 +201,8 @@ static void _match(Request& r, const Str Temp_lang temp_lang(r, String::UL_PASS_APPENDED); Table *table; if(params->size()<3) { // search - if(src.match(&method_name, + if(src.match(r.pcre_tables, + &method_name, regexp.as_string(), options, &table, search_action, 0)) { @@ -214,7 +224,8 @@ static void _match(Request& r, const Str &replacement_code, &src }; - src.match(&method_name, + src.match(r.pcre_tables, + &method_name, r.process(regexp).as_string(), options, &table, replace_action, &replace_action_info); @@ -224,9 +235,12 @@ static void _match(Request& r, const Str r.write_assign_lang(*result); } -// initialize +// constructor + +MString::MString(Pool& pool) : Methoded(pool) { + set_name(new(pool) String(pool, STRING_CLASS_NAME)); + -void initialize_string_class(Pool& pool, VStateless_class& vclass) { // ^string.length[] vclass.add_native_method("length", Method::CT_DYNAMIC, _length, 0, 0); @@ -259,3 +273,12 @@ void initialize_string_class(Pool& pool, vclass.add_native_method("match", Method::CT_DYNAMIC, _match, 1, 3); } +// global variable + +Methoded *string_class; + +// creator + +Methoded *MTable_create(Pool& pool) { + return string_class=new(pool) MString(pool); +}