// // Save() // Saves a node to a file. // vlVoid CVMTFile::Save(IO::Writers::IWriter *Writer, CVMTNode *Node, vlUInt uiLevel) const { vlChar cBuffer[2048]; if(Node->GetType() == NODE_TYPE_GROUP) { CVMTGroupNode *Group = static_cast<CVMTGroupNode *>(Node); this->Indent(Writer, uiLevel); sprintf(cBuffer, "\"%s\"\r\n", Group->GetName()); Writer->Write(cBuffer, (vlUInt)strlen(cBuffer)); this->Indent(Writer, uiLevel); sprintf(cBuffer, "{\r\n"); Writer->Write(cBuffer, (vlUInt)strlen(cBuffer)); for(vlUInt i = 0; i < Group->GetNodeCount(); i++) { this->Save(Writer, Group->GetNode(i), uiLevel + 1); } this->Indent(Writer, uiLevel); sprintf(cBuffer, "}\r\n"); Writer->Write(cBuffer, (vlUInt)strlen(cBuffer)); } else if(Node->GetType() == NODE_TYPE_STRING) { CVMTStringNode *String = static_cast<CVMTStringNode *>(Node); this->Indent(Writer, uiLevel); sprintf(cBuffer, "\"%s\" \"%s\"\r\n", String->GetName(), String->GetValue()); Writer->Write(cBuffer, (vlUInt)strlen(cBuffer)); } else if(Node->GetType() == NODE_TYPE_INTEGER) { CVMTIntegerNode *Integer = static_cast<CVMTIntegerNode *>(Node); this->Indent(Writer, uiLevel); sprintf(cBuffer, "\"%s\" %d\r\n", Integer->GetName(), Integer->GetValue()); Writer->Write(cBuffer, (vlUInt)strlen(cBuffer)); } else if(Node->GetType() == NODE_TYPE_SINGLE) { CVMTSingleNode *Single = static_cast<CVMTSingleNode *>(Node); this->Indent(Writer, uiLevel); sprintf(cBuffer, "\"%s\" %f\r\n", Single->GetName(), Single->GetValue()); Writer->Write(cBuffer, (vlUInt)strlen(cBuffer)); } }