/******************************************************************************* * BString.hxx BString Handling * T.Barnaby, BEAM Ltd, 29/10/91 ******************************************************************************* */ #ifndef BSTRING_H #define BSTRING_H 1 #include <BRefData.h> #include <BList.h> #include <iostream> class BString { public: BString(); BString(const BString& string); BString(const char* str); BString(char ch); BString(int v); BString(unsigned int v); BString(long v); BString(unsigned long long); BString(double v); // QT support #ifdef QSTRING_H BString(const QString& str){ Init(str); } #endif virtual ~BString(); static BString convert(char ch); ///< Converts char to string static BString convert(int value); ///< Converts int to string static BString convert(unsigned int value); ///< Converts uint to string static BString convert(long value); ///< Converts long to string static BString convert(double value); ///< Converts double to string static BString convert(unsigned long long value); ///< Converts u long long to string static BString convertHex(int value); ///< Converts int to string as hex value static BString convertHex(unsigned int value); ///< Converts uint to string as hex value BString copy(); ///< Return an independant copy virtual void strChanged(); int len() const; ///< Length of string const char* retStr() const; ///< Ptr to char* representation char* retStrDup() const; ///< Ptr to newly malloc'd char* int retInt() const; ///< Return string as a int unsigned int retUInt() const; ///< Return string as an unsigned int double retDouble() const; ///< Return string as a double int compare(const BString& string) const; ///< Compare strings int compareWild(const BString& string) const; ///< Compare string to string with wildcards int compareWildExpression(const BString& string) const; ///< Compare string to space deliminated patterns BString add(const BString& str) const; ///< Add two strings BString& truncate(int len); ///< Truncate to length len BString& pad(int len); ///< Pad to length len BString& toUpper(); ///< Convert to uppercase BString& toLower(); ///< Convert to lowercase void removeNL(); ///< Remove if present NL from last char BString subString(int start, int len) const; ///< Returns substring int del(int start, int len); ///< Delete substring int insert(int start, BString str); ///< Insert substring void printf(const char* fmt, ...) ; ///< Formated print into the string int find(char ch) const; ///< Find ch in string searching forwards int findReverse(char ch) const; ///< Find ch in string searching backwards BList<BString> getTokenList(BString separators); ///< Break string into tokens BString removeSeparators(BString separators); ///< Remove any char from sepatators from string BString pullToken(BString terminators); ///< Pull token from start of string BString pullSeparators(BString separators); ///< Pull separators from start of string BString pullWord(); ///< Pull a word out of the head of the string BString pullLine(); ///< Pull a line out of the head of the string BString field(int field) const; char** fields(); /* Operator functions */ BString& operator=(const BString& string); char& operator[](int pos); int operator==(const BString& s) const{ return (compare(s) == 0); } int operator==(const char* s) const{ return (compare(s) == 0); } int operator>(const BString& s) const{ return (compare(s) > 0); } int operator>(const char* s) const{ return (compare(s) > 0); } int operator<(const BString& s) const{ return (compare(s) < 0); } int operator<(const char* s) const{ return (compare(s) < 0); } int operator>=(const BString& s) const{ return (compare(s) >= 0); } int operator<=(const BString& s) const{ return (compare(s) <= 0); } int operator!=(const BString& s) const{ return (compare(s) != 0); } int operator!=(const char* s) const{ return (compare(s) != 0); } BString operator+(const BString& s) const { return add(s); } BString operator+(const char* s) const { return add(s); } BString operator+=(const BString& s){ *this = add(s); return *this; } BString operator+=(const char* s){ *this = add(s); return *this; } /* Special operators */ BString operator+(char ch) const { return add(convert(ch)); } BString operator+(int i) const { return add(convert(i)); } BString operator+(unsigned int i) const { return add(convert(i)); } BString operator+(unsigned long long i) const { return add(convert(i)); } #ifdef ZAP friend BString operator+(const char* a1, BString& a2); #endif operator const char* () const { return retStr(); } protected: BRefData* ostr; private: void Init(const char* str); int inString(int pos) const; int isSpace(char ch) const; }; /* OStream Functions */ std::ostream& operator<<(std::ostream& o, BString& s); std::istream& operator>>(std::istream& i, BString& s); #ifdef BLIST_H typedef BList<BString> BStringList; #endif #endif