コード例 #1
0
ファイル: Serialize.cpp プロジェクト: zidane168/AutoPlay
void XMLSerialized::SaveInfo(const CString& sName,const int& iValue,TagType tagType,const CString& parent){
	CMarkup xml = OpenFile();
	if(FindPath(parent,&xml)){
		if(tagType== TagType::Element)
		{
			if(!xml.FindElem(sName))
				xml.AddElem( sName);
			xml.SetData(iValue);
			return;
		}
		if(tagType== TagType::Attribute)
		{
			xml.SetAttrib(sName,iValue);
			return;
		}
	}
	xml.Save(sFileName);
}
コード例 #2
0
ファイル: Serialize.cpp プロジェクト: zidane168/AutoPlay
bool XMLSerialized::Serialize(){
	CMarkup* xml = new CMarkup();
	if(xml==NULL){
		return false;
	}
	std::map<int,DATA*>::const_iterator item;
	for(item=  m_mapping.begin(); item != m_mapping.end(); item ++){
		DATA* data = item->second;
		if(data->_tagType == TagType::Root){
			xml->AddElem( data->_tagName);
			continue;
		}
		if(data->_tagType == TagType::Element){
			xml->ResetPos();			
			if(FindPath(data->_parent,xml)){
				xml->AddElem( data->_tagName);
				if(data->_dataType!= DataType::None){
					CString result;
					switch(data->_dataType){
						case DataType::String:
							xml->SetData(*(CString*)data->_value);
						break;
						case DataType::Int:
							xml->SetData(*(int*)data->_value);
						break;
						case DataType::Bool:
							xml->SetData((int)*(bool*)data->_value);
						break;
						case DataType::ByteArray:
							ByteArrayToString(result,L"|",(byte*)data->_value);
							xml->SetData(result);
						break;
						case DataType::IntArray:
							IntArrayToString(result,L"|",(int*)data->_value);
							xml->SetData(result);
						break;
					}
				}
				continue;
			}
		}
		if(data->_tagType == TagType::Attribute){
			if(FindPath(data->_parent,xml)){
				xml->OutOfElem();
				CString result;
				
				switch(data->_dataType){
					case DataType::String:
						xml->AddAttrib(data->_tagName,*(CString*)data->_value);
					break;
					case DataType::Int:
						xml->AddAttrib(data->_tagName,*(int*)data->_value);
					break;
					case DataType::Bool:
						xml->AddAttrib(data->_tagName,(int)*(bool*)data->_value);
					break;
					case DataType::ByteArray:
						ByteArrayToString(result,L"|",(byte*)data->_value);
						xml->AddAttrib(data->_tagName,result);
					break;
					case DataType::IntArray:
						IntArrayToString(result,L"|",(int*)data->_value);
						xml->AddAttrib(data->_tagName,result);
					break;
				}
			}
		}		
	}
	xml->Save(sFileName);
	delete xml;
	xml=NULL;
	return true;
}
コード例 #3
0
ファイル: Serialize.cpp プロジェクト: zidane168/AutoPlay
void XMLSerialized::SaveInfo(){
	CMarkup xml = OpenFile();
	if(xml.GetDoc().GetLength()==0){
		Serialize();
		return;
	}
	std::map<int,DATA*>::const_iterator item;
	for(item=  m_mapping.begin(); item != m_mapping.end(); item ++){
		DATA* data = item->second;
		if(data->_tagType == TagType::Root){
			continue;
		}
		if(data->_tagType == TagType::Element){
			xml.ResetPos();			
			if(FindPath(data->_parent,&xml)){
				if(!xml.FindElem(data->_tagName)){
					xml.AddElem(data->_tagName);
				}
				if(data->_dataType!= DataType::None){
					CString result;
					switch(data->_dataType){
						case DataType::String:
							xml.SetData(*(CString*)data->_value);
						break;
						case DataType::Int:
							xml.SetData(*(int*)data->_value);
						break;
						case DataType::Bool:
							xml.SetData((int)*(bool*)data->_value);
						break;
						case DataType::ByteArray:
							ByteArrayToString(result,L"|",(byte*)data->_value);
							xml.SetData(result);
						break;
						case DataType::IntArray:
							IntArrayToString(result,L"|",(int*)data->_value);
							xml.SetData(result);
						break;
					}
				}
				continue;
			}
		}
		if(data->_tagType == TagType::Attribute){
			if(FindPath(data->_parent,&xml)){
				xml.OutOfElem();
				CString result;
				
				switch(data->_dataType){
					case DataType::String:
						xml.SetAttrib(data->_tagName,*(CString*)data->_value);
					break;
					case DataType::Int:
						xml.SetAttrib(data->_tagName,*(int*)data->_value);
					break;
					case DataType::Bool:
						xml.SetAttrib(data->_tagName,(int)*(bool*)data->_value);
					break;
					case DataType::ByteArray:
						ByteArrayToString(result,L"|",(byte*)data->_value);
						xml.SetAttrib(data->_tagName,result);
					break;
					case DataType::IntArray:
						IntArrayToString(result,L"|",(int*)data->_value);
						xml.SetAttrib(data->_tagName,result);
					break;
				}
			}
		}		
	}
	xml.Save(sFileName);
}