Advertisement
Tyler_Elric

SmartString.h

Feb 9th, 2012
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.18 KB | None | 0 0
  1. #pragma warning( disable : 4290 )
  2. #ifndef __SmartString_h__
  3. #define __SmartString_h__
  4. #include "SmartArray.h"
  5. #include "Iterable.h"
  6. #include <iostream>
  7.  
  8. class SmartString:public SmartArray<SmartString>::Reference::SmartObject,public Iterable
  9. {
  10. private:
  11.     char* mStr;
  12. protected:
  13.     void Allocate(unsigned int) throw(Iterable::UnneededAllocation);
  14. public:
  15.     SmartObject_Type_Information("SmartString")//Ugly, but it works.
  16.     class SplitPoint
  17.     {
  18.     protected:
  19.         SmartArray<SmartString> mKeys;
  20.         SmartArray<SmartString>::Reference mPoints;
  21.     public:
  22.         SplitPoint();
  23.         unsigned int operator()(char*) const;
  24.         SplitPoint& AddPoint( const char* );
  25.         SplitPoint& AddPoint( const char );
  26.         ~SplitPoint();
  27.         class NoSplit
  28.         {
  29.             protected:
  30.                 unsigned int mLen;
  31.             public:
  32.                 NoSplit(unsigned int aLen);
  33.                 operator unsigned int();
  34.         };
  35.  
  36.         class Split:public NoSplit
  37.         {
  38.             private:
  39.                 SmartString* newString;
  40.             public:
  41.                 Split(unsigned int aLen,char* ptr);
  42.                 SmartString* operator()();
  43.                 ~Split();
  44.         };
  45.     };
  46.     static unsigned int gBufferSize;
  47.     SmartString& Append( const char* );
  48.     SmartString& Append( const char*, unsigned int );
  49.     SmartString& Append( const char );
  50.     SmartString& Insert( const char*, int );
  51.     SmartString& Insert( const char*, unsigned int, int);
  52.     SmartString& Prepend( const char* );
  53.     SmartString& Prepend( const char*, unsigned int );
  54.     SmartString& Empty(void);
  55.     const SmartArray<SmartString> Explode( const SplitPoint& );
  56.     SmartString operator [] ( const Iterable::Slice& );
  57.     int operator [] ( char );
  58.     char operator [] ( int );
  59.     const SmartArray<SmartString> operator [] ( const SmartString& );
  60.     SmartString( const char* );
  61.     SmartString( const char*, unsigned int );
  62.     SmartString( const SmartString& );
  63.     SmartString( const SmartString&& );
  64.     SmartString( void );
  65.     ~SmartString( void );
  66.     operator const char* () const;
  67.     bool operator == ( const char* ) const;
  68.     int Similar( const char* );
  69.     static int Similar( const char*, const char* );
  70.     static unsigned int Contains( const char*, const char*, bool=true );
  71.     unsigned int Contains( const char*,bool=true ) const;
  72.     void ExportToFile( std::ostream& );
  73.     void ImportFromFile( std::istream& );
  74. };
  75. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement