diff options
Diffstat (limited to 'storage/ndb/include/util/BaseString.hpp')
-rw-r--r-- | storage/ndb/include/util/BaseString.hpp | 285 |
1 files changed, 0 insertions, 285 deletions
diff --git a/storage/ndb/include/util/BaseString.hpp b/storage/ndb/include/util/BaseString.hpp deleted file mode 100644 index 919014c6e3d..00000000000 --- a/storage/ndb/include/util/BaseString.hpp +++ /dev/null @@ -1,285 +0,0 @@ -/* Copyright (c) 2003-2005, 2007 MySQL AB - Use is subject to license terms - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; version 2 of the License. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ - -#ifndef __UTIL_BASESTRING_HPP_INCLUDED__ -#define __UTIL_BASESTRING_HPP_INCLUDED__ - -#include <ndb_global.h> -#include <Vector.hpp> - -/** - * @class BaseString - * @brief Null terminated strings - */ -class BaseString { -public: - /** @brief Constructs an empty string */ - BaseString(); - - /** @brief Constructs a copy of a char * */ - BaseString(const char* s); - - /** @brief Constructs a copy of another BaseString */ - BaseString(const BaseString& str); - - /** @brief Destructor */ - ~BaseString(); - - /** @brief Returns a C-style string */ - const char* c_str() const; - - /** @brief Returns the length of the string */ - unsigned length() const; - - /** @brief Checks if the string is empty */ - bool empty() const; - - /** @brief Clear a string */ - void clear(); - - /** @brief Convert to uppercase */ - BaseString& ndb_toupper(); - - /** @brief Convert to lowercase */ - BaseString& ndb_tolower(); - - /** @brief Assigns from a char * */ - BaseString& assign(const char* s); - - /** @brief Assigns from another BaseString */ - BaseString& assign(const BaseString& str); - - /** @brief Assigns from char *s, with maximum length n */ - BaseString& assign(const char* s, size_t n); - - /** @brief Assigns from another BaseString, with maximum length n */ - BaseString& assign(const BaseString& str, size_t n); - - /** - * Assings from a Vector of BaseStrings, each Vector entry - * separated by separator. - * - * @param vector Vector of BaseStrings to append - * @param separator Separation between appended strings - */ - BaseString& assign(const Vector<BaseString> &vector, - const BaseString &separator = BaseString(" ")); - - /** @brief Appends a char * to the end */ - BaseString& append(const char* s); - - /** @brief Appends a char to the end */ - BaseString& append(char c); - - /** @brief Appends another BaseString to the end */ - BaseString& append(const BaseString& str); - - /** - * Appends a Vector of BaseStrings to the end, each Vector entry - * separated by separator. - * - * @param vector Vector of BaseStrings to append - * @param separator Separation between appended strings - */ - BaseString& append(const Vector<BaseString> &vector, - const BaseString &separator = BaseString(" ")); - - /** @brief Assigns from a format string a la printf() */ - BaseString& assfmt(const char* ftm, ...); - - /** @brief Appends a format string a la printf() to the end */ - BaseString& appfmt(const char* ftm, ...); - - /** - * Split a string into a vector of strings. Separate the string where - * any character included in separator exists. - * Maximally maxSize entries are added to the vector, if more separators - * exist in the string, the remainder of the string will be appended - * to the last entry in the vector. - * The vector will not be cleared, so any existing strings in the - * vector will remain. - * - * @param separator characters separating the entries - * @param vector where the separated strings will be stored - * @param maximum number of strings extracted - * - * @returns the number of string added to the vector - */ - int split(Vector<BaseString> &vector, - const BaseString &separator = BaseString(" "), - int maxSize = -1) const; - - /** - * Returns the index of the first occurance of the character c. - * - * @params c character to look for - * @returns index of character, of -1 if no character found - */ - ssize_t indexOf(char c); - - /** - * Returns the index of the last occurance of the character c. - * - * @params c character to look for - * @returns index of character, of -1 if no character found - */ - ssize_t lastIndexOf(char c); - - /** - * Returns a subset of a string - * - * @param start index of first character - * @param stop index of last character - * @return a new string - */ - BaseString substr(ssize_t start, ssize_t stop = -1); - - /** - * @brief Assignment operator - */ - BaseString& operator=(const BaseString& str); - - /** @brief Compare two strings */ - bool operator<(const BaseString& str) const; - /** @brief Are two strings equal? */ - bool operator==(const BaseString& str) const; - /** @brief Are two strings equal? */ - bool operator==(const char *str) const; - /** @brief Are two strings not equal? */ - bool operator!=(const BaseString& str) const; - /** @brief Are two strings not equal? */ - bool operator!=(const char *str) const; - - /** - * Trim string from <i>delim</i> - */ - BaseString& trim(const char * delim = " \t"); - - /** - * Return c-array with strings suitable for execve - * When whitespace is detected, the characters '"' and '\' are honored, - * to make it possible to give arguments containing whitespace. - * The semantics of '"' and '\' match that of most Unix shells. - */ - static char** argify(const char *argv0, const char *src); - - /** - * Trim string from <i>delim</i> - */ - static char* trim(char * src, const char * delim); - - /** - * snprintf on some platforms need special treatment - */ - static int snprintf(char *str, size_t size, const char *format, ...); - static int vsnprintf(char *str, size_t size, const char *format, va_list ap); -private: - char* m_chr; - unsigned m_len; - friend bool operator!(const BaseString& str); -}; - -inline const char* -BaseString::c_str() const -{ - return m_chr; -} - -inline unsigned -BaseString::length() const -{ - return m_len; -} - -inline bool -BaseString::empty() const -{ - return m_len == 0; -} - -inline void -BaseString::clear() -{ - delete[] m_chr; - m_chr = new char[1]; - m_chr[0] = 0; - m_len = 0; -} - -inline BaseString& -BaseString::ndb_toupper() { - for(unsigned i = 0; i < length(); i++) - m_chr[i] = toupper(m_chr[i]); - return *this; -} - -inline BaseString& -BaseString::ndb_tolower() { - for(unsigned i = 0; i < length(); i++) - m_chr[i] = tolower(m_chr[i]); - return *this; -} - -inline bool -BaseString::operator<(const BaseString& str) const -{ - return strcmp(m_chr, str.m_chr) < 0; -} - -inline bool -BaseString::operator==(const BaseString& str) const -{ - return strcmp(m_chr, str.m_chr) == 0; -} - -inline bool -BaseString::operator==(const char *str) const -{ - return strcmp(m_chr, str) == 0; -} - -inline bool -BaseString::operator!=(const BaseString& str) const -{ - return strcmp(m_chr, str.m_chr) != 0; -} - -inline bool -BaseString::operator!=(const char *str) const -{ - return strcmp(m_chr, str) != 0; -} - -inline bool -operator!(const BaseString& str) -{ - return str.m_chr == NULL; -} - -inline BaseString& -BaseString::assign(const BaseString& str) -{ - return assign(str.m_chr); -} - -inline BaseString& -BaseString::assign(const Vector<BaseString> &vector, - const BaseString &separator) { - assign(""); - return append(vector, separator); -} - -#endif /* !__UTIL_BASESTRING_HPP_INCLUDED__ */ |