#include <HYDROData.h>
+#include <NCollection_Sequence.hxx>
#include <TDF_Label.hxx>
-#include <QString>
+#include <QMap>
+
+class QString;
+class QVariant;
+class QStringList;
///! Kind of an object in a document
typedef int ObjectKind;
///! Unrecognized object
const ObjectKind KIND_UNKNOWN = 0;
const ObjectKind KIND_IMAGE = 1;
+const ObjectKind KIND_POLYLINE = 2;
+const ObjectKind KIND_VISUAL_STATE = 3;
+const ObjectKind KIND_BATHYMETRY = 4;
DEFINE_STANDARD_HANDLE(HYDROData_Object, MMgt_TShared)
+typedef QMap<QString,Handle(Standard_Transient)> MapOfTreatedObjects;
+
/**\class HYDROData_Object
* \brief Generic class of any object in the data model.
*
*/
class HYDROData_Object : public MMgt_TShared
{
+protected:
+ /**
+ * Enumeration of tags corresponding to the persistent object parameters.
+ */
+ enum DataTag
+ {
+ DataTag_First = 0 ///< first tag, to reserve
+ // ...
+ };
+
public:
DEFINE_STANDARD_RTTI(HYDROData_Object);
*/
HYDRODATA_EXPORT void SetName(const QString& theName);
+ /**
+ * Dump object to Python script representation.
+ * Base implementation returns empty list,
+ * You should reimplement this function in your derived class if it
+ * has Python API and can be imported/exported from/to Python script.
+ */
+ HYDRODATA_EXPORT virtual QStringList DumpToPython( MapOfTreatedObjects& theTreatedObjects ) const;
+
+ /**
+ * Updates object state.
+ * Base implementation dose nothing.
+ */
+ HYDRODATA_EXPORT virtual void Update();
+
+ /**
+ * Returns data of object wrapped to QVariant.
+ * Base implementation returns null value.
+ */
+ HYDRODATA_EXPORT virtual QVariant GetDataVariant();
+
/**
* Checks is object exists in the data structure.
* \returns true is object is not exists in the data model
*/
HYDRODATA_EXPORT void CopyTo(Handle_HYDROData_Object theDestination) const;
+ /**
+ * Returns the label of this object.
+ */
+ HYDRODATA_EXPORT TDF_Label& Label() {return myLab;}
+
protected:
friend class HYDROData_Iterator;
HYDRODATA_EXPORT virtual void SetLabel(TDF_Label theLabel);
/**
- * Returns the label of this object.
+ * Internal method that used to store the byte array attribute
+ * \param theTag tag of a label to store attribute (for 0 this is myLab)
+ * \param theData pointer to bytes array
+ * \param theLen number of bytes in byte array that must be stored
+ */
+ void SaveByteArray(const int theTag, const char* theData, const int theLen);
+
+ /**
+ * Internal method that used to retreive the content of byte array attribute
+ * \param theTag tag of a label that keeps the attribute (for 0 this is myLab)
+ * \param theLen number of bytes in byte array
+ * \returns pointer to the internal data structure wit harray content,
+ * or NULL if array size is zero
*/
- TDF_Label& Label() {return myLab;}
+ const char* ByteArray(const int theTag, int& theLen) const;
protected:
/// Array of pointers to the properties of this object; index in this array is returned by \a AddProperty.
TDF_Label myLab; ///< label of this object
};
+typedef NCollection_Sequence<Handle_HYDROData_Object> HYDROData_SequenceOfObjects;
+
///! Is Equal for HYDROData_Object mapping
HYDRODATA_EXPORT bool IsEqual(const Handle_HYDROData_Object& theObj1, const Handle_HYDROData_Object& theObj2);