Diff for /parser3/src/include/pa_string.h between versions 1.144.2.28.2.18 and 1.144.2.28.2.21

version 1.144.2.28.2.18, 2003/03/21 14:27:51 version 1.144.2.28.2.21, 2003/03/24 08:27:45
Line 56  public: Line 56  public:
   
         uint hash_code() const;          uint hash_code() const;
   
           const char* cstr() const { return CORD_to_const_char_star(body); }
           char* cstrm() const { return CORD_to_char_star(body); }
   
         size_t length() const { return CORD_len(body); }          size_t length() const { return CORD_len(body); }
   
         bool is_empty() const { return body==CORD_EMPTY; }          bool is_empty() const { return body==CORD_EMPTY; }
Line 64  public: Line 67  public:
                 CORD_cat_char_star(body, str, length);                  CORD_cat_char_star(body, str, length);
         }          }
         void append(char c) { CORD_cat_char(body, c); }          void append(char c) { CORD_cat_char(body, c); }
           void append(StringBody src) { CORD_cat(body, src.body); }
   
         // could not figure out why this operator is needed [should do this chain: string->simple->==]          // could not figure out why this operator is needed [should do this chain: string->simple->==]
         bool operator < (const StringBody& src) const { return CORD_cmp(body, src.body)<0; }          bool operator < (const StringBody& src) const { return CORD_cmp(body, src.body)<0; }
Line 78  public: Line 82  public:
         }          }
   
         char fetch(size_t index) const { return CORD_fetch(body, index); }          char fetch(size_t index) const { return CORD_fetch(body, index); }
           StringBody mid(size_t index, size_t length) const { return CORD_substr(body, index, length); }
           size_t pos(size_t offset, const char* substr) const { return CORD_str(body, offset, substr); }
           size_t pos(size_t offset, const StringBody substr) const { return CORD_str(body, offset, substr.body); }
   
           template<typename I> void for_each(int (*callback)(const char* s, I), I info) const {
                   CORD_iter5(body, 0, 0, (CORD_batched_iter_fn)callback, info);
           }
   
           void set_pos(CORD_pos& pos, size_t index) const { CORD_set_pos(pos, body, index); }
   
 };  };
   
Line 181  public: Line 194  public:
         size_t length() const { return body.length(); }          size_t length() const { return body.length(); }
   
         /// convert to CORD. if 'lang' known, forcing 'lang' to it          /// convert to CORD. if 'lang' known, forcing 'lang' to it
         CORD cstr_to_cord(Language lang=L_AS_IS,           StringBody cstr_to_string_body(Language lang=L_AS_IS, 
                 SQL_Connection* connection=0,                  SQL_Connection* connection=0,
                 const Request_charsets *charsets=0) const;                  const Request_charsets *charsets=0) const;
   
Line 189  public: Line 202  public:
         const char* cstr(Language lang=L_AS_IS,           const char* cstr(Language lang=L_AS_IS, 
                 SQL_Connection* connection=0,                  SQL_Connection* connection=0,
                 const Request_charsets *charsets=0) const {                  const Request_charsets *charsets=0) const {
                 return CORD_to_const_char_star(cstr_to_cord(lang, connection, charsets));                  return cstr_to_string_body(lang, connection, charsets).cstr();
         }          }
         /// convert to Modifiable C string. if 'lang' known, forcing 'lang' to it          /// convert to Modifiable C string. if 'lang' known, forcing 'lang' to it
         char *cstrm(Language lang=L_AS_IS,           char *cstrm(Language lang=L_AS_IS, 
                 SQL_Connection* connection=0,                  SQL_Connection* connection=0,
                 const Request_charsets *charsets=0) const {                  const Request_charsets *charsets=0) const {
                 return CORD_to_char_star(cstr_to_cord(lang, connection, charsets));                  return cstr_to_string_body(lang, connection, charsets).cstrm();
         }          }
         /// puts pieces to buf          /// puts pieces to buf
         C serialize(size_t prolog_size) const;          C serialize(size_t prolog_size) const;
         /// appends pieces from buf to self          /// appends pieces from buf to self
         bool deserialize(size_t prolog_size, void *buf, size_t buf_size, const char* file);          bool deserialize(size_t prolog_size, void *buf, size_t buf_size, const char* file);
         /** append fragment,           /** append fragment, 
                 @c helper_length can be zero, it will be autocalced                  @c length can be zero, it will be autocalced
                 when length<strlen(str) makes heap copy of @c str piece                  when length<strlen(str) makes heap copy of @c str piece
         */          */
         String& append(const char* str, size_t helper_length, Language lang);          String& append(const char* str, size_t length, Language lang);
   
         bool operator == (const char* y) const { return body==StringBody(y); }          bool operator == (const char* y) const { return body==StringBody(y); }
           bool operator != (const char* y) const { return body!=StringBody(y); }
   
         /// this starts with y          /// this starts with y
         bool starts_with(const char* y) const {          bool starts_with(const char* y) const {
Line 224  public: Line 238  public:
         }          }
         String& operator << (const String& src) { return append(src, L_PASS_APPENDED); }          String& operator << (const String& src) { return append(src, L_PASS_APPENDED); }
         String& operator << (const char* src) { return append(src, 0, L_AS_IS); }          String& operator << (const char* src) { return append(src, 0, L_AS_IS); }
           String& operator << (const StringBody& src) { 
                   body.append(src);
                   fragments+=Fragment(L_AS_IS, src.length());
                   return *this;
           }
   
         /// extracts first char of a string, if any          /// extracts first char of a string, if any
         char first_char() const {          char first_char() const {
Line 245  public: Line 264  public:
                 but when specified: look for substring that lies in ONE fragment in THAT lang                  but when specified: look for substring that lies in ONE fragment in THAT lang
                 @return position of substr in string, -1 means "not found" [const char* version]                  @return position of substr in string, -1 means "not found" [const char* version]
         */          */
         size_t pos(CORD substr,           size_t pos(const StringBody substr, 
                 size_t this_offset=0, Language lang=L_UNSPECIFIED) const;                  size_t this_offset=0, Language lang=L_UNSPECIFIED) const;
         /// String version of @see pos(const char*, int, Language)          /// String version of @see pos(const char*, int, Language)
         size_t pos(const String& substr,           size_t pos(const String& substr, 

Removed from v.1.144.2.28.2.18  
changed lines
  Added in v.1.144.2.28.2.21


E-mail: