diff -r 9374fea8f77f -r f1b8cb53d2a2 str.h
--- a/str.h Wed May 08 14:57:48 2013 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,271 +0,0 @@
-/*
- * LDForge: LDraw parts authoring CAD
- * Copyright (C) 2013 Santeri Piippo
- *
- * 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, either version 3 of the License, or
- * (at your option) any later version.
- *
- * 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, see .
- */
-
-#ifndef STR_H
-#define STR_H
-
-#include
-#include
-#include
-#include
-#include
-
-char* vdynformat (const char* csFormat, va_list vArgs, long int lSize);
-
-class vertex;
-
-// Dynamic string object, allocates memory when needed and
-// features a good bunch of manipulation methods
-class str {
-private:
- // The actual message
- char* text;
-
- // Where will append() place new characters?
- unsigned short curs;
-
- // Allocated length
- unsigned short alloclen;
-
- // Resize the text buffer to len characters
- void resize (unsigned int len);
-
-public:
- // ======================================================================
- str ();
- str (const char* c);
- str (char c);
- str (QString c);
- ~str ();
-
- // ======================================================================
- // METHODS
-
- // Empty the string
- void clear ();
-
- // Length of the string
- size_t len () {
- return strlen (text);
- }
-
- // The char* form of the string
- char* chars ();
-
- // Dumps the character table of the string
- void dump ();
-
- // Appends text to the string
- void append (const char c);
- void append (const char* c);
- void append (str c);
- void append (QString c);
-
- // Formats text to the string.
- void format (const char* fmt, ...);
-
- // Appends formatted text to the string.
- void appendformat (const char* c, ...);
-
- // Returns the first occurrence of c in the string, optionally starting
- // from a certain position rather than the start.
- int first (const char* c, unsigned int a = 0);
-
- // Returns the last occurrence of c in the string, optionally starting
- // from a certain position rather than the end.
- int last (const char* c, int a = -1);
-
- // Returns a substring of the string, from a to b.
- str substr (unsigned int a, unsigned int b);
-
- // Replace a substring with another substring.
- void replace (const char* o, const char* n, unsigned int a = 0);
-
- // Removes a given index from the string, optionally more characters than just 1.
- void remove (unsigned int idx, unsigned int dellen=1);
-
- // Trims the given amount of characters. If negative, the characters
- // are removed from the beginning of the string, if positive, from the
- // end of the string.
- str trim (int dellen);
-
- // Inserts a substring into a certain position.
- void insert (char* c, unsigned int pos);
-
- // Reverses the string.
- str reverse ();
-
- // Repeats the string a given amount of times.
- str repeat (int n);
-
- // Is the string a number?
- bool isnumber ();
-
- // Is the string a word, i.e consists only of alphabetic letters?
- bool isword ();
-
- // Convert string to lower case
- str tolower ();
-
- // Convert string to upper case
- str toupper ();
-
- // Compare this string with another
- int compare (const char* c);
- int compare (str c);
- int icompare (str c);
- int icompare (const char* c);
-
- // Counts the amount of substrings in the string
- unsigned int count (char* s);
- unsigned int count (char s);
-
- // Counts where the given substring is seen for the nth time
- int instanceof (const char* s, unsigned n);
-
- char subscript (uint pos) {
- return operator[] (pos);
- }
-
- std::vector split (str del, bool bNoBlanks = false);
-
- str strip (char c);
- str strip (std::initializer_list unwanted);
-
- // ======================================================================
- // OPERATORS
- str operator+ (str& c) {
- append (c);
- return *this;
- }
-
- str& operator+= (char c) {
- append (c);
- return *this;
- }
-
- str& operator+= (const char* c) {
- append (c);
- return *this;
- }
-
- str& operator+= (const str c) {
- append (c);
- return *this;
- }
-
- str& operator+= (const QString c) {
- append (c);
- return *this;
- }
-
- str& operator+= (vertex vrt);
-
- str operator* (const int repcount) {
- repeat (repcount);
- return *this;
- }
-
- str& operator*= (const int repcount) {
- str other = repeat (repcount);
- clear ();
- append (other);
- return *this;
- }
-
- str operator- (const int trimcount) {
- return trim (trimcount);
- }
-
- str& operator-= (const int trimcount) {
- str other = trim (trimcount);
- clear ();
- append (other);
- return *this;
- }
-
- std::vector operator/ (str splitstring);
- std::vector operator/ (char* splitstring);
- std::vector operator/ (const char* splitstring);
-
- int operator% (str splitstring) {
- return count (splitstring.chars());
- }
-
- int operator% (char* splitstring) {
- return count (splitstring);
- }
-
- int operator% (const char* splitstring) {
- return count (str (splitstring).chars());
- }
-
- str operator+ () {
- return toupper ();
- }
-
- str operator- () {
- return tolower ();
- }
-
- str operator! () {
- return reverse ();
- }
-
- size_t operator~ () {
- return len ();
- }
-
-#define DEFINE_OPERATOR_TYPE(OPER, TYPE) \
- bool operator OPER (TYPE other) {return compare(other) OPER 0;}
-#define DEFINE_OPERATOR(OPER) \
- DEFINE_OPERATOR_TYPE (OPER, str) \
- DEFINE_OPERATOR_TYPE (OPER, char*) \
- DEFINE_OPERATOR_TYPE (OPER, const char*)
-
- DEFINE_OPERATOR (==)
- DEFINE_OPERATOR (!=)
- DEFINE_OPERATOR (>)
- DEFINE_OPERATOR (<)
- DEFINE_OPERATOR (>=)
- DEFINE_OPERATOR (<=)
-
- char& operator[] (int pos) {
- return text[pos];
- }
-
- operator char* () const {
- return text;
- }
-
- operator QString () const {
- return text;
- }
-
- operator int () const {
- return atoi (text);
- }
-
- operator uint () const {
- return operator int();
- }
-};
-
-str fmt (const char* fmt, ...);
-
-#endif // STR_H