diff options
| author | Mike Buland <eichlan@xagasoft.com> | 2012-04-06 06:16:33 +0000 |
|---|---|---|
| committer | Mike Buland <eichlan@xagasoft.com> | 2012-04-06 06:16:33 +0000 |
| commit | fba73219e3c7bf65b459a3303f579fd83c8fd0af (patch) | |
| tree | 7de25030a1ef0e5899da243c2fb5c0e4900c0a49 | |
| parent | b01618b1be4831d30dbf8706a48e71c62d617b99 (diff) | |
| download | libgats-fba73219e3c7bf65b459a3303f579fd83c8fd0af.tar.gz libgats-fba73219e3c7bf65b459a3303f579fd83c8fd0af.tar.bz2 libgats-fba73219e3c7bf65b459a3303f579fd83c8fd0af.tar.xz libgats-fba73219e3c7bf65b459a3303f579fd83c8fd0af.zip | |
Everything supports clone now.
| -rw-r--r-- | src/boolean.cpp | 5 | ||||
| -rw-r--r-- | src/boolean.h | 1 | ||||
| -rw-r--r-- | src/dictionary.cpp | 12 | ||||
| -rw-r--r-- | src/dictionary.h | 1 | ||||
| -rw-r--r-- | src/float.cpp | 5 | ||||
| -rw-r--r-- | src/float.h | 2 | ||||
| -rw-r--r-- | src/integer.cpp | 5 | ||||
| -rw-r--r-- | src/integer.h | 2 | ||||
| -rw-r--r-- | src/list.cpp | 10 | ||||
| -rw-r--r-- | src/list.h | 1 | ||||
| -rw-r--r-- | src/object.cpp | 11 | ||||
| -rw-r--r-- | src/object.h | 1 | ||||
| -rw-r--r-- | src/string.cpp | 5 | ||||
| -rw-r--r-- | src/string.h | 1 |
14 files changed, 62 insertions, 0 deletions
diff --git a/src/boolean.cpp b/src/boolean.cpp index e0600f2..729e644 100644 --- a/src/boolean.cpp +++ b/src/boolean.cpp | |||
| @@ -17,6 +17,11 @@ Gats::Boolean::~Boolean() | |||
| 17 | { | 17 | { |
| 18 | } | 18 | } |
| 19 | 19 | ||
| 20 | Gats::Object *Gats::Boolean::clone() const | ||
| 21 | { | ||
| 22 | return new Gats::Boolean( bVal ); | ||
| 23 | } | ||
| 24 | |||
| 20 | void Gats::Boolean::write( Bu::Stream &rOut ) const | 25 | void Gats::Boolean::write( Bu::Stream &rOut ) const |
| 21 | { | 26 | { |
| 22 | if( bVal ) | 27 | if( bVal ) |
diff --git a/src/boolean.h b/src/boolean.h index 270e578..6b256c5 100644 --- a/src/boolean.h +++ b/src/boolean.h | |||
| @@ -15,6 +15,7 @@ namespace Gats | |||
| 15 | virtual Type getType() const { return typeBoolean; } | 15 | virtual Type getType() const { return typeBoolean; } |
| 16 | bool getValue() const { return bVal; } | 16 | bool getValue() const { return bVal; } |
| 17 | void setValue( bool b ) { bVal = b; } | 17 | void setValue( bool b ) { bVal = b; } |
| 18 | virtual Object *clone() const; | ||
| 18 | 19 | ||
| 19 | virtual void write( Bu::Stream &rOut ) const; | 20 | virtual void write( Bu::Stream &rOut ) const; |
| 20 | virtual void read( Bu::Stream &rIn, char cType ); | 21 | virtual void read( Bu::Stream &rIn, char cType ); |
diff --git a/src/dictionary.cpp b/src/dictionary.cpp index 9728804..b59d652 100644 --- a/src/dictionary.cpp +++ b/src/dictionary.cpp | |||
| @@ -26,6 +26,18 @@ Gats::Dictionary::~Dictionary() | |||
| 26 | } | 26 | } |
| 27 | } | 27 | } |
| 28 | 28 | ||
| 29 | Gats::Object *Gats::Dictionary::clone() const | ||
| 30 | { | ||
| 31 | Gats::Dictionary *pClone = new Gats::Dictionary; | ||
| 32 | for( const_iterator i = begin(); i; i++ ) | ||
| 33 | { | ||
| 34 | Bu::String s(i.getKey()); | ||
| 35 | pClone->insert( s.clone(), (*i)->clone() ); | ||
| 36 | } | ||
| 37 | |||
| 38 | return pClone; | ||
| 39 | } | ||
| 40 | |||
| 29 | void Gats::Dictionary::write( Bu::Stream &rOut ) const | 41 | void Gats::Dictionary::write( Bu::Stream &rOut ) const |
| 30 | { | 42 | { |
| 31 | rOut.write("d", 1 ); | 43 | rOut.write("d", 1 ); |
diff --git a/src/dictionary.h b/src/dictionary.h index cde51be..3dd1000 100644 --- a/src/dictionary.h +++ b/src/dictionary.h | |||
| @@ -17,6 +17,7 @@ namespace Gats | |||
| 17 | virtual ~Dictionary(); | 17 | virtual ~Dictionary(); |
| 18 | 18 | ||
| 19 | virtual Type getType() const { return typeDictionary; } | 19 | virtual Type getType() const { return typeDictionary; } |
| 20 | virtual Object *clone() const; | ||
| 20 | virtual void write( Bu::Stream &rOut ) const; | 21 | virtual void write( Bu::Stream &rOut ) const; |
| 21 | virtual void read( Bu::Stream &rIn, char cType ); | 22 | virtual void read( Bu::Stream &rIn, char cType ); |
| 22 | 23 | ||
diff --git a/src/float.cpp b/src/float.cpp index 1b4ebae..c01d824 100644 --- a/src/float.cpp +++ b/src/float.cpp | |||
| @@ -20,6 +20,11 @@ Gats::Float::~Float() | |||
| 20 | { | 20 | { |
| 21 | } | 21 | } |
| 22 | 22 | ||
| 23 | Gats::Object *Gats::Float::clone() const | ||
| 24 | { | ||
| 25 | return new Gats::Float( fVal ); | ||
| 26 | } | ||
| 27 | |||
| 23 | void Gats::Float::write( Bu::Stream &rOut ) const | 28 | void Gats::Float::write( Bu::Stream &rOut ) const |
| 24 | { | 29 | { |
| 25 | if( fVal == 0.0 ) | 30 | if( fVal == 0.0 ) |
diff --git a/src/float.h b/src/float.h index ad02d28..ba38d6c 100644 --- a/src/float.h +++ b/src/float.h | |||
| @@ -14,6 +14,8 @@ namespace Gats | |||
| 14 | Float( double f ); | 14 | Float( double f ); |
| 15 | virtual ~Float(); | 15 | virtual ~Float(); |
| 16 | 16 | ||
| 17 | virtual Object *clone() const; | ||
| 18 | |||
| 17 | virtual Type getType() const { return typeFloat; } | 19 | virtual Type getType() const { return typeFloat; } |
| 18 | double getValue() const { return fVal; } | 20 | double getValue() const { return fVal; } |
| 19 | 21 | ||
diff --git a/src/integer.cpp b/src/integer.cpp index 2a713e3..e89ac1d 100644 --- a/src/integer.cpp +++ b/src/integer.cpp | |||
| @@ -16,6 +16,11 @@ Gats::Integer::~Integer() | |||
| 16 | { | 16 | { |
| 17 | } | 17 | } |
| 18 | 18 | ||
| 19 | Gats::Object *Gats::Integer::clone() const | ||
| 20 | { | ||
| 21 | return new Gats::Integer( iVal ); | ||
| 22 | } | ||
| 23 | |||
| 19 | void Gats::Integer::write( Bu::Stream &rOut ) const | 24 | void Gats::Integer::write( Bu::Stream &rOut ) const |
| 20 | { | 25 | { |
| 21 | rOut.write("i", 1 ); | 26 | rOut.write("i", 1 ); |
diff --git a/src/integer.h b/src/integer.h index b54bf5d..a5e0d58 100644 --- a/src/integer.h +++ b/src/integer.h | |||
| @@ -16,6 +16,8 @@ namespace Gats | |||
| 16 | Integer( int64_t iVal ); | 16 | Integer( int64_t iVal ); |
| 17 | virtual ~Integer(); | 17 | virtual ~Integer(); |
| 18 | 18 | ||
| 19 | virtual Object *clone() const; | ||
| 20 | |||
| 19 | virtual Type getType() const { return typeInteger; } | 21 | virtual Type getType() const { return typeInteger; } |
| 20 | int64_t getValue() const { return iVal; } | 22 | int64_t getValue() const { return iVal; } |
| 21 | 23 | ||
diff --git a/src/list.cpp b/src/list.cpp index d15f3b9..d081a22 100644 --- a/src/list.cpp +++ b/src/list.cpp | |||
| @@ -21,6 +21,16 @@ Gats::List::~List() | |||
| 21 | } | 21 | } |
| 22 | } | 22 | } |
| 23 | 23 | ||
| 24 | Gats::Object *Gats::List::clone() const | ||
| 25 | { | ||
| 26 | Gats::List *pClone = new Gats::List; | ||
| 27 | for( const_iterator i = begin(); i; i++ ) | ||
| 28 | { | ||
| 29 | pClone->append( (*i)->clone() ); | ||
| 30 | } | ||
| 31 | return pClone; | ||
| 32 | } | ||
| 33 | |||
| 24 | void Gats::List::write( Bu::Stream &rOut ) const | 34 | void Gats::List::write( Bu::Stream &rOut ) const |
| 25 | { | 35 | { |
| 26 | rOut.write("l", 1 ); | 36 | rOut.write("l", 1 ); |
| @@ -15,6 +15,7 @@ namespace Gats | |||
| 15 | List(); | 15 | List(); |
| 16 | virtual ~List(); | 16 | virtual ~List(); |
| 17 | 17 | ||
| 18 | virtual Object *clone() const; | ||
| 18 | virtual Type getType() const { return typeList; } | 19 | virtual Type getType() const { return typeList; } |
| 19 | 20 | ||
| 20 | virtual void write( Bu::Stream &rOut ) const; | 21 | virtual void write( Bu::Stream &rOut ) const; |
diff --git a/src/object.cpp b/src/object.cpp index da77ff8..9662b6a 100644 --- a/src/object.cpp +++ b/src/object.cpp | |||
| @@ -111,6 +111,12 @@ Gats::Object *Gats::Object::strToGats( Bu::String::const_iterator &i ) | |||
| 111 | i++; | 111 | i++; |
| 112 | for(;;) | 112 | for(;;) |
| 113 | { | 113 | { |
| 114 | skipWs( i ); | ||
| 115 | if( *i == ']' ) | ||
| 116 | { | ||
| 117 | i++; | ||
| 118 | return pLst; | ||
| 119 | } | ||
| 114 | Gats::Object *pObj = strToGats( i ); | 120 | Gats::Object *pObj = strToGats( i ); |
| 115 | if( !pObj ) | 121 | if( !pObj ) |
| 116 | break; | 122 | break; |
| @@ -140,6 +146,11 @@ Gats::Object *Gats::Object::strToGats( Bu::String::const_iterator &i ) | |||
| 140 | for(;;) | 146 | for(;;) |
| 141 | { | 147 | { |
| 142 | skipWs( i ); | 148 | skipWs( i ); |
| 149 | if( *i == '}' ) | ||
| 150 | { | ||
| 151 | i++; | ||
| 152 | return pDict; | ||
| 153 | } | ||
| 143 | if( *i != '\"' ) | 154 | if( *i != '\"' ) |
| 144 | throw Bu::ExceptionBase("Keys must be quoted strings."); | 155 | throw Bu::ExceptionBase("Keys must be quoted strings."); |
| 145 | Bu::String sKey = token( i ); | 156 | Bu::String sKey = token( i ); |
diff --git a/src/object.h b/src/object.h index 91c48ad..b2b1b92 100644 --- a/src/object.h +++ b/src/object.h | |||
| @@ -34,6 +34,7 @@ namespace Gats | |||
| 34 | 34 | ||
| 35 | virtual void write( Bu::Stream &rOut ) const=0; | 35 | virtual void write( Bu::Stream &rOut ) const=0; |
| 36 | virtual void read( Bu::Stream &rIn, char cType )=0; | 36 | virtual void read( Bu::Stream &rIn, char cType )=0; |
| 37 | virtual Object *clone() const=0; | ||
| 37 | 38 | ||
| 38 | static Object *read( Bu::Stream &rIn ); | 39 | static Object *read( Bu::Stream &rIn ); |
| 39 | static Object *strToGats( const Bu::String &sStr ); | 40 | static Object *strToGats( const Bu::String &sStr ); |
diff --git a/src/string.cpp b/src/string.cpp index c4c156b..ddf3486 100644 --- a/src/string.cpp +++ b/src/string.cpp | |||
| @@ -37,6 +37,11 @@ Gats::String::~String() | |||
| 37 | { | 37 | { |
| 38 | } | 38 | } |
| 39 | 39 | ||
| 40 | Gats::Object *Gats::String::clone() const | ||
| 41 | { | ||
| 42 | return new Gats::String( Bu::String::clone() ); | ||
| 43 | } | ||
| 44 | |||
| 40 | void Gats::String::write( Bu::Stream &rOut ) const | 45 | void Gats::String::write( Bu::Stream &rOut ) const |
| 41 | { | 46 | { |
| 42 | rOut.write("s", 1 ); | 47 | rOut.write("s", 1 ); |
diff --git a/src/string.h b/src/string.h index f708e22..de8eedd 100644 --- a/src/string.h +++ b/src/string.h | |||
| @@ -17,6 +17,7 @@ namespace Gats | |||
| 17 | String( const Bu::String &s ); | 17 | String( const Bu::String &s ); |
| 18 | virtual ~String(); | 18 | virtual ~String(); |
| 19 | 19 | ||
| 20 | virtual Object *clone() const; | ||
| 20 | virtual Type getType() const { return typeString; } | 21 | virtual Type getType() const { return typeString; } |
| 21 | 22 | ||
| 22 | virtual void write( Bu::Stream &rOut ) const; | 23 | virtual void write( Bu::Stream &rOut ) const; |
