Advertisement
Guest User

vString.cpp

a guest
Oct 20th, 2011
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.23 KB | None | 0 0
  1. #include <iostream>
  2. #include <ostream>
  3. #include <stdexcept>
  4. #include <vstring.hpp>
  5.  
  6. vString::vString(){}
  7. vString::vString(std::string& str){Empty().Append(str);}
  8. vString::vString(const std::string& str){Empty().Append(str);}
  9. vString::vString(char* str){Empty().Append(str);}
  10. vString::vString(const char* str){Empty().Append(str);}
  11. vString::vString(vString& str){Empty().Append(str);}
  12. vString::vString(const vString& str){Empty().Append(str);}
  13.  
  14. vString& vString::Empty(){
  15.     arraySize = allocatedMemory = 0, delete [] tElements;
  16.     return *this;
  17. }
  18.  
  19. vString& vString::Append(std::string& str,int size){
  20.     return Append(str.c_str(),size);
  21. }
  22. vString& vString::Append(const std::string& str,int size){
  23.     return Append(str.c_str(),size);
  24. }
  25. vString& vString::Append(char* str,int size){
  26.     Range ran(-1,size);
  27.     return Insert(str,ran);
  28. }
  29. vString& vString::Append(const char* str,int size){
  30.     Range ran(-1,size);
  31.     return Insert(str,ran);
  32. }
  33. vString& vString::Append( vString& str,int size){
  34.     Range ran(-1,size);
  35.     return Insert(str,ran);
  36. }
  37. vString& vString::Append( const vString& str,int size){
  38.     Range ran(-1,size);
  39.     return Insert(str,ran);
  40. }
  41. vString& vString::Prepend(std::string& str,int size){
  42.     return Prepend(str.c_str(),size);
  43. }
  44. vString& vString::Prepend(const std::string& str,int size){
  45.     return Prepend(str.c_str(),size);
  46. }
  47. vString& vString::Prepend(char* str,int size){
  48.     Range ran(0,size);
  49.     return Insert(str,ran);
  50. }
  51. vString& vString::Prepend(const char* str,int size){
  52.     Range ran(0,size);
  53.     return Insert(str,ran);
  54. }
  55.  
  56. vString& vString::Insert(std::string& str,Range& ran){return Insert(str.c_str(),ran);}
  57. vString& vString::Insert(const std::string& str,Range& ran){return Insert(str.c_str(),ran);}
  58. vString& vString::Insert(char* str,Range& ran){
  59.     if(!str) throw std::runtime_error("vString::Insert(const char*,Range&) - Invalid first argument.");
  60.     int end = (ran.Size())?ran.Size():strlen(str)+1;
  61.     Allocate( end );
  62.     if(arraySize == 0 ) // first string...
  63.         memcpy(&(((char*)tElements)[0]),str,arraySize = end);
  64.     else memcpy()
  65.     for(int i=0;i<end;i++,str++) Vector<char>::Add(*str,ran.Start());
  66.     arraySize--;
  67.     return *this;
  68. }
  69. vString& vString::Insert(const char* str,Range& ran){
  70.     if(!str) throw std::runtime_error("vString::Insert(const char*,Range&) - Invalid first argument.");
  71.     int end = (ran.Size())?ran.Size():strlen(str)+1;
  72.     Allocate( end );
  73.     if(arraySize == 0 ) // first string...
  74.         memcpy(&(((char*)tElements)[0]),str,arraySize = end);
  75.     else{
  76.         Range& all = All();
  77.         int indice = ran.Start();
  78.         indice = all[indice];
  79.         if(indice<0)indice+=arraySize;
  80.         if(indice<0)indice=0;
  81.         memcpy(&(((char*)tElements)[indice+end-1]),&(((char*)tElements)[indice]),end-1)
  82.     }
  83.     arraySize--;
  84.     return *this;
  85. }
  86. vString& vString::Insert( vString& str,Range& ran ){return Insert(str.operator char*(),ran);}
  87. vString& vString::Insert( const vString& str,Range& ran ){return Insert(str.operator const char*(),ran);}
  88. vString::operator char* ( ){return (char*)tElements;}
  89. vString::operator const char* ( ) const {return (const char*)tElements;}
  90. char vString::operator [] ( int x ){ return Vector<char>::operator[] ( x ); }
  91.  
  92. /*std::ostream& operator << ( std::ostream& out, vString& str ){
  93.     out << str.operator const char* ();
  94.     return out;
  95. }*/
  96.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement