diff options
| author | Albrecht Schlosser <albrechts.fltk@online.de> | 2022-12-20 20:05:15 +0100 |
|---|---|---|
| committer | Albrecht Schlosser <albrechts.fltk@online.de> | 2022-12-20 20:05:15 +0100 |
| commit | 1d212b7a0394fb72e76b3e713e2aa949cea4d612 (patch) | |
| tree | 83bbd44c7e50ea78cec9c374723f47a64e7924b2 | |
| parent | 004ea67203f6de695c3e1e246da28bf73d74ee83 (diff) | |
Clean up class Fl_String (part of issue #601)
- remove static variable 'string_count'
- improve and document methods debug() and hexdump()
This commit does not resolve issue 601 but removes some development
leftovers.
Methods debug() and hexdump() left for debugging as requested.
| -rw-r--r-- | FL/Fl_String.H | 6 | ||||
| -rw-r--r-- | src/Fl_String.cxx | 63 |
2 files changed, 39 insertions, 30 deletions
diff --git a/FL/Fl_String.H b/FL/Fl_String.H index 8b9b33a1b..300cf98f6 100644 --- a/FL/Fl_String.H +++ b/FL/Fl_String.H @@ -104,10 +104,8 @@ public: int slen() const; int capacity() const; - // ================================== DEBUG ================================== - - void debug(const char *info) const; // output string info - void hexdump(const char *info) const; // output info + hexdump + void debug(const char *info = 0) const; // output string info + void hexdump(const char *info = 0) const; // output string info + hexdump }; // class Fl_String diff --git a/src/Fl_String.cxx b/src/Fl_String.cxx index 57103d700..380493b21 100644 --- a/src/Fl_String.cxx +++ b/src/Fl_String.cxx @@ -23,26 +23,18 @@ Basic Fl_String class for FLTK. */ -static int string_count; - Fl_String::Fl_String() { - string_count++; init(); - // debug("created ()"); } Fl_String::Fl_String(const char *str) { - string_count++; init(); value(str); - // debug("created (str)"); } Fl_String::Fl_String(const char *str, int size) { - string_count++; init(); value(str, size); - // debug("created (str, size)"); } void Fl_String::init() { @@ -53,10 +45,8 @@ void Fl_String::init() { // copy constructor Fl_String::Fl_String(const Fl_String &in) { - string_count++; init(); value(in.value(), in.size()); - // debug("copied (c'tor)"); } // copy assignment operator @@ -76,8 +66,6 @@ Fl_String& Fl_String::operator=(const char *in) { } Fl_String::~Fl_String() { - string_count--; - // debug("~Fl_String()"); delete[] value_; } @@ -132,26 +120,49 @@ void Fl_String::release() { // ============================= DEBUG ============================= -static const char fl_string_debug = 0; +/** + Write some details about the string to stdout. + + Nothing at all is written if \p info is NULL, otherwise the short info + string and details are written to stdout. + + The \p info string should not be longer than 20 characters to align the + debug output of several strings. + \param[in] info short info string or NULL +*/ void Fl_String::debug(const char *info) const { - if (fl_string_debug) { - printf("Fl_String[%2d] '%-20s': %p, value = %p (%d/%d): '%s'.\n", - string_count, info, this, value_, size_, capacity_, value_); + if (info) { + printf("Fl_String '%-20s': %p, value = %p (%d/%d): '%s'\n", + info, this, value_, size_, capacity_, value_ ? value_ : "<NULL>"); } } +/** + Write some details about the string to stdout, followed by a hex dump of + the string. + + The first part is the same as written by Fl_String::debug(). The following + part is a hexadecimal dump of all bytes of the string. Embedded \p nul bytes + are possible and will be dumped as well. + + \param[in] info short info string or NULL + + \see Fl_String::debug(const char *info) const +*/ void Fl_String::hexdump(const char *info) const { - if (fl_string_debug) { - debug(info); - for (int i = 0; i < size_; i++) { - if ((i & 15) == 0) { - if (i > 0) printf("\n"); - printf(" [%04x %4d] ", i, i); - } else if ((i & 3) == 0) - printf(" "); - printf(" %02x", (unsigned char)value_[i]); + debug(info); + if (size_ == 0) + return; + for (int i = 0; i < size_; i++) { + if ((i & 15) == 0) { + if (i > 0) + printf("\n"); + printf(" [%04x %4d] ", i, i); // position + } else if ((i & 3) == 0) { // separator after 4 bytes + printf(" "); } - printf("\n"); + printf(" %02x", (unsigned char)value_[i]); } + printf("\n"); } |
