*/
#include "squid.h"
-#include "base/TextException.h"
-#include "mgr/Registration.h"
-#include "Store.h"
+#include "mem/forward.h"
+#include "SquidString.h"
#include <climits>
size_ = aSize;
}
-String::String()
-{
-#if DEBUGSTRINGS
- StringRegistry::Instance().add(this);
-#endif
-}
-
String::String(char const *aString)
{
if (aString)
allocAndFill(aString, strlen(aString));
-#if DEBUGSTRINGS
- StringRegistry::Instance().add(this);
-#endif
}
String &
{
if (old.size() > 0)
allocAndFill(old.rawBuf(), old.size());
-#if DEBUGSTRINGS
-
- StringRegistry::Instance().add(this);
-#endif
}
void
String::~String()
{
clean();
-#if DEBUGSTRINGS
-
- StringRegistry::Instance().remove(this);
-#endif
}
void
return strncasecmp(termedBuf(), aString, count);
}
-#if DEBUGSTRINGS
-void
-String::stat(StoreEntry *entry) const
-{
- storeAppendPrintf(entry, "%p : %d/%d \"%.*s\"\n",this,len_, size_, size(), rawBuf());
-}
-
-StringRegistry &
-StringRegistry::Instance()
-{
- return Instance_;
-}
-
-template <class C>
-int
-ptrcmp(C const &lhs, C const &rhs)
-{
- return lhs - rhs;
-}
-
-StringRegistry::StringRegistry()
-{
-#if DEBUGSTRINGS
- Mgr::RegisterAction("strings",
- "Strings in use in squid", Stat, 0, 1);
-#endif
-}
-
-void
-StringRegistry::add(String const *entry)
-{
- entries.insert(entry, ptrcmp);
-}
-
-void
-StringRegistry::remove(String const *entry)
-{
- entries.remove(entry, ptrcmp);
-}
-
-StringRegistry StringRegistry::Instance_;
-
-String::size_type memStringCount();
-
-void
-StringRegistry::Stat(StoreEntry *entry)
-{
- storeAppendPrintf(entry, "%lu entries, %lu reported from MemPool\n", (unsigned long) Instance().entries.elements, (unsigned long) memStringCount());
- Instance().entries.head->walk(Stater, entry);
-}
-
-void
-StringRegistry::Stater(String const * const & nodedata, void *state)
-{
- StoreEntry *entry = (StoreEntry *) state;
- nodedata->stat(entry);
-}
-
-#endif
-
/* TODO: move onto String */
int
stringHasWhitespace(const char *s)