AaronCameron.net
No ads. No Profit. No Master, But Truth.
Not a Member? - Login or Create an Account
Tuesday the 22nd of May 2012 @ 03:45pm
Front Page Journal Projects Your Profile About
[]

LibN2L-4 Library Code Reference

Classes
Compounds
Files
Members
Method Index
Full Reference

cString.h

Go to the documentation of this file.
00001 /************************************************************************
00002 Nova-2 Library (libN2L, or simply n2l) Game development C++ Library
00003 Copyright (C) 2003  Aaron Cameron
00004 
00005 This library is free software; you can redistribute it and/or
00006 modify it under the terms of the GNU Lesser General Public
00007 License as published by the Free Software Foundation; either
00008 version 2.1 of the License, or (at your option) any later version.
00009 
00010 This library is distributed in the hope that it will be useful,
00011 but WITHOUT ANY WARRANTY; without even the implied warranty of
00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013 Lesser General Public License for more details.
00014 
00015 You should have received a copy of the GNU Lesser General Public
00016 License along with this library; if not, write to the Free Software
00017 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
00018 
00019 A copy of the GNU Lesser General Public License has been provided with
00020 this library in the file 'COPYING'.
00021 
00022 Contact information for the author of this library has been provided
00023 with this library in the file 'AUTHOR'.
00024 ************************************************************************/
00025 #ifndef _n2l4_cString_H
00026 #define _n2l4_cString_H
00027 
00028 #include <string>
00029 #include <iostream>
00030 
00031 namespace n2l
00032 {
00033 
00034     class cString
00035     {
00036     private:
00037         typedef std::string tBStr;
00038         typedef bool tBool;
00039 
00040     public:
00041         typedef char tChar;
00042 
00046         typedef std::string::const_iterator const_iterator;
00047         typedef std::string::iterator iterator;
00048         typedef std::string::size_type size_type;
00049         typedef std::string::difference_type difference_type;
00050 
00051         typedef std::string::const_iterator tConstIterator;
00052         typedef std::string::iterator tIterator;
00053         typedef std::string::size_type tSize;
00054         typedef std::string::difference_type tDifference;
00055         static const tSize npos;
00056 
00057         cString() {}
00058         cString( const tChar *const iBuf ) : mStr(iBuf) {}
00059         cString( const cString &iBuf ) : mStr(iBuf.mStr) {}
00060         cString( const std::string &iBuf ) : mStr(iBuf) {}
00061         cString( const tSize &iSize, const tChar iChar ) : mStr(iSize,iChar) {}
00062 
00063         inline const tConstIterator begin() const { return mStr.begin(); }
00064         inline const tIterator begin() { return mStr.begin(); }
00065         inline const tConstIterator end() const { return mStr.end(); }
00066         inline const tIterator end() { return mStr.end(); }
00067 
00068         inline const tSize find( const tChar *const iStr, const tSize &iPos, const tSize &iLen ) const { return mStr.find(iStr,iPos,iLen); }
00069         inline const tSize find( const cString &iStr, const tSize &iPos=0 ) const { return mStr.find(iStr.mStr,iPos); }
00070         inline const tSize find( const tChar *const iStr, const tSize &iPos=0 ) const { return mStr.find(iStr,iPos); }
00071         inline const tSize find( const tChar iChar, const tSize &iPos=0 ) const { return mStr.find(iChar,iPos); }
00072 
00073         inline const tSize rfind( const tChar iChar, const tSize &iPos=npos ) const { return mStr.rfind(iChar,iPos); }
00074 
00075         inline const tSize find_first_not_of( const cString &iStr, const tSize &iPos=0 ) const { return mStr.find_first_not_of(iStr.mStr,iPos); }
00076         inline const tSize findFirstNotOf( const cString &iStr, const tSize &iPos=0 ) const { return mStr.find_first_not_of(iStr.mStr,iPos); }
00077 
00078         inline const tSize find_first_not_of( const tChar *const iStr, const tSize &iPos=0 ) const { return mStr.find_first_not_of(iStr,iPos); }
00079         inline const tSize findFirstNotOf( const tChar *const iStr, const tSize &iPos=0 ) const { return mStr.find_first_not_of(iStr,iPos); }
00080 
00081         inline const tSize find_first_not_of( const tChar iChar, const tSize &iPos=0 ) const { return mStr.find_first_not_of(iChar,iPos); }
00082         inline const tSize findFirstNotOf( const tChar iChar, const tSize &iPos=0 ) const { return mStr.find_first_not_of(iChar,iPos); }
00083 
00084         inline const tSize find_last_not_of( const cString &iStr, const tSize &iPos=npos ) const { return mStr.find_last_not_of(iStr.mStr,iPos); }
00085         inline const tSize findLastNotOf( const cString &iStr, const tSize &iPos=npos ) const { return mStr.find_last_not_of(iStr.mStr,iPos); }
00086 
00087         inline const tSize find_last_not_of( const tChar *const iStr, const tSize &iPos=npos ) const { return mStr.find_last_not_of(iStr,iPos); }
00088         inline const tSize findLastNotOf( const tChar *const iStr, const tSize &iPos=npos ) const { return mStr.find_last_not_of(iStr,iPos); }
00089 
00090 
00091         inline const tSize find_first_of( const tChar *const iStr, const tSize &iPos=0 ) const { return mStr.find_first_of(iStr,iPos); }
00092         inline const tSize findFirstOf( const tChar *const iStr, const tSize &iPos=0 ) const { return mStr.find_first_of(iStr,iPos); }
00093         
00094         inline const tSize find_first_of( const tChar iChar, const tSize &iPos=0 ) const { return mStr.find_first_of(iChar,iPos); }
00095         inline const tSize findFirstOf( const tChar iChar, const tSize &iPos=0 ) const { return mStr.find_first_of(iChar,iPos); }
00096         
00097 
00098         inline const tSize find_last_of( const tChar *const iStr, const tSize &iPos=npos ) const { return mStr.find_last_of(iStr,iPos); }
00099         inline const tSize findLastOf( const tChar *const iStr, const tSize &iPos=npos ) const { return mStr.find_last_of(iStr,iPos); }
00100 
00101         inline const cString substr( const tSize &iPos=0, const tSize &iLen=npos ) const { return mStr.substr(iPos,iLen); }
00102 
00103         inline cString &append( const tChar *const iStr, const tSize &iLen ) { mStr.append(iStr,iLen); return *this; }
00104 
00105         inline cString &replace( const tSize &iPos, const tSize iLen, const cString &iStr ) { mStr.replace(iPos,iLen,iStr.mStr); return *this; }
00106 
00107         inline cString &erase( const tSize &iPos=0, const tSize iLen=npos ) { mStr.erase(iPos,iLen); return *this; }
00108 
00109         inline void clear() { mStr.erase(mStr.begin(),mStr.end()); }
00110 
00111         inline const tChar operator []( const tSize &iPos ) const { return mStr[iPos]; }
00112         inline tChar &operator []( const tSize &iPos ) { return mStr[iPos]; }
00113 
00114         inline const cString operator +( const cString &iStr ) const { return (mStr+iStr.mStr); }
00115         inline const cString operator +( const tChar *const iStr ) const { return (mStr+iStr); }
00116         inline const cString operator +( const tChar iChar ) const { return (mStr+iChar); }
00117 
00118         inline cString &operator +=( const cString &iStr ) { mStr+=iStr.mStr; return *this; }
00119         inline cString &operator +=( const tChar &iChar ) { mStr+=iChar; return *this; }
00120 
00121         inline const tBool operator ==( const cString &iStr ) const { return mStr==iStr.mStr; }
00122         inline const tBool operator ==( const tChar *const iStr ) const { return mStr==iStr; }
00123 
00124         inline const tBool operator !=( const cString &iStr ) const { return mStr!=iStr.mStr; }
00125         inline const tBool operator !=( const tChar *const iStr ) const { return mStr!=iStr; }
00126 
00127         inline const tBool operator <( const cString &iStr ) const { return mStr<iStr.mStr; }
00128         inline const tBool operator >( const cString &iStr ) const { return mStr>iStr.mStr; }
00129 
00130         inline const tSize size() const { return mStr.size(); }
00131         inline const tBool empty() const { return mStr.empty(); }
00132 
00133         inline const tChar *const c_str() const { return mStr.c_str(); }
00134         inline const tChar *const data() const { return mStr.data(); }
00135 
00136         inline void reserve( const tSize &iSize ) { mStr.reserve(iSize); }
00137         inline const tSize capacity() const { return mStr.capacity(); }
00138 
00139         inline void assign( const tSize &iSize, const tChar iChar ) { mStr.assign(iSize,iChar); }
00140 
00141 
00142     private:
00143         tBStr mStr;
00144 
00145     };
00146 
00147     inline const cString operator +( const cString::tChar *const iStrA, const cString &iStrB ) { return cString(iStrA)+iStrB; }
00148 
00149     inline std::ostream &operator <<( std::ostream &ioStream, const cString &iVar )
00150     {
00151         return ioStream << iVar.c_str();
00152     }
00153 
00154 }
00155 
00156 #endif
©2012 Aaron Cameron