--- parser3/src/include/pa_string.h 2001/04/03 14:39:02 1.65 +++ parser3/src/include/pa_string.h 2001/04/05 13:19:42 1.71 @@ -5,7 +5,7 @@ Author: Alexander Petrosyan (http://design.ru/paf) - $Id: pa_string.h,v 1.65 2001/04/03 14:39:02 paf Exp $ + $Id: pa_string.h,v 1.71 2001/04/05 13:19:42 paf Exp $ */ #ifndef PA_STRING_H @@ -55,6 +55,7 @@ class Table; #define APPEND_CONST(src) APPEND_CLEAN(src, 0, 0, 0) class Array; +class SQL_Connection; /** Pooled string. @@ -111,10 +112,10 @@ public: String(Pool& apool, const char *src=0, bool tainted=false); String(const String& src); size_t size() const { return fsize; } - /// convert to C string - char *cstr() const { + /// convert to C string. if 'lang' known, forcing 'lang' to it + char *cstr(Untaint_lang lang=UL_UNKNOWN, SQL_Connection *connection=0) const { char *result=(char *)malloc(size()*UNTAINT_TIMES_BIGGER+1); - char *eol=store_to(result); + char *eol=store_to(result, lang, connection); *eol=0; return result; } @@ -166,7 +167,7 @@ public: uint hash_code() const; /// extracts [start, finish) piece of string - String& piece(size_t start, size_t finish) const; + String& mid(size_t start, size_t finish) const; /// @return position of substr in string, -1 means "not found" [String version] int pos(const String& substr, @@ -184,10 +185,13 @@ public: const String& delim, Untaint_lang lang, int limit=-1) const; + typedef void (*Row_action)(Table& table, Array *row, int start, int finish, + void *info); bool match(const String *aorigin, const String& regexp, const String *options, - Table **table) const; + Table **table, + Row_action row_action, void *info) const; #ifndef NO_STRING_ORIGIN /// origin of string. calculated by first row @@ -239,7 +243,8 @@ private: return append_here == link_row; } void expand(); - char *String::store_to(char *dest) const; + char *String::store_to(char *dest, + Untaint_lang lang=UL_UNKNOWN, SQL_Connection *connection=0) const; private: //disabled