- // Read id
- u8 buf[2];
- is.read((char*)buf, 2);
- s16 id = readS16(buf);
-
- // Read data
- std::string data = deSerializeString(is);
-
- // Find factory function
- core::map<u16, Factory>::Node *n;
- n = m_types.find(id);
- if(n == NULL)
- {
- // If factory is not found, just return.
- dstream<<"WARNING: NodeMetadata: No factory for typeId="
- <<id<<std::endl;
- return NULL;
- }
-
- // Try to load the metadata. If it fails, just return.
- try
- {
- std::istringstream iss(data, std::ios_base::binary);
-
- Factory f = n->getValue();
- NodeMetadata *meta = (*f)(iss);
- return meta;
- }
- catch(SerializationError &e)
- {
- dstream<<"WARNING: NodeMetadata: ignoring SerializationError"<<std::endl;
- return NULL;
+ int num_vars = m_stringvars.size();
+ writeU32(os, num_vars);
+ for(std::map<std::string, std::string>::const_iterator
+ i = m_stringvars.begin(); i != m_stringvars.end(); i++){
+ os<<serializeString(i->first);
+ os<<serializeLongString(i->second);