Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members  

skString.h

00001 /*
00002   Copyright 1996-2002
00003   Simon Whiteside
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 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 * $Id: skString.h,v 1.20 2002/12/13 17:21:54 sdw Exp $
00020 */
00021 
00022 
00023 #ifndef skSTRING_H
00024 #define skSTRING_H
00025 
00026 #include "skGeneral.h"
00027 
00028 #ifdef STREAMS_ENABLED
00029 #include <iostream.h>
00030 #endif
00031 
00032 
00033 #ifdef UNICODE_STRINGS
00034 typedef wchar_t Char;
00035 #define skSTR(x)                        L ## x
00036 #else
00037 typedef char Char;
00038 #define skSTR(x)                        x
00039 #endif
00040 
00041 class P_String;
00042 
00047 class CLASSEXPORT skString 
00048 {
00049  public:
00053   skString();
00057   skString(const Char *);
00061   skString(const skString&);
00067   skString(const Char * buffer, USize len);
00073   skString(const Char repeatChar, USize len);
00077   virtual ~skString();
00081   skString& operator=(const skString&);
00085   skString& operator=(const Char *);
00090   bool operator<(const skString&) const;
00095   bool operator==(const skString&) const;
00100   bool operator==(const Char *) const;
00105   bool operator!=(const skString&) const;
00110   bool operator!=(const Char *) const;
00115   operator const Char * () const;
00120   bool equalsIgnoreCase(const skString&) const;
00124   USize hash() const;
00130   Char at(USize index) const;
00137   skString substr(USize start,USize length) const;
00143   skString substr(USize start) const;
00148   skString operator+(const skString&) const ;
00153   skString& operator+=(const skString&);
00158   USize length() const;
00163   int indexOf(Char c) const;
00167   int to() const;
00171   float toFloat() const;
00175   static skString literal(const Char *);
00179   static skString from(int);
00183   static skString from(USize);
00187   static skString from(float);
00191   static skString from(Char ch);
00195   static skString fromBuffer(Char * buffer);
00199   skString ltrim() const;
00204   static skString readFromFile(const skString& filename);
00209   void writeToFile(const skString& filename);
00210  protected:
00214   skString(P_String *);
00218   skString(const Char * s,int);
00222   void assign(const Char *,int len=0);                          
00226   void deRef();
00230   P_String * pimp;
00231 };
00232 /*
00233  * A hashKey function for HashTables
00234  */
00235 inline USize hashKey(const skString * s)
00236 {
00237     return s->hash();
00238 }
00239 /*
00240  * An operator to add strings
00241  */
00242 CLASSEXPORT skString operator+(const Char * s1,const skString& s2);
00243 
00244 #ifdef STREAMS_ENABLED
00245 /*
00246  * A streaming operator to write a string to an output stream
00247  */
00248 CLASSEXPORT ostream& operator<<(ostream&,const skString&s);
00249 #endif
00250 /*
00251  * Some helper macros for declaring literal strings, and references to literal strings
00252  */
00253 #define skLITERAL(s) skString s_##s=skString::literal(skSTR(#s))
00254 #define xskLITERAL(s) extern skString s_##s
00255 //#define skSTR(s) skString(s)
00256 
00257 inline float ATOF(const Char * c){
00258 #ifdef UNICODE_STRINGS
00259   return (float) wcstod(c,0);
00260 #else
00261   return (float) atof(c);
00262 #endif
00263 }
00264 inline int ATOI(const Char * c){
00265 #ifdef UNICODE_STRINGS
00266   return _wtoi(c);
00267 #else
00268   return atoi(c);
00269 #endif
00270 }
00271 
00272 #include "skString.inl"
00273 
00274 #endif
00275 
00276 
00277 

Generated on Mon Dec 16 16:30:12 2002 for Simkin by doxygen1.3-rc1