コード例 #1
0
bool Database::Statement::read(Serializable &s)
{
	if(mInputLevel == 0 || s.isInlineSerializable()) return s.deserialize(*this);
	else {
		String tmp;
		if(!read(tmp)) return false;
		JsonSerializer serializer(&tmp);
		s.deserialize(serializer);
		return true;
	}
}
コード例 #2
0
ファイル: serializable.cpp プロジェクト: pwag42/moba_source
Serializable * newDeserialize(ptree serial)
{
#if VERBOSE
	cout << "registered types:" << endl;
	for(map<string, Serializable * (*)()>::iterator iterator = Deserializer::d().begin(); iterator != Deserializer::d().end(); iterator++) {
		cout << iterator->first << endl;
	}
#endif

	string type = serial.get<std::string>("type");

	map<string, Serializable * (*)()>::iterator it = Deserializer::d().find(type);

	if(it != Deserializer::d().end())
	{
		Serializable * toReturn = Deserializer::d()[type]();
		toReturn->deserialize(serial);
		
	#if VERBOSE
		stringstream ss2;
		write_xml(ss2, toReturn->serialize());
		cout << "newDeserialize()->serialize() *pre-returned* to string:" << endl << ss2.str() << endl;
	#endif

		return toReturn;
	}
	else
	{
		cout<<"ERROR! No compatible deserialization function for " << type; //In case someone forgets to add a deserializer
		throw 319;
	}
}
コード例 #3
0
ファイル: deserializer.cpp プロジェクト: Ojaswi/inviwo
void Deserializer::deserialize(const std::string& key, Serializable& sObj) {
    try {
        NodeSwitch ns(*this, key);
        sObj.deserialize(*this);
    } catch (TxException&) {
    }
}
コード例 #4
0
ファイル: jsonserializer.cpp プロジェクト: orinocoz/Teapotnet
bool JsonSerializer::input(Serializable &s)
{
	if(s.isInlineSerializable() && !s.isNativeSerializable())
	{
		String str;
		if(!input(str)) return false;
		s.fromString(str);
		return true;
	}
	else return s.deserialize(*this);
}