#include <HYDROData_Document.h>
%End
+%ModuleHeaderCode
+HYDROData_Entity* copyObject( HYDROData_Entity* theObject );
+Handle(HYDROData_Entity) createHandle( HYDROData_Entity* theObject );
+HYDROData_Entity* createPointer( const Handle(HYDROData_Entity)& theObject );
+%End
+
enum Data_DocError {
DocError_OK = 0, ///< success
DocError_ResourcesProblem, ///< resources files are invalid or not found
DocError_UnknownProblem ///< problem has unknown nature
};
-class HYDROData_Document
+class HYDROData_Document
{
%TypeHeaderCode
#include <HYDROData_Document.h>
sipClass = NULL;
%End
+%TypeCode
+
+ HYDROData_Entity* copyObject( HYDROData_Entity* theObject )
+ {
+ HYDROData_Entity* aRes = NULL;
+ if ( theObject == NULL )
+ return aRes;
+
+ switch( theObject->GetKind() )
+ {
+ case KIND_IMAGE:
+ {
+ aRes = new HYDROData_Image( *dynamic_cast<HYDROData_Image*>( theObject ) );
+ break;
+ }
+ case KIND_BATHYMETRY:
+ {
+ aRes = new HYDROData_Bathymetry( *dynamic_cast<HYDROData_Bathymetry*>( theObject ) );
+ break;
+ }
+ case KIND_IMMERSIBLE_ZONE:
+ {
+ aRes = new HYDROData_ImmersibleZone( *dynamic_cast<HYDROData_ImmersibleZone*>( theObject ) );
+ break;
+ }
+ case KIND_PROFILEUZ:
+ {
+ aRes = new HYDROData_ProfileUZ( *dynamic_cast<HYDROData_ProfileUZ*>( theObject ) );
+ break;
+ }
+ case KIND_POLYLINEXY:
+ {
+ aRes = new HYDROData_PolylineXY( *dynamic_cast<HYDROData_PolylineXY*>( theObject ) );
+ break;
+ }
+ case KIND_CALCULATION:
+ {
+ aRes = new HYDROData_CalculationCase( *dynamic_cast<HYDROData_CalculationCase*>( theObject ) );
+ break;
+ }
+ case KIND_REGION:
+ {
+ aRes = new HYDROData_Region( *dynamic_cast<HYDROData_Region*>( theObject ) );
+ break;
+ }
+ case KIND_ZONE:
+ {
+ aRes = new HYDROData_Zone( *dynamic_cast<HYDROData_Zone*>( theObject ) );
+ break;
+ }
+ }
+
+ return aRes;
+ }
+
+ Handle(HYDROData_Entity) createHandle( HYDROData_Entity* theObject )
+ {
+ Handle(HYDROData_Entity) aRes = copyObject( theObject );
+ return aRes;
+ }
+
+ HYDROData_Entity* createPointer( const Handle(HYDROData_Entity)& theObject )
+ {
+ HYDROData_Entity* aRes = NULL;
+
+ if ( !theObject.IsNull() )
+ aRes = copyObject( theObject.operator->() );
+
+ return aRes;
+ }
+
+%End
+
public:
//! Returns the existing document or creates new if it is not exist
static HYDROData_Document Document( const int theStudyID ) [Handle_HYDROData_Document (const int)] ;
%MethodCode
+ Handle(HYDROData_Document) aDocument;
+
Py_BEGIN_ALLOW_THREADS
- Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( a0 );
+ aDocument = HYDROData_Document::Document( a0 );
+ Py_END_ALLOW_THREADS
+
if ( !aDocument.IsNull() )
- {
sipRes = aDocument.operator->();
- }
-
- Py_END_ALLOW_THREADS
-
+
%End
//! Returns true if data model contains document for this study
//! Creates and locates in the document a new object
//! \param theKind kind of the created object, can not be UNKNOWN
//! \returns the created object
- HYDROData_Object CreateObject( const ObjectKind theKind ) [Handle_HYDROData_Object (const ObjectKind)] ;
+ HYDROData_Entity CreateObject( const ObjectKind theKind ) [Handle_HYDROData_Entity (const ObjectKind)] ;
%MethodCode
+ Handle(HYDROData_Entity) anObject;
Py_BEGIN_ALLOW_THREADS
-
- Handle(HYDROData_Object) anObject =
- sipSelfWasArg ? sipCpp->HYDROData_Document::CreateObject( a0 ) : sipCpp->CreateObject( a0 );
- if ( !anObject.IsNull() )
- {
- switch( anObject->GetKind() )
- {
- case KIND_BATHYMETRY:
- {
- Handle(HYDROData_Bathymetry) aBathymetry =
- Handle(HYDROData_Bathymetry)::DownCast( anObject );
- sipRes = new HYDROData_Bathymetry( *aBathymetry.operator->() );
- break;
- }
- }
- }
-
+ anObject = sipSelfWasArg ? sipCpp->HYDROData_Document::CreateObject( a0 ) :
+ sipCpp->CreateObject( a0 );
Py_END_ALLOW_THREADS
+
+ sipRes = createPointer( anObject );
%End
protected:
- //friend class HYDROData_Iterator;
- //friend class test_HYDROData_Document;
-
//! Creates new document: private because "Document" method must be used instead of direct creation.
HYDROData_Document();