本文整理汇总了C++中xml::gcXMLElement类的典型用法代码示例。如果您正苦于以下问题:C++ gcXMLElement类的具体用法?C++ gcXMLElement怎么用?C++ gcXMLElement使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了gcXMLElement类的19个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: platformFilter
bool User::platformFilter(const XML::gcXMLElement &platform, PlatformType type)
{
if (!platform.IsValid())
return true;
uint32 id = 0;
platform.GetAtt("id", id);
if (id == 0)
return true;
#ifdef WIN32
return (id != 100);
#elif defined NIX
if (type == PT_Tool)
return (id != 110 && id != 120);
#ifdef NIX64
if (id == 120)
return false;
#endif
//linux will have windows and nix
return (id != 110); //id != 100 &&
#else
return true;
#endif
}
开发者ID:CSRedRat,项目名称:desura-app,代码行数:26,代码来源:User.cpp
示例2: parseMod
void InstalledWizardThread::parseMod(DesuraId parId, DesuraId id, const XML::gcXMLElement &mod, gcRefPtr<WildcardManager> &pWildCard, const XML::gcXMLElement &info)
{
gcString name = mod.GetChild("name");
if (name == "" && info.IsValid())
name = info.GetChild("name");
if (name == "")
return;
if (m_bTriggerNewEvent)
onNewItemEvent(name);
triggerProgress();
m_uiDone++;
UserCore::Misc::InstallInfo temp(id, parId);
try
{
temp.loadXmlData(mod, pWildCard);
if (m_bTriggerNewEvent)
onModFound(temp);
}
catch (gcException &except)
{
Warning("ItemWizard: Error in xml parsing (installed wizard, mods): {0}\n", except);
}
}
开发者ID:EasyCoding,项目名称:desura-app,代码行数:31,代码来源:InstalledWizardThread.cpp
示例3: processInstallScript
void BranchInfo::processInstallScript(const XML::gcXMLElement &xmlElement)
{
uint32 crc = 0;
xmlElement.GetAtt("crc", crc);
if (UTIL::FS::isValidFile(m_szInstallScript))
{
if (crc != 0 && m_uiInstallScriptCRC == (uint32)crc)
return;
}
else
{
m_szInstallScript = UTIL::OS::getAppDataPath(gcWString(L"{0}\\{1}\\install_script.js", m_ItemId.getFolderPathExtension(), getBranchId()).c_str());
}
gcString base64 = xmlElement.GetText();
try
{
UTIL::FS::recMakeFolder(UTIL::FS::Path(m_szInstallScript, "", true));
UTIL::FS::FileHandle fh(m_szInstallScript.c_str(), UTIL::FS::FILE_WRITE);
UTIL::STRING::base64_decode(base64, [&fh](const unsigned char* data, uint32 size) -> bool
{
fh.write((const char*)data, size);
return true;
});
m_uiInstallScriptCRC = crc;
}
catch (gcException &e)
{
Warning("Failed to save install script for {0} branch {1}: {2}\n", m_ItemId.toInt64(), m_uiBranchId, e);
m_szInstallScript = "";
}
}
开发者ID:EasyCoding,项目名称:desura-app,代码行数:35,代码来源:BranchInfo.cpp
示例4: parseItemsQuick
void InstalledWizardThread::parseItemsQuick(const XML::gcXMLElement &fNode)
{
if (!fNode.IsValid())
return;
auto platforms = fNode.FirstChildElement("platforms");
if (platforms.IsValid())
{
platforms.for_each_child("platform", [&](const XML::gcXMLElement &platform)
{
if (isStopped())
return;
if (getUserCore()->platformFilter(platform, PlatformType::Item))
return;
parseItemsQuick(platform);
});
}
else
{
fNode.FirstChildElement("games").for_each_child("game", [&](const XML::gcXMLElement &game)
{
if (isStopped())
return;
const std::string id = game.GetAtt("siteareaid");
DesuraId gameId(id.c_str(), "games");
if (gameId.isOk())
parseGameQuick(game);
});
}
}
开发者ID:EasyCoding,项目名称:desura-app,代码行数:35,代码来源:InstalledWizardThread.cpp
示例5: parseNewsAndGifts
void User::parseNewsAndGifts(const XML::gcXMLElement &xmlNode, const char* szChildName, Event<std::vector<UserCore::Misc::NewsItem*> > &onEvent)
{
if (!xmlNode.IsValid())
return;
std::vector<UserCore::Misc::NewsItem*> itemList;
xmlNode.for_each_child(szChildName, [&itemList](const XML::gcXMLElement &itemElem)
{
const std::string szId = itemElem.GetAtt("id");
gcString szTitle;
gcString szUrl;
itemElem.GetChild("title", szTitle);
itemElem.GetChild("url", szUrl);
if (szId.empty() || szTitle.empty() || szUrl.empty())
return;
uint32 id = (uint32)Safe::atoi(szId.c_str());
UserCore::Misc::NewsItem *temp = new UserCore::Misc::NewsItem(id, 0, szTitle.c_str(), szUrl.c_str());
itemList.push_back(temp);
});
if (itemList.size() > 0)
onEvent(itemList);
safe_delete(itemList);
}
开发者ID:CSRedRat,项目名称:desura-app,代码行数:31,代码来源:User.cpp
示例6: gameId
void InstalledWizardThread::parseItems1(const XML::gcXMLElement &fNode, gcRefPtr<WildcardManager> &pWildCard, std::map<uint64, XML::gcXMLElement> *vMap)
{
gcAssert(pWildCard);
if (!fNode.IsValid())
return;
fNode.FirstChildElement("games").for_each_child("game", [&](const XML::gcXMLElement &game)
{
if (isStopped())
return;
const std::string szId = game.GetAtt("siteareaid");
DesuraId gameId(szId.c_str(), "games");
if (!gameId.isOk())
return;
XML::gcXMLElement info;
if (vMap)
info = (*vMap)[gameId.toInt64()];
parseGame(gameId, game, pWildCard, info);
});
}
开发者ID:EasyCoding,项目名称:desura-app,代码行数:26,代码来源:InstalledWizardThread.cpp
示例7: parseGameQuick
void InstalledWizardThread::parseGameQuick(const XML::gcXMLElement &game)
{
if (!game.IsValid())
return;
m_uiTotal++;
game.FirstChildElement("mods").for_each_child("mod", [&](const XML::gcXMLElement &)
{
m_uiTotal++;
});
}
开发者ID:EasyCoding,项目名称:desura-app,代码行数:12,代码来源:InstalledWizardThread.cpp
示例8: loadXmlData
void InstallInfo::loadXmlData(const XML::gcXMLElement &xmlNode, WildcardManager* pWildCard)
{
WildcardManager lwc(pWildCard);
auto wcNode = xmlNode.FirstChildElement("wcards");
if (wcNode.IsValid())
{
lwc.parseXML(wcNode);
}
xmlNode.GetChild("name", m_szName);
auto icsNode = xmlNode.FirstChildElement("settings").FirstChildElement("installlocations");
if (!icsNode.IsValid())
return;
icsNode.for_each_child("installlocation", [&](const XML::gcXMLElement &xmlChild)
{
if (m_bInstalled)
return;
const std::string path = xmlChild.GetChild("path");
const std::string check = xmlChild.GetChild("check");
if (path.empty() || check.empty())
return;
char* CheckRes = nullptr;
char* PathRes = nullptr;
try
{
lwc.constructPath(check.c_str(), &CheckRes);
lwc.constructPath(path.c_str(), &PathRes);
if (CheckRes && PathRes && UTIL::FS::isValidFile(UTIL::FS::PathWithFile(CheckRes)))
{
m_szPath = PathRes;
m_bInstalled = true;
}
}
catch (gcException &e)
{
Debug(gcString("InstallInfo: Error parsing wildcards for installInfo: {0}\n", e));
}
safe_delete(CheckRes);
safe_delete(PathRes);
});
}
开发者ID:CSRedRat,项目名称:desura-app,代码行数:50,代码来源:InstallInfo.cpp
示例9: parseXml
uint8 UMcf::parseXml(const XML::gcXMLElement &xmlElement)
{
if (!xmlElement.IsValid())
return UMCF_ERR_XML_NOPRIMENODE;
xmlElement.for_each_child("file", [this](const XML::gcXMLElement &xmlChild)
{
auto temp = std::make_shared<UMcfFile>();
if (temp->loadXmlData(xmlChild) == UMCF_OK)
m_pFileList.push_back(temp);
});
return UMCF_OK;
}
开发者ID:Translator5,项目名称:desura-app,代码行数:15,代码来源:UMcf.cpp
示例10: extractInstallChecks
void BranchInstallInfo::extractInstallChecks(const XML::gcXMLElement &icsNode, gcRefPtr<WildcardManager> &pWildCard, std::vector<InsCheck> &vInsChecks)
{
icsNode.for_each_child("installlocation", [&vInsChecks, pWildCard, this](const XML::gcXMLElement &icNode)
{
const gcString iCheck = icNode.GetChild("check");
const gcString iPath = icNode.GetChild("path");
if (iCheck.empty() || iPath.empty())
return;
try
{
gcString strCheckRes = pWildCard->constructPath(iCheck.c_str());
if (isInstalled())
{
if (!updateInstallCheck(strCheckRes, iPath))
return;
vInsChecks.push_back(InsCheck(strCheckRes.c_str(), m_szPath.c_str()));
}
else
{
vInsChecks.push_back(InsCheck(strCheckRes.c_str(), iPath.c_str()));
}
}
catch (...)
{
}
});
}
开发者ID:aromis,项目名称:desura-app,代码行数:31,代码来源:BranchInstallInfo.cpp
示例11: parseXML
uint8 WildcardManager::parseXML(const XML::gcXMLElement &xmlElement)
{
if (!xmlElement.IsValid())
return WCM_ERR_BADXML;
xmlElement.for_each_child("wcard", [this](const XML::gcXMLElement &xmlChild)
{
const std::string name = xmlChild.GetAtt("name");
const std::string type = xmlChild.GetAtt("type");
const std::string string = xmlChild.GetText();
if (!name.empty() && !type.empty() && !string.empty())
{
addItem(new WildcardInfo(name, string, type));
}
});
return WCM_OK;
}
开发者ID:CSRedRat,项目名称:desura-app,代码行数:19,代码来源:WildcardManager.cpp
示例12: LoadSprites
void Theme::LoadSprites(const XML::gcXMLElement &xmlEl)
{
xmlEl.for_each_child("sprite", [this](const XML::gcXMLElement &xmlChild)
{
const std::string name = xmlChild.GetAtt("name");
if (name.empty())
return;
auto sprite = SpriteList::findItem(name.c_str());
if (!sprite)
{
sprite = gcRefPtr<ThemeSpriteInfo>::create(name.c_str());
addItem(sprite);
}
xmlChild.for_each_child("rect", [sprite](const XML::gcXMLElement &xmlRect)
{
const std::string rName = xmlRect.GetAtt("name");
const XML::gcXMLElement pos = xmlRect.FirstChildElement("pos");
const XML::gcXMLElement size = xmlRect.FirstChildElement("size");
if (rName.empty() || !pos.IsValid() || !size.IsValid())
return;
const std::string x = pos.GetAtt("x");
const std::string y = pos.GetAtt("y");
const std::string w = size.GetAtt("w");
const std::string h = size.GetAtt("h");
if (x.empty() || y.empty() || w.empty() || h.empty())
return;
auto rect = sprite->findItem(rName.c_str());
if (!rect)
{
rect = gcRefPtr<SpriteRect>::create(rName.c_str());
sprite->addItem(rect);
}
rect->x = Safe::atoi(x.c_str());
rect->y = Safe::atoi(y.c_str());
rect->w = Safe::atoi(w.c_str());
rect->h = Safe::atoi(h.c_str());
});
});
}
开发者ID:leayle2a,项目名称:desura-app,代码行数:51,代码来源:Theme.cpp
示例13: LoadImages
void Theme::LoadImages(const UTIL::FS::Path& path, const XML::gcXMLElement &xmlEl)
{
xmlEl.for_each_child("image", [this, &path](const XML::gcXMLElement &xmlChild)
{
const std::string name = xmlChild.GetAtt("name");
const std::string val = xmlChild.GetText();
if (name.empty() || val.empty())
return;
std::string outVal = UTIL::STRING::sanitizeFileName(val);
auto img = ImageList::findItem(name.c_str());
if (!img)
{
img = gcRefPtr<ThemeImageInfo>::create(name.c_str());
addItem(img);
}
gcString fullPath("{0}{2}images{2}app{2}{1}", path.getFolderPath(), outVal, DIRS_STR);
img->path = fullPath;
});
}
开发者ID:leayle2a,项目名称:desura-app,代码行数:23,代码来源:Theme.cpp
示例14: LoadControls
void Theme::LoadControls(const XML::gcXMLElement &xmlEl)
{
xmlEl.for_each_child("control", [this](const XML::gcXMLElement &xmlChild)
{
const std::string name = xmlChild.GetAtt("name");
if (name.empty())
return;
auto control = ControlList::findItem(name.c_str());
if (!control)
{
control = gcRefPtr<ThemeControlInfo>::create(name.c_str());
addItem(control);
}
xmlChild.for_each_child("color", [control](const XML::gcXMLElement &xmlCol)
{
const std::string id = xmlCol.GetAtt("id");
const std::string val = xmlCol.GetText();
if (id.empty() || val.empty())
return;
auto col = control->findItem(id.c_str());
if (!col)
{
col = gcRefPtr<ThemeColorInfo>::create(id.c_str());
control->add(col);
}
col->color = Color(val.c_str());
});
});
}
开发者ID:leayle2a,项目名称:desura-app,代码行数:37,代码来源:Theme.cpp
示例15: LoadWeb
void Theme::LoadWeb(const UTIL::FS::Path& path, const XML::gcXMLElement &xmlEl)
{
gcString urlPath(path.getFolderPath());
for (size_t x=0; x<urlPath.size(); x++)
{
if (urlPath[x] == '\\')
urlPath[x] = '/';
}
xmlEl.for_each_child("page", [this, urlPath](const XML::gcXMLElement &xmlChild)
{
const std::string name = xmlChild.GetAtt("name");
const std::string val = xmlChild.GetText();
if (name.empty() || val.empty())
return;
std::string outVal = UTIL::STRING::sanitizeFileName(val);
#ifdef WIN32
gcString fullPath("file:///{0}/html/{1}", urlPath, outVal);
#else
gcString fullPath("file://{0}/html/{1}", urlPath, outVal);
#endif
auto web = WebList::findItem(name.c_str());
if (!web)
{
web = gcRefPtr<ThemeWebInfo>::create(name.c_str());
addItem(web);
}
web->path = fullPath;
});
}
开发者ID:leayle2a,项目名称:desura-app,代码行数:37,代码来源:Theme.cpp
示例16: loadXmlData
void BranchInfo::loadXmlData(const XML::gcXMLElement &xmlNode)
{
xmlNode.GetChild("name", m_szName);
xmlNode.GetChild("price", m_szCost);
xmlNode.GetChild("eula", m_szEulaUrl);
auto eNode = xmlNode.FirstChildElement("eula");
if (eNode.IsValid())
{
const std::string date = eNode.GetAtt("date");
if (!date.empty() && m_szEulaDate != date)
{
m_uiFlags &= ~BF_ACCEPTED_EULA;
m_szEulaDate = date;
}
}
gcString preload;
xmlNode.GetChild("preload", preload);
if (m_szPreOrderDate.size() > 0 && (preload.size() == 0 || preload == "0"))
{
m_szPreOrderDate = "";
m_uiFlags &= ~BF_PREORDER;
onBranchInfoChangedEvent();
}
else if (preload != "0")
{
m_szPreOrderDate = preload;
m_uiFlags |= BF_PREORDER;
onBranchInfoChangedEvent();
}
bool nameon = false;
bool free = false;
bool onaccount = false;
bool regionlock = false;
bool memberlock = false;
bool demo = false;
bool test = false;
bool cdkey = false;
gcString cdkeyType;
xmlNode.GetChild("nameon", nameon);
xmlNode.GetChild("free", free);
xmlNode.GetChild("onaccount", onaccount);
xmlNode.GetChild("regionlock", regionlock);
xmlNode.GetChild("inviteonly", memberlock);
xmlNode.GetChild("demo", demo);
xmlNode.GetChild("test", test);
xmlNode.GetChild("cdkey", cdkey);
xmlNode.FirstChildElement("cdkey").GetAtt("type", cdkeyType);
uint32 global = -1;
xmlNode.GetChild("global", global);
if (global != -1)
m_uiGlobalId = MCFBranch::BranchFromInt(global, true);
if (nameon)
m_uiFlags |= BF_DISPLAY_NAME;
if (free)
m_uiFlags |= BF_FREE;
if (onaccount)
m_uiFlags |= BF_ONACCOUNT;
if (regionlock)
m_uiFlags |= BF_REGIONLOCK;
if (memberlock)
m_uiFlags |= BF_MEMBERLOCK;
if (demo)
m_uiFlags |= BF_DEMO;
if (test)
m_uiFlags |= BF_TEST;
if (cdkey)
m_uiFlags |= BF_CDKEY;
if (cdkeyType == "steam")
m_uiFlags |= BF_STEAMGAME;
//no mcf no release
auto mcfNode = xmlNode.FirstChildElement("mcf");
if (!mcfNode.IsValid())
{
m_uiFlags |= BF_NORELEASES;
}
else
{
m_uiFlags &= ~BF_NORELEASES;
//.........这里部分代码省略.........
开发者ID:EasyCoding,项目名称:desura-app,代码行数:101,代码来源:BranchInfo.cpp
示例17: parseGame
void InstalledWizardThread::parseGame(DesuraId id, const XML::gcXMLElement &game, gcRefPtr<WildcardManager> &pWildCard, const XML::gcXMLElement &info)
{
pWildCard->updateInstallWildcard("INSTALL_PATH", "INSTALL_PATH");
pWildCard->updateInstallWildcard("PARENT_INSTALL_PATH", "%INSTALL_PATH%");
gcString name = game.GetChild("name");
if (name == "" && info.IsValid())
name = info.GetChild("name");
if (name == "")
return;
if (m_bTriggerNewEvent)
onNewItemEvent(name);
triggerProgress();
m_uiDone++;
UserCore::Misc::InstallInfo temp(id);
try
{
if (info.IsValid())
temp.loadXmlData(info, pWildCard);
temp.loadXmlData(game, pWildCard);
}
catch (gcException &except)
{
Warning("ItemWizard: Error in xml parsing (installed wizard, games): {0}\n", except);
return;
}
if (m_bTriggerNewEvent)
onGameFound(temp);
else
m_vGameList.push_back(temp);
pWildCard->updateInstallWildcard("INSTALL_PATH", "INSTALL_PATH");
pWildCard->updateInstallWildcard("PARENT_INSTALL_PATH", temp.getPath());
std::map<uint64, XML::gcXMLElement> mModMap;
info.FirstChildElement("mods").for_each_child("mods", [&mModMap, this](const XML::gcXMLElement &mod)
{
if (isStopped())
return;
const std::string szId = mod.GetAtt("siteareaid");
DesuraId internId(szId.c_str(), "mods");
if (internId.isOk())
mModMap[internId.toInt64()] = mod;
});
game.FirstChildElement("mods").for_each_child("mods", [&](const XML::gcXMLElement &mod)
{
if (isStopped())
return;
const std::string szId = mod.GetAtt("siteareaid");
DesuraId internId(szId.c_str(), "mods");
if (internId.isOk())
parseMod(id, internId, mod, pWildCard, mModMap[internId.toInt64()]);
});
}
开发者ID:EasyCoding,项目名称:desura-app,代码行数:69,代码来源:InstalledWizardThread.cpp
示例18: parseXml
void ToolManager::parseXml(const XML::gcXMLElement &toolinfoNode)
{
if (!toolinfoNode.IsValid())
return;
auto toolsNode = toolinfoNode.FirstChildElement("tools");
if (!toolsNode.IsValid())
return;
WildcardManager wcm;
wcm.onNeedInstallSpecialEvent += delegate(this, &ToolManager::onSpecialCheck);
wcm.onNeedSpecialEvent += delegate(m_pUser->getNeedWildCardEvent());
auto wildcardNode = toolinfoNode.FirstChildElement("wcards");
if (wildcardNode.IsValid())
wcm.parseXML(wildcardNode);
//clear the java path value
WildcardInfo* temp = wcm.findItem("JAVA_EXE");
if (temp)
{
temp->m_szPath = "";
temp->m_bResolved = true;
}
bool is64OS = UTIL::OS::is64OS();
toolsNode.for_each_child("tool", [this, is64OS, &wcm](const XML::gcXMLElement &toolEl)
{
bool isTool64 = false;
toolEl.GetChild("bit64", isTool64);
if (isTool64 && !is64OS)
return;
const std::string id = toolEl.GetAtt("siteareaid");
if (id.empty())
return;
DesuraId tid(id.c_str(), "tools");
ToolInfo* tool = this->findItem(tid.toInt64());
bool bAdd = false;
if (!tool)
{
tool = new ToolInfo(tid);
bAdd = true;
}
tool->parseXml(toolEl, &wcm, m_pUser->getAppDataPath());
if (bAdd)
this->addItem(tool);
});
postParseXml();
}
开发者ID:CSRedRat,项目名称:desura-app,代码行数:63,代码来源:ToolManager.cpp
示例19: checkAppUpdate
void UpdateThreadOld::checkAppUpdate(const XML::gcXMLElement &uNode, std::function<void(uint32, uint32, bool)> &updateCallback)
{
auto processAppVersion = [&](const char* szNodeName, uint32 &appid, uint32 &mcfversion)
{
appid = 0;
mcfversion = 0;
auto appEl = uNode.FirstChildElement(szNodeName);
if (!appEl.IsValid())
return false;
auto id = appEl.GetAtt("id");
auto ver = appEl.GetText();
if (!id.empty())
appid = Safe::atoi(id.c_str());
if (!ver.empty())
mcfversion = Safe::atoi(ver.c_str());
return appid != 0 && mcfversion != 0;
};
auto isInternalApp = [](uint32 appid)
{
return appid >= 500 && appid < 600;
};
uint32 mcfversion = 0;
uint32 appid = 0;
bool bIsNewerVersion = false;
bool bIsForced = false;
bool bIsQa = false;
#ifdef DESURA_OFFICIAL_BUILD
if (m_bInternalTesting)
{
Msg("Checking internal testing for app update...\n");
if (!processAppVersion("apptesting", appid, mcfversion) || !isInternalApp(appid))
{
Warning("Failed to find qa testing build on update poll");
if (!processAppVersion("app", appid, mcfversion))
return;
}
else
{
Msg(gcString("Found qa app build {0}.{1}\n", appid, mcfversion));
if (m_bForceTestingUpdate)
{
Msg("Forcing testing update..\n");
bIsForced = true;
bIsNewerVersion = true;
}
m_bForceTestingUpdate = false;
bIsQa = true;
}
}
else if (!processAppVersion("app", appid, mcfversion))
{
return;
}
#else
if (!processAppVersion("app", appid, mcfversion))
{
return;
}
#endif
auto bNewerOriginalBranch = (m_uiLastAppId == 0) && (appid == m_iAppId) && (mcfversion > m_iAppVersion);
auto bNewerLastUpdateBranch = (appid == m_uiLastAppId) && (mcfversion > m_uiLastVersion);
auto bDiffBranch = (appid != m_iAppId) && (appid != m_uiLastAppId);
if (bNewerLastUpdateBranch || bNewerOriginalBranch || bDiffBranch)
bIsNewerVersion = true;
if (bIsNewerVersion)
{
#ifdef WIN32
if (bIsQa && mcfversion > 0)
{
//need to set appver back a build otherwise updater will ignore this build due to it being older than current
gcString strAppid("{0}", appid);
gcString strAppVer("{0}", mcfversion - 1);
m_pUser->getInternal()->getServiceMain()->updateRegKey(APPID, strAppid.c_str());
m_pUser->getInternal()->getServiceMain()->updateRegKey(APPBUILD, strAppVer.c_str());
}
#endif
updateCallback(appid, mcfversion, bIsForced);
m_uiLastAppId = appid;
m_uiLastVersion = mcfversion;
//.........这里部分代码省略.........
开发者ID:EasyCoding,项目名称:desura-app,代码行数:101,代码来源:UpdateThread_Old.cpp
注:本文中的xml::gcXMLElement类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论