Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/MJPA/SimpleJSON.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/JSONValue.cpp')
-rw-r--r--src/JSONValue.cpp52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/JSONValue.cpp b/src/JSONValue.cpp
index 44ff337..c15f686 100644
--- a/src/JSONValue.cpp
+++ b/src/JSONValue.cpp
@@ -390,6 +390,58 @@ JSONValue::JSONValue(const JSONObject &m_object_value)
}
/**
+ * Copy constructor to perform a deep copy of array / object values
+ *
+ * @access public
+ *
+ * @param JSONValue m_source The source JSONValue that is being copied
+ */
+JSONValue::JSONValue(const JSONValue &m_source)
+{
+ type = m_source.type;
+
+ switch (type)
+ {
+ case JSONType_String:
+ string_value = m_source.string_value;
+ break;
+
+ case JSONType_Bool:
+ bool_value = m_source.bool_value;
+ break;
+
+ case JSONType_Number:
+ number_value = m_source.number_value;
+ break;
+
+ case JSONType_Array:
+ {
+ JSONArray source_array = m_source.array_value;
+ JSONArray::iterator iter;
+ for (iter = source_array.begin(); iter != source_array.end(); iter++)
+ array_value.push_back(new JSONValue(**iter));
+ break;
+ }
+
+ case JSONType_Object:
+ {
+ JSONObject source_object = m_source.object_value;
+ JSONObject::iterator iter;
+ for (iter = source_object.begin(); iter != source_object.end(); iter++)
+ {
+ std::wstring name = (*iter).first;
+ object_value[name] = new JSONValue(*((*iter).second));
+ }
+ break;
+ }
+
+ case JSONType_Null:
+ // Nothing to do.
+ break;
+ }
+}
+
+/**
* The destructor for the JSON Value object
* Handles deleting the objects in the array or the object value
*