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

skString.h

00001 /*
00002   Copyright 1996-2001
00003   Simon Whiteside
00004 
00005 * $Id: skString_h-source.html,v 1.17 2001/07/05 09:56:08 sdw Exp $
00006 */
00007 
00008 
00009 #ifndef skSTRING_H
00010 #define skSTRING_H
00011 
00012 #include <iostream.h>
00013 #include "skGeneral.h"
00014 
00015 class P_String;
00016 
00021 class skString 
00022 {
00023  public:
00027   skString();
00031   skString(const char *);
00035   skString(const unsigned char *);
00039   skString(const skString&);
00045   skString(const unsigned char * buffer, USize len);
00051   skString(const unsigned char repeatChar, USize len);
00055   virtual ~skString();
00059   skString& operator=(const skString&);
00063   skString& operator=(const unsigned char *);
00067   skString& operator=(const char *);
00072   bool operator<(const skString&) const;
00077   bool operator==(const skString&) const;
00082   bool operator==(const unsigned char *) const;
00087   bool operator==(const char *) const;
00092   bool operator!=(const skString&) const;
00097   bool operator!=(const char *) const;
00102   bool operator!=(const unsigned char *) const;
00107   operator const unsigned char * () const;
00112   operator const char * () const;
00116   USize hash() const;
00122   unsigned char at(USize index) const;
00129   skString substr(USize start,USize length) const;
00135   skString substr(USize start) const;
00140   skString operator+(const skString&) const ;
00145   skString& operator+=(const skString&);
00150   USize length() const;
00155   int indexOf(char c);
00159   int to() const;
00163   float toFloat() const;
00167   static skString literal(const char *);
00171   static skString from(int);
00175   static skString from(USize);
00179   static skString from(float);
00183   static skString from(unsigned char ch);
00187   static skString fromBuffer(unsigned char * buffer);
00188  protected:
00192   skString(P_String *);
00196   skString(const unsigned char * s,int);
00200   void assign(const unsigned char *,int len=0);                         
00204   void deRef();
00208   P_String * pimp;
00209 };
00210 /*
00211  * A hashKey function for HashTables
00212  */
00213 inline USize hashKey(skString * s)
00214 {
00215     return s->hash();
00216 }
00217 /*
00218  * A streaming operator to write a string to an output stream
00219  */
00220 ostream& operator<<(ostream&,const skString&s);
00221 
00222 /*
00223  * Some helper macros for declaring literal strings, and references to literal strings
00224  */
00225 #define skLITERAL(s) skString s_##s=skString::literal(#s)
00226 #define xskLITERAL(s) extern skString s_##s
00227 #define skSTR(s) skString(s)
00228 typedef char Char;
00229 inline float ATOF(const Char * c){
00230   return (float) atof(c);
00231 }
00232 inline int ATOI(const Char * c){
00233   return atoi(c);
00234 }
00235 
00236 #include "skString.inl"
00237 
00238 #endif
00239 
00240 
00241 

Generated at Thu Jul 5 10:55:42 2001 for Simkin by doxygen1.2.1 written by Dimitri van Heesch, © 1997-2000