home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD 24 / PCPLUS115.iso / pcplus / tclite / include / strclass.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-01-28  |  3.4 KB  |  89 lines

  1. #ifndef STRING_H
  2. #define STRING_H
  3.  
  4. #include "Object.h"
  5. #include <string.h>
  6.  
  7. #define DEFAULT_STRING_EXTRA    15
  8.  
  9. class String;
  10. extern const Class class_String;
  11.  
  12. class String : public Object {
  13.     char* p;            // character string
  14.     unsigned len;       // length of string, excluding null character
  15.     unsigned alloc;     // amount of storage allocated
  16.     void indexRangeErr() const;
  17. public:
  18.     String(char& c, unsigned l=1, unsigned extra=DEFAULT_STRING_EXTRA);
  19.     String();
  20.     String(unsigned extra);
  21.     String(const char*);
  22.     String(const char*, unsigned extra);
  23.     String(const String&);
  24.     String(const String&, unsigned extra);
  25.     ~String();
  26.     operator const char*() const   { return p; }
  27.     char& operator[](unsigned i) const
  28.                     {
  29.                         if (i >= len) indexRangeErr();
  30.                         return p[i];
  31.                     }
  32.     void operator=(const String&);
  33.     void operator=(const char*);
  34.  
  35.     bool operator<(const String& s)  const { return strcmp(p, s.p) < 0; }
  36.     bool operator>(const String& s)  const { return strcmp(p, s.p) > 0; }
  37.     bool operator<=(const String& s) const { return strcmp(p, s.p) <= 0; }
  38.     bool operator>=(const String& s) const { return strcmp(p, s.p) >= 0; }
  39.     bool operator==(const String& s) const ;
  40.     bool operator!=(const String& s) const { return !(*this==s); }
  41.  
  42.     bool operator<(const char* cs)  const { return strcmp(p,cs) < 0; }
  43.     bool operator>(const char* cs)  const { return strcmp(p,cs) > 0; }
  44.     bool operator<=(const char* cs) const { return strcmp(p,cs) <= 0; }
  45.     bool operator>=(const char* cs) const { return strcmp(p,cs) >= 0; }
  46.     bool operator==(const char* cs) const { return strcmp(p,cs) == 0; }
  47.     bool operator!=(const char* cs) const { return strcmp(p,cs) != 0; }
  48.  
  49.     friend bool operator<(const char* cs, const String& s)
  50.                             { return strcmp(cs, s.p) < 0; }
  51.     friend bool operator>(const char* cs, const String& s)
  52.                             { return strcmp(cs, s.p) > 0; }
  53.     friend bool operator<=(const char* cs, const String& s)
  54.                             { return strcmp(cs, s.p) <= 0; }
  55.     friend bool operator>=(const char* cs, const String& s)
  56.                             { return strcmp(cs, s.p) >= 0; }
  57.     friend bool operator==(const char* cs, const String& s)
  58.                             { return strcmp(cs, s.p) == 0; }
  59.     friend bool operator!=(const char* cs, const String& s)
  60.                             { return strcmp(cs, s.p) != 0; }
  61.  
  62.     String operator&(const String& s) const;
  63.     String operator&(const char* cs) const;
  64.     friend String operator&(const char* cs, const String& s);
  65.  
  66.     String& operator&=(const String&);
  67.     String& operator&=(const char* cs);
  68.  
  69.     char& at(unsigned i) const          { return (*this)[i]; }
  70.     unsigned length() const             { return len; }
  71.     unsigned reSize(unsigned new_capacity);
  72.  
  73.     virtual void toAscii();
  74.     virtual void toLower();
  75.     virtual void toUpper();
  76.     virtual unsigned capacity() const   { return alloc - 1; }
  77.     virtual int compare(const Object& ob) const;
  78.     virtual void deepenShallowCopy();
  79.     virtual unsigned hash() const;
  80.     virtual const Class* isA() const;
  81.     virtual bool isEqual(const Object&) const;
  82.     virtual void printOn(ostream& strm) const;
  83.     virtual unsigned size() const;
  84.     virtual const Class* species() const;
  85. };
  86.  
  87. #endif
  88.  
  89.