Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <ostream>
- #include <stdexcept>
- #include <vstring.hpp>
- vString::vString(){}
- vString::vString(std::string& str){Empty().Append(str);}
- vString::vString(const std::string& str){Empty().Append(str);}
- vString::vString(char* str){Empty().Append(str);}
- vString::vString(const char* str){Empty().Append(str);}
- vString::vString(vString& str){Empty().Append(str);}
- vString::vString(const vString& str){Empty().Append(str);}
- vString& vString::Empty(){
- arraySize = allocatedMemory = 0, delete [] tElements;
- return *this;
- }
- vString& vString::Append(std::string& str,int size){
- return Append(str.c_str(),size);
- }
- vString& vString::Append(const std::string& str,int size){
- return Append(str.c_str(),size);
- }
- vString& vString::Append(char* str,int size){
- Range ran(-1,size);
- return Insert(str,ran);
- }
- vString& vString::Append(const char* str,int size){
- Range ran(-1,size);
- return Insert(str,ran);
- }
- vString& vString::Append( vString& str,int size){
- Range ran(-1,size);
- return Insert(str,ran);
- }
- vString& vString::Append( const vString& str,int size){
- Range ran(-1,size);
- return Insert(str,ran);
- }
- vString& vString::Prepend(std::string& str,int size){
- return Prepend(str.c_str(),size);
- }
- vString& vString::Prepend(const std::string& str,int size){
- return Prepend(str.c_str(),size);
- }
- vString& vString::Prepend(char* str,int size){
- Range ran(0,size);
- return Insert(str,ran);
- }
- vString& vString::Prepend(const char* str,int size){
- Range ran(0,size);
- return Insert(str,ran);
- }
- vString& vString::Insert(std::string& str,Range& ran){return Insert(str.c_str(),ran);}
- vString& vString::Insert(const std::string& str,Range& ran){return Insert(str.c_str(),ran);}
- vString& vString::Insert(char* str,Range& ran){
- if(!str) throw std::runtime_error("vString::Insert(const char*,Range&) - Invalid first argument.");
- int end = (ran.Size())?ran.Size():strlen(str)+1;
- Allocate( end );
- if(arraySize == 0 ) // first string...
- memcpy(&(((char*)tElements)[0]),str,arraySize = end);
- else memcpy()
- for(int i=0;i<end;i++,str++) Vector<char>::Add(*str,ran.Start());
- arraySize--;
- return *this;
- }
- vString& vString::Insert(const char* str,Range& ran){
- if(!str) throw std::runtime_error("vString::Insert(const char*,Range&) - Invalid first argument.");
- int end = (ran.Size())?ran.Size():strlen(str)+1;
- Allocate( end );
- if(arraySize == 0 ) // first string...
- memcpy(&(((char*)tElements)[0]),str,arraySize = end);
- else{
- Range& all = All();
- int indice = ran.Start();
- indice = all[indice];
- if(indice<0)indice+=arraySize;
- if(indice<0)indice=0;
- memcpy(&(((char*)tElements)[indice+end-1]),&(((char*)tElements)[indice]),end-1)
- }
- arraySize--;
- return *this;
- }
- vString& vString::Insert( vString& str,Range& ran ){return Insert(str.operator char*(),ran);}
- vString& vString::Insert( const vString& str,Range& ran ){return Insert(str.operator const char*(),ran);}
- vString::operator char* ( ){return (char*)tElements;}
- vString::operator const char* ( ) const {return (const char*)tElements;}
- char vString::operator [] ( int x ){ return Vector<char>::operator[] ( x ); }
- /*std::ostream& operator << ( std::ostream& out, vString& str ){
- out << str.operator const char* ();
- return out;
- }*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement