72 if (0 == this->
cmp(that))
81 if (0 == this->
cmp(that))
103 memcpy(
buf_, str, len);
225 if (newLength >
len_)
return;
233 buf_[newLength] =
'\0';
239nilCmp(
const bool thisIsNilOrEmpty,
const bool otherIsNilOrEmpty,
int &result)
241 if (!thisIsNilOrEmpty && !otherIsNilOrEmpty)
244 if (thisIsNilOrEmpty && otherIsNilOrEmpty)
246 else if (thisIsNilOrEmpty)
258 if (
nilCmp(!
size(), (!aString || !*aString), result))
268 if (
nilCmp((!
size() || !count), (!aString || !*aString || !count), result))
271 return strncmp(
termedBuf(), aString, count);
288 if (
nilCmp(!
size(), (!aString || !*aString), result))
298 if (
nilCmp((!
size() || !count), (!aString || !*aString || !count), result))
301 return strncasecmp(
termedBuf(), aString, count);
319ptrcmp(
C const &lhs,
C const &rhs)
324StringRegistry::StringRegistry()
328 "Strings in use in squid", Stat, 0, 1);
333StringRegistry::add(
String const *entry)
335 entries.insert(entry, ptrcmp);
339StringRegistry::remove(
String const *entry)
341 entries.remove(entry, ptrcmp);
344StringRegistry StringRegistry::Instance_;
352 Instance().entries.head->walk(Stater, entry);
356StringRegistry::Stater(
String const *
const & nodedata,
void *state)
359 nodedata->stat(entry);
368 return strpbrk(s,
w_space) !=
nullptr;
377 while ((c = (
unsigned char) *s++) !=
'\0') {
381 if (c >= 0x7f && c <= 0x9f)
395 unsigned char *word =
nullptr;
396 unsigned char *p = (
unsigned char *) buf;
402 p = (
unsigned char *) *t;
474 return (
char *) word;
480 return p ? p :
"(NULL)";
static CodeContext::Pointer & Instance()
guarantees the forever existence of the pointer, starting from the first use
static bool nilCmp(const bool thisIsNilOrEmpty, const bool otherIsNilOrEmpty, int &result)
int stringHasCntl(const char *s)
int stringHasWhitespace(const char *s)
char * strwordtok(char *buf, char **t)
const char * checkNullString(const char *p)
void error(char *format,...)
bool canGrowBy(const size_type growthLen) const
whether appending growthLen characters is safe (i.e., unlikely to assert)
int cmp(char const *) const
String substr(size_type from, size_type to) const
void setBuffer(char *buf, size_type sz)
size_type find(char const ch) const
static const size_type npos
void assign(const char *str, int len)
const char * pos(char const *aString) const
bool operator==(String const &) const
size_type rfind(char const ch) const
char const * rawBuf() const
void allocAndFill(const char *str, int len)
void allocBuffer(size_type sz)
void cut(size_type newLength)
char const * termedBuf() const
void append(char const *buf, int len)
int caseCmp(char const *) const
void reset(char const *str)
static const size_type SizeMax_
String & operator=(char const *)
const char * rpos(char const ch) const
bool operator!=(String const &) const
void memFreeString(size_t size, void *)
void * memAllocString(size_t net_size, size_t *gross_size)
void RegisterAction(char const *action, char const *desc, OBJH *handler, int pw_req_flag, int atomic)
void storeAppendPrintf(StoreEntry *e, const char *fmt,...)
char * xstrncpy(char *dst, const char *src, size_t n)