Improved Json methods to correct work with swig and inheritance.

This commit is contained in:
Jonathan Thomas
2013-12-07 21:09:55 -06:00
parent e3d41808b9
commit cd7743fb88
44 changed files with 787 additions and 221 deletions

View File

@@ -116,4 +116,51 @@ tr1::shared_ptr<Frame> DummyReader::GetFrame(int requested_frame) throw(ReaderCl
throw InvalidFile("No frame could be created from this type of file.", "dummy");
}
// Generate JSON string of this object
string DummyReader::Json() {
// Return formatted string
return JsonValue().toStyledString();
}
// Generate Json::JsonValue for this object
Json::Value DummyReader::JsonValue() {
// Create root json object
Json::Value root = ReaderBase::JsonValue(); // get parent properties
root["type"] = "DummyReader";
// return JsonValue
return root;
}
// Load JSON string into this object
void DummyReader::SetJson(string value) throw(InvalidJSON) {
// Parse JSON string into JSON objects
Json::Value root;
Json::Reader reader;
bool success = reader.parse( value, root );
if (!success)
// Raise exception
throw InvalidJSON("JSON could not be parsed (or is invalid)", "");
try
{
// Set all values that match
SetJsonValue(root);
}
catch (exception e)
{
// Error parsing JSON (or missing keys)
throw InvalidJSON("JSON is invalid (missing keys or invalid data types)", "");
}
}
// Load Json::JsonValue into this object
void DummyReader::SetJsonValue(Json::Value root) throw(InvalidFile) {
// Set parent data
ReaderBase::SetJsonValue(root);
}