void ReadWriteXMLBinary::WriteValue(XMLWritingMachine& writer, const TreeValue* value) const { // binary object const TreeBinary* binary = static_cast<const TreeBinary*>( value ); // binary data writer.OS() << "\n"; if (binary->SizeBytes()) { // init library base64_encodestate state; base64_init_encodestate(&state); // text buffer std::string encoded_data(2*binary->SizeBytes(), ' '); // convert int numchars = base64_encode_block((const char*)binary->Data(), binary->SizeBytes(), &encoded_data[0], &state); numchars += base64_encode_blockend(&encoded_data[0] + numchars, &state); // shrink to fit encoded_data.resize(numchars); // write writer.OS() << encoded_data; } }
void ReadWriteXMLCompound::WriteValue(XMLWritingMachine& writer, const TreeValue* value) const { const TreeCompound* compoundobject = static_cast<const TreeCompound*>( value ); for (size_t index = 0; index < compoundobject->NumElements(); index++) { const TreeCompoundNode* node = compoundobject->Node(index); writer.WriteValue(node->Name(), node->Value()); } }
void ReadWriteXMLList::WriteValue(XMLWritingMachine& writer, const TreeValue* value) const { const TreeList* listobject = static_cast<const TreeList*>( value ); const std::vector<TreeValue*>& value_list = listobject->ElementArray(); for (std::vector<TreeValue*>::const_iterator value_iter( value_list.begin() ); value_iter != value_list.end(); value_iter++) { writer.WriteValue(listobject->ElementName(), *value_iter); } }
void ReadWriteXMLBool::WriteValue(XMLWritingMachine& writer, const TreeValue* value) const { writer.OS() << (static_cast<const TreeBool*>( value )->Value() ? "1" : "0"); }
void ReadWriteXMLInt32::WriteValue(XMLWritingMachine& writer, const TreeValue* value) const { writer.OS() << static_cast<const TreeInt32*>( value )->Value(); }