Esempio n. 1
0
//
// 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));
	}
}
Esempio n. 2
0
CVMTStringNode::CVMTStringNode(const CVMTStringNode &StringNode) : CVMTValueNode(StringNode.GetName()) {
	this->cValue = new vlChar[strlen(StringNode.cValue) + 1];
	strcpy(this->cValue, StringNode.cValue);
}