X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FConfig%2FConfig_XMLReader.cpp;h=a9c56d7de1acb8c18b163c42197791899702ffbc;hb=06e7f5859095193fc7f498bd89a7d28009794f53;hp=0ab7ce325ab49fb54694def552a30ed183b7d54d;hpb=95bf0a0de36129d80569e2b4634650b9cc38733e;p=modules%2Fshaper.git diff --git a/src/Config/Config_XMLReader.cpp b/src/Config/Config_XMLReader.cpp index 0ab7ce325..a9c56d7de 100644 --- a/src/Config/Config_XMLReader.cpp +++ b/src/Config/Config_XMLReader.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2014-2017 CEA/DEN, EDF R&D +// Copyright (C) 2014-2023 CEA, EDF // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -12,10 +12,9 @@ // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ or -// email : webmaster.salome@opencascade.com +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include @@ -46,12 +45,15 @@ static const char FSEP = '/'; #endif -Config_XMLReader::Config_XMLReader(const std::string& theXmlFileName) +Config_XMLReader::Config_XMLReader(const std::string& theXmlFileName, bool isXMLContent) : myXmlDoc(NULL), myRootFileName(theXmlFileName) { - myDocumentPath = findConfigFile(theXmlFileName); - if (myDocumentPath.empty()) { - Events_InfoMessage("Config_XMLReader", "Unable to open %1").arg(theXmlFileName).send(); + isFromMemory = isXMLContent; + if (!isXMLContent) { + myDocumentPath = findConfigFile(theXmlFileName); + if (myDocumentPath.empty()) { + Events_InfoMessage("Config_XMLReader", "Unable to open %1").arg(theXmlFileName).send(); + } } } @@ -60,6 +62,23 @@ Config_XMLReader::~Config_XMLReader() xmlFreeDoc(myXmlDoc); } +// LCOV_EXCL_START +std::string Config_XMLReader::resourcesConfigFile() +{ + std::string aValue; + char* anEnv = getenv("SHAPER_ROOT_DIR"); + if (anEnv) { + aValue = std::string(anEnv) + + FSEP + "share" + FSEP + "salome" + FSEP + "resources" + FSEP + "shaper"; + } else { + anEnv = getenv("CADBUILDER_ROOT_DIR"); + if (anEnv) { + aValue = std::string(anEnv) + FSEP + "resources"; + } + } + return aValue; +} + std::string Config_XMLReader::pluginConfigFile() { std::string aValue; @@ -68,13 +87,14 @@ std::string Config_XMLReader::pluginConfigFile() aValue = std::string(anEnv) + FSEP + "share" + FSEP + "salome" + FSEP + "resources" + FSEP + "shaper"; } else { - anEnv = getenv("OPENPARTS_ROOT_DIR"); + anEnv = getenv("CADBUILDER_ROOT_DIR"); if (anEnv) { aValue = std::string(anEnv) + FSEP + "plugins"; } } return aValue; } +// LCOV_EXCL_STOP std::string Config_XMLReader::findConfigFile(const std::string theFileName, const int theFindIndex) { @@ -91,14 +111,15 @@ std::string Config_XMLReader::findConfigFile(const std::string theFileName, cons if (aSolution == 1) anEnvName<<"SHAPER_ROOT_DIR"; else if (aSolution == 2) - anEnvName<<"OPENPARTS_ROOT_DIR"; + anEnvName<<"CADBUILDER_ROOT_DIR"; else - anEnvName<<"OPENPARTS_PLUGINS_DIR"; + anEnvName<<"CADBUILDER_ROOT_DIR"; char* anEnv = getenv(anEnvName.str().c_str()); if (!anEnv) continue; if (aSolution > 2) { // there may be several paths separated by ";" symbol +// LCOV_EXCL_START std::string anEnvPart = anEnv; size_t aPosStart = 0, aPosEnd; for(int aSubNum = 0; aSubNum < aSolution - 3; aSubNum++) { @@ -114,6 +135,7 @@ std::string Config_XMLReader::findConfigFile(const std::string theFileName, cons aPosEnd = anEnvPart.find(';', aPosStart); aFileName = anEnvPart.substr(aPosStart, aPosEnd == std::string::npos ? aPosEnd : aPosEnd - aPosStart) + FSEP; +// LCOV_EXCL_STOP } else { aFileName = std::string(anEnv) + FSEP; } @@ -129,7 +151,7 @@ std::string Config_XMLReader::findConfigFile(const std::string theFileName, cons if (aResultIndex == theFindIndex) return aFileName; aResultIndex++; - if (aSolution == 1) // don't allow SHAPER and OpenParts paths treated simultaneously + if (aSolution == 1) // don't allow SHAPER and CADBuilder paths treated simultaneously aSolution++; } } @@ -138,6 +160,13 @@ std::string Config_XMLReader::findConfigFile(const std::string theFileName, cons void Config_XMLReader::readAll() { + if (isFromMemory) { + myXmlDoc = xmlParseMemory(myRootFileName.c_str(), (int)myRootFileName.length()); + xmlNodePtr aRoot = xmlDocGetRootElement(myXmlDoc); + readRecursively(aRoot); + return; + } + // to load external modules dependencies (like GEOM for Connector Feature) Config_ModuleReader::loadScript("salome.shaper.initConfig", false); @@ -173,10 +202,12 @@ void Config_XMLReader::cleanup(xmlNodePtr) // do nothing; } -bool Config_XMLReader::processChildren(xmlNodePtr aNode) +// LCOV_EXCL_START +bool Config_XMLReader::processChildren(xmlNodePtr /*aNode*/) { return true; } +// LCOV_EXCL_STOP xmlNodePtr Config_XMLReader::findRoot(const std::string theDocumentPath) { @@ -218,10 +249,12 @@ void Config_XMLReader::readRecursively(xmlNodePtr theParent) } } +// LCOV_EXCL_START xmlNodePtr Config_XMLReader::node(void* theNode) { return static_cast(theNode); } +// LCOV_EXCL_STOP std::string Config_XMLReader::getNodeName(xmlNodePtr theNode) { @@ -242,10 +275,12 @@ void Config_XMLReader::storeAttribute(xmlNodePtr theNode, const char* theAttribu } } +// LCOV_EXCL_START std::string Config_XMLReader::restoreAttribute(xmlNodePtr theNode, const char* theAttribute) { return restoreAttribute(getNodeName(theNode).c_str(), theAttribute); } +// LCOV_EXCL_STOP std::string Config_XMLReader::restoreAttribute(const char* theNodeName, const char* theAttribute) { @@ -274,7 +309,9 @@ bool Config_XMLReader::cleanupAttribute(const char* theNodeName, const char* the return result; } +// LCOV_EXCL_START const char* Config_XMLReader::encoding() const { return (const char*) myXmlDoc->encoding; -} \ No newline at end of file +} +// LCOV_EXCL_STOP