src/str.h

changeset 88
5def6ff8b466
parent 87
8f65914e7046
child 89
029a330a9bef
--- a/src/str.h	Sun Feb 02 01:50:23 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,329 +0,0 @@
-/*
-	Copyright 2012-2014 Santeri Piippo
-	All rights reserved.
-
-	Redistribution and use in source and binary forms, with or without
-	modification, are permitted provided that the following conditions
-	are met:
-
-	1. Redistributions of source code must retain the above copyright
-	   notice, this list of conditions and the following disclaimer.
-	2. Redistributions in binary form must reproduce the above copyright
-	   notice, this list of conditions and the following disclaimer in the
-	   documentation and/or other materials provided with the distribution.
-	3. The name of the author may not be used to endorse or promote products
-	   derived from this software without specific prior written permission.
-
-	THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-	IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-	OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-	IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-	INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-	NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-	DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-	THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-	(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-	THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef BOTC_STRING_H
-#define BOTC_STRING_H
-
-#include <deque>
-#include <string>
-#include <stdarg.h>
-#include "types.h"
-#include "containers.h"
-
-class string;
-class string_list;
-
-// =============================================================================
-//
-class string
-{
-	public:
-		typedef typename ::std::string::iterator       iterator;
-		typedef typename ::std::string::const_iterator const_iterator;
-		using length_type = int;
-
-		string() {}
-
-		explicit string (char a)
-		{
-			m_string = &a;
-		}
-
-		string (const char* data)
-		{
-			m_string = data;
-		}
-
-		string (std::string data)
-		{
-			m_string = data;
-		}
-
-		void               dump() const;
-		int                compare (const string& other) const;
-		bool               ends_with (const string& other);
-		int                count (const char needle) const;
-		int                first (const char* c, length_type a = 0) const;
-		int                last (const char* c, length_type a = -1) const;
-		string             to_lowercase() const;
-		bool               is_numeric() const;
-		bool				mask (const string& pattern) const;
-		length_type        posof (int n) const;
-		void               prepend (string a);
-		void               replace (const char* a, const char* b);
-		string_list        split (string del) const;
-		string_list        split (char del) const;
-		void               sprintf (const char* fmtstr, ...);
-		bool               starts_with (const string& other);
-		string             strip (list< char > unwanted);
-		string             substring (long a, long b = -1) const;
-		double             to_double (bool* ok = nullptr) const;
-		float              to_float (bool* ok = nullptr) const;
-		long               to_long (bool* ok = nullptr, int base = 10) const;
-		void               trim (length_type n);
-		string             to_uppercase() const;
-
-		string             operator+ (const string& data) const;
-		string             operator+ (const char* data) const;
-		string             operator+ (int num) const;
-		string&            operator+= (const string data);
-		string&            operator+= (const char* data);
-		string&            operator+= (int num);
-
-		static string		from_number (int a);
-		static string		from_number (long a);
-
-		inline bool is_empty() const
-		{
-			return m_string[0] == '\0';
-		}
-
-		inline void append (const char* data)
-		{
-			m_string.append (data);
-		}
-
-		inline void append (const char data)
-		{
-			m_string.push_back (data);
-		}
-
-		inline void append (const string& data)
-		{
-			m_string.append (data.chars());
-		}
-
-		inline iterator begin()
-		{
-			return m_string.begin();
-		}
-
-		inline const_iterator begin() const
-		{
-			return m_string.cbegin();
-		}
-
-		inline int capacity() const
-		{
-			return m_string.capacity();
-		}
-
-		inline const char* chars() const
-		{
-			return m_string.c_str();
-		}
-
-		inline const char* c_str() const
-		{
-			return m_string.c_str();
-		}
-
-		inline iterator end()
-		{
-			return m_string.end();
-		}
-
-		inline const_iterator end() const
-		{
-			return m_string.end();
-		}
-
-		inline void clear()
-		{
-			m_string.clear();
-		}
-
-		inline bool empty() const
-		{
-			return m_string.empty();
-		}
-
-		inline void erase (length_type pos)
-		{
-			m_string.erase (m_string.begin() + pos);
-		}
-
-		inline void insert (length_type pos, char c)
-		{
-			m_string.insert (m_string.begin() + pos, c);
-		}
-
-		inline length_type length() const
-		{
-			return m_string.length();
-		}
-
-		inline int max_size() const
-		{
-			return m_string.max_size();
-		}
-
-		inline string mid (int a, int len) const
-		{
-			return m_string.substr (a, len);
-		}
-
-		inline void remove (int pos, int len)
-		{
-			m_string.replace (pos, len, "");
-		}
-
-		inline void remove_from_start (int len)
-		{
-			remove (0, len);
-		}
-
-		inline void remove_from_end (int len)
-		{
-			remove (length() - len, len);
-		}
-
-		inline void resize (int n)
-		{
-			m_string.resize (n);
-		}
-
-		inline void replace (int pos, int n, const string& a)
-		{
-			m_string.replace (pos, n, a.chars());
-		}
-
-		inline void shrink_to_fit()
-		{
-			m_string.shrink_to_fit();
-		}
-
-		inline const std::string& std_string() const
-		{
-			return m_string;
-		}
-
-		inline string strip (char unwanted)
-		{
-			return strip ( {unwanted});
-		}
-
-		string& operator+= (const char data)
-		{
-			append (data);
-			return *this;
-		}
-
-		string operator- (int n) const
-		{
-			string new_string = m_string;
-			new_string -= n;
-			return new_string;
-		}
-
-		inline string& operator-= (int n)
-		{
-			trim (n);
-			return *this;
-		}
-
-		inline string operator+() const
-		{
-			return to_uppercase();
-		}
-
-		inline string operator-() const
-		{
-			return to_lowercase();
-		}
-
-		inline bool operator== (const string& other) const
-		{
-			return std_string() == other.std_string();
-		}
-
-		inline bool operator== (const char* other) const
-		{
-			return operator== (string (other));
-		}
-
-		inline bool operator!= (const string& other) const
-		{
-			return std_string() != other.std_string();
-		}
-
-		inline bool operator!= (const char* other) const
-		{
-			return operator!= (string (other));
-		}
-
-		inline bool operator> (const string& other) const
-		{
-			return std_string() > other.std_string();
-		}
-
-		inline bool operator< (const string& other) const
-		{
-			return std_string() < other.std_string();
-		}
-
-		inline operator const char*() const
-		{
-			return chars();
-		}
-
-		inline operator const std::string&() const
-		{
-			return std_string();
-		}
-
-		// Difference between indices @a and @b. @b can be -1, in which
-		// case it will be length() - 1.
-		inline int index_difference (int a, int b)
-		{
-			assert (b == -1 || b >= a);
-			return (b != -1 ? b - a : length() - 1 - a);
-		}
-
-	private:
-		std::string m_string;
-};
-
-// =============================================================================
-//
-class string_list : public list<string>
-{
-	public:
-		string_list() {}
-		string_list (std::initializer_list<string> vals) :
-			list<string> (vals) {}
-		string_list (const list<string>& a) : list<string> (a.std_deque()) {}
-		string_list (const list_type& a) : list<string> (a) {}
-
-		string join (const string& delim);
-};
-
-bool operator== (const char* a, const string& b);
-string operator+ (const char* a, const string& b);
-
-#endif // BOTC_STRING_H

mercurial