void CConfig::CParamItem::load(CXMLElement* pXML) { CXMLElement* pSub = pXML; tstring sRight = m_sName; tstring sLeft; firtex::string_utils::trim(sRight); tstring::size_type npos = (size_t)-1; tstring::size_type idx; while(sRight != "") { idx = sRight.find('.'); if(idx == npos) { sLeft = sRight; sRight = _T(""); } else { sLeft = sRight.substr(0,idx); sRight = sRight.substr(idx + 1); } pSub = pSub->getElementByName(sLeft.c_str()); if(pSub == NULL) return; } tstring sType = pSub->getAttributeValue(_T("type"),_T("")); if ( !_tcsicmp(sType.c_str(),_T("int32")) ) { _stscanf( pSub->getValue().c_str(),_T("%u"), m_pInt32 ); } else if ( !_tcsicmp(sType.c_str(),_T("int64")) ) { _stscanf( pSub->getValue().c_str(),_T("%u"), m_pInt64 ); } else if ( !_tcsicmp(sType.c_str(), _T("float")) ) { _stscanf( pSub->getValue().c_str(),_T("%lf"), m_pFloat ); } else if ( !_tcsicmp(sType.c_str(), _T("string")) ) { *m_pString = pSub->getValue(); } }
void CConfig::CParamItem::save(CXMLElement* pXML) { CXMLElement* pSub = pXML; tstring sRight = m_sName; tstring sLeft; firtex::string_utils::trimleft(sRight); tstring::size_type npos = (size_t)-1; tstring::size_type idx; while(sRight != "") { idx = sRight.find('.'); if(idx == npos) { sLeft = sRight; sRight = _T(""); } else { sLeft = sRight.substr(0,idx); sRight = sRight.substr(idx + 1); } pSub = pSub->getElementByName(sLeft.c_str(),true); } CXMLAttribute* pAttri = pSub->addAttribute(_T("type"),_T("")); tstring str; if ( m_pInt64 ) { pAttri->setValue(_T("int64")); stringstream ss; ss << *m_pInt64; ss >> str; pSub->setValue(str.c_str()); } else if ( m_pInt32 )