#include <Config_def.h>
#include <Config_XMLReader.h>
+#include <boost/shared_ptr.hpp>
#include <string>
#include <list>
+#include <map>
class Config_FeatureMessage;
-class Config_FeatureReader: public Config_XMLReader
+class Config_FeatureReader : public Config_XMLReader
{
-public:
- Config_FeatureReader(const std::string& theXmlFile,
- const std::string& theLibraryName,
+ public:
+ Config_FeatureReader(const std::string& theXmlFile, const std::string& theLibraryName,
const char* theEventGenerated = 0);
virtual ~Config_FeatureReader();
std::list<std::string> features() const;
-protected:
+ protected:
void processNode(xmlNodePtr aNode);
bool processChildren(xmlNodePtr aNode);
- void fillFeature(xmlNodePtr theRoot, Config_FeatureMessage& outFeatureMessage);
+ void fillFeature(xmlNodePtr theRoot,
+ const boost::shared_ptr<Config_FeatureMessage>& outFeatureMessage);
bool isInternalFeature(xmlNodePtr theRoot);
-private:
- std::string myLastWorkbench;
- std::string myLastGroup;
+ void storeAttribute(xmlNodePtr theNode, const char* theNodeAttribute);
+ std::string restoreAttribute(xmlNodePtr theNode, const char* theNodeAttribute);
+ std::string restoreAttribute(const char* theNodeName, const char* theNodeAttribute);
+
+ private:
+ /// A map to store all parent's attributes.
+ /// The key has from "Node_Name:Node_Attribute"
+ std::map<std::string, std::string> myParentAttributes;
+ //std::string myLastWorkbench;
+ //std::string myLastGroup;
std::string myLibraryName;
std::list<std::string> myFeatures;