Ejemplo n.º 1
0
bool KMapData::save(StreamInterface& fo)
{
	DWORD width = m_width;
	DWORD height = m_height;
	
	if(fo.WriteData(&width, sizeof(width)) != sizeof(width))
		return false;
	
	if(fo.WriteData(&height, sizeof(height)) != sizeof(height))
		return false;

	int len = m_width*m_height*sizeof(KCellData);
	if(fo.WriteData(m_cells, len) != len)
		return false;
	
	fo.flush();
	return true;
}
Ejemplo n.º 2
0
BOOL XMLElementNode::WriteTo(StreamInterface& s, int level) const
{
	for(int i=0; i<level; i++) s.WriteData("\t", 1);

	s.WriteData("<", 1);
	s.WriteData(m_tagName.c_str(), m_tagName.size());
	
	if(m_attrs.Size()) s.WriteData(" ", 1);
	for(int i=0; i<m_attrs.Size(); i++)
	{
		const XMLAttribute* pattr = m_attrs.GetAttribute(i);
		if(i) s.WriteData(" ", 1);
		s.WriteData(pattr->m_name.c_str(), pattr->m_name.size());
		s.WriteData("=", 1);
		s.WriteData("\"", 1);
		s.WriteData(pattr->m_value.c_str(), pattr->m_value.Size());
		s.WriteData("\"", 1);
	}
	if(!m_children.Size())
	{
		s.WriteData("/>", 2);
		return TRUE;
	}

	s.WriteData(">", 1);
	if(m_children.Size() == 1 && m_children.GetNode(0)->IsTextNode())
	{
		m_children.GetNode(0)->WriteTo(s);
// 		const StringValue* pVal = this->GetText();
// 		s.WriteData(pVal->c_str(), pVal->Size());
		s.WriteData("</", 2);
		s.WriteData(m_tagName.c_str(), m_tagName.size());
		s.WriteData(">", 1);
		return TRUE;
	}

	s.WriteData("\n", 1);
	for(int i=0; i<m_children.Size(); i++)
	{
		const XMLDomNode* pNode = m_children.GetNode(i);
		pNode->WriteTo(s, level+1);
		s.WriteData("\n", 1);
	}
	
	for(int i=0; i<level; i++) s.WriteData("\t", 1);

	s.WriteData("</", 2);
	s.WriteData(m_tagName.c_str(), m_tagName.size());
	s.WriteData(">", 1);

	return TRUE;
}