+public:
+ /** \class DumpStorage
+ * \ingroup CPPHighAPI
+ * \brief Storage for the dumped data. Process selection attributes to be dumped by naming.
+ */
+ class DumpStorage
+ {
+ public:
+ DumpStorage() {}
+ MODELHIGHAPI_EXPORT DumpStorage(const DumpStorage& theOther);
+ MODELHIGHAPI_EXPORT const DumpStorage& operator=(const DumpStorage& theOther);
+
+ void setFilenameSuffix(const std::string& theSuffix) { myFilenameSuffix = theSuffix; }
+
+ protected:
+ std::ostringstream& buffer() { return myDumpBuffer; }
+ std::ostringstream& fullDump() { return myFullDump; }
+
+ MODELHIGHAPI_EXPORT virtual void reserveBuffer();
+ MODELHIGHAPI_EXPORT virtual void restoreReservedBuffer();
+
+ MODELHIGHAPI_EXPORT
+ virtual void write(const std::shared_ptr<ModelAPI_AttributeSelection>& theAttrSelect);
+
+ MODELHIGHAPI_EXPORT
+ virtual bool exportTo(const std::string& theFilename, const ModulesSet& theUsedModules);
+
+ private:
+ std::string myFilenameSuffix;
+ std::ostringstream myDumpBuffer;
+ std::ostringstream myFullDump;
+
+ std::stack<std::string> myDumpBufferHideout;
+
+ friend class ModelHighAPI_Dumper;
+ };
+ typedef std::shared_ptr<DumpStorage> DumpStoragePtr;
+
+ /** \class DumpStorageGeom
+ * \ingroup CPPHighAPI
+ * \brief Process selection attributes to be dumped by geometric properties.
+ */
+ class DumpStorageGeom : public DumpStorage
+ {
+ protected:
+ MODELHIGHAPI_EXPORT
+ virtual void write(const std::shared_ptr<ModelAPI_AttributeSelection>& theAttrSelect);
+ };
+
+ /** \class DumpStorageWeak
+ * \ingroup CPPHighAPI
+ * \brief Process selection attributes to be dumped by weak naming.
+ */
+ class DumpStorageWeak : public DumpStorage
+ {
+ protected:
+ MODELHIGHAPI_EXPORT
+ virtual void write(const std::shared_ptr<ModelAPI_AttributeSelection>& theAttrSelect);
+ };
+