Salome HOME
The "concealment" attribute added
[modules/shaper.git] / src / Config / Config_FeatureReader.h
index 117e8bd6ce18748c66e0e6bfedf2d05857cca997..92a9d705fc630b2bc17ce1d5b387eb8a40e89c3f 100644 (file)
@@ -8,31 +8,48 @@
 #ifndef CONFIG_FEATUREREADER_H_
 #define CONFIG_FEATUREREADER_H_
 
-#include <Config.h>
+#include <Config_def.h>
 #include <Config_XMLReader.h>
+#include <boost/shared_ptr.hpp>
 
 #include <string>
-
+#include <list>
+#include <map>
 
 class Config_FeatureMessage;
 
-class CONFIG_EXPORT 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();
 
-protected:
+  std::list<std::string> features() const;
+
+ 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;
+  /// event generated on feature data sending, by default it is EVENT_FEATURE_LOADED
+  const char* myEventGenerated;
 };
 
 #endif /* CONFIG_FEATUREREADER_H_ */