Diff for /parser3/src/include/pa_string.h between versions 1.171 and 1.178

version 1.171, 2008/07/16 17:06:10 version 1.178, 2009/04/22 04:37:52
Line 36  class Dictionary; Line 36  class Dictionary;
 class Request_charsets;  class Request_charsets;
 class String;  class String;
 typedef Array<const String*> ArrayString;  typedef Array<const String*> ArrayString;
   class VRegex;
   
 // generally useful  // generally useful
   
Line 57  inline size_t get_length(T current) { Line 58  inline size_t get_length(T current) {
         - whether they are tainted or not,           - whether they are tainted or not, 
           and the lang which should be used to detaint them            and the lang which should be used to detaint them
 */  */
   
   
 class String: public PA_Object {  class String: public PA_Object {
 public:  public:
   
Line 97  public: Line 100  public:
                 L_HTML='H',             ///< HTML code                  L_HTML='H',             ///< HTML code
                 L_REGEX='R',    ///< RegEx expression                  L_REGEX='R',    ///< RegEx expression
                 L_HTTP_COOKIE='C',      ///< cookies encoded as %uXXXX for compartibility with js functions encode/decode                  L_HTTP_COOKIE='C',      ///< cookies encoded as %uXXXX for compartibility with js functions encode/decode
                   L_FILE_POST='f', ///temporary escaping zero-char
                 // READ WARNING ABOVE BEFORE ADDING ANYTHING                  // READ WARNING ABOVE BEFORE ADDING ANYTHING
                 L_OPTIMIZE_BIT = 0x80  ///< flag, requiring cstr whitespace optimization                  L_OPTIMIZE_BIT = 0x80  ///< flag, requiring cstr whitespace optimization
         };          };
Line 107  public: Line 111  public:
                 TRIM_END                  TRIM_END
         };          };
   
   
         union Languages {          union Languages {
   
                 struct {                  struct {
Line 181  public: Line 186  public:
                         append(current, CORD_chars((char)alang, asize));                          append(current, CORD_chars((char)alang, asize));
                 }                  }
   
                 /// MUST be called exactly prior to modification of current [uses it's length]  
                 template<typename C>                  template<typename C>
                 void append(C current, size_t appending_length,                   void appendHelper(C current, Language alang, C asize_helper) {
                         const Languages src) {                          assert(alang);
                         assert(appending_length);  
                           if(!opt.is_not_just_lang)
                                   if(opt.lang) {
                                           if(opt.lang==alang) // same length? ignoring
                                                   return;
                                   } else {
                                           opt.lang=alang; // to uninitialized
                                           return;
                                   }
   
                           append(current, CORD_chars((char)alang, asize_helper.length()));
                   }
   
                   template<typename C>
                   void appendHelper(C current, C length_helper, const Languages src) {
   
                         if(!langs)                          if(!langs)
                                 langs=src.langs; // to uninitialized                                  langs=src.langs; // to uninitialized
                         else if(!src.opt.is_not_just_lang)                          else if(!src.opt.is_not_just_lang)
                                 append(current, src.opt.lang, appending_length); // simplifying when simple source                                  appendHelper(current, src.opt.lang, length_helper); // simplifying when simple source
                         else                          else
                                 append(current, src.make_langs(appending_length));                                  append(current, src.make_langs(length_helper));
                 }                  }
                   
   
                 /// MUST be called exactly prior to modification of current [uses it's length]                  /// MUST be called exactly prior to modification of current [uses it's length]
                 template<typename C>                  template<typename C>
                 void append(C current,                  void append(C current,
Line 463  public: Line 482  public:
   
         /// extracts [start, finish) piece of string          /// extracts [start, finish) piece of string
         String& mid(size_t substr_begin, size_t substr_end) const;          String& mid(size_t substr_begin, size_t substr_end) const;
         String& mid(Charset& charset, size_t substr_begin, size_t substr_end) const;          String& mid(Charset& charset, size_t from, size_t to, size_t helper_length=0) const;
   
         /**           /** 
                 ignore lang if it's L_UNSPECIFIED                  ignore lang if it's L_UNSPECIFIED
Line 479  public: Line 498  public:
                 size_t this_offset=0) const {                  size_t this_offset=0) const {
                 return body.pos(c, this_offset);                  return body.pos(c, this_offset);
         }          }
         size_t String::pos(Charset& charset,          size_t pos(Charset& charset,
                 const String& substr,                   const String& substr, 
                 size_t this_offset=0, Language lang=L_UNSPECIFIED) const;                  size_t this_offset=0, Language lang=L_UNSPECIFIED) const;
   
Line 503  public: Line 522  public:
                         prematch/match/postmatch/1/2/3/...                          prematch/match/postmatch/1/2/3/...
                 @endverbatim                  @endverbatim
         */          */
         Table* match(Charset& source_charset,          Table* match(VRegex* vregex,
                 const String& regexp,   
                 const String* options,  
                 Row_action row_action, void *info,                  Row_action row_action, void *info,
                 int& matches_count) const;                  int& matches_count) const;
         enum Change_case_kind {          enum Change_case_kind {
Line 519  public: Line 536  public:
         double as_double() const { return pa_atod(cstr(), this); }          double as_double() const { return pa_atod(cstr(), this); }
         int as_int() const { return pa_atoi(cstr(), this); }          int as_int() const { return pa_atoi(cstr(), this); }
         bool as_bool() const { return as_int()!=0; }          bool as_bool() const { return as_int()!=0; }
           const String& escape(Charset& source_charset) const;
   
 private: //disabled  private: //disabled
   

Removed from v.1.171  
changed lines
  Added in v.1.178


E-mail: