My Project
EpcDocument.h
1 /*-----------------------------------------------------------------------
2 Copyright F2I-CONSULTING, (2014-2016)
3 
4 philippe.verney@f2i-consulting.com
5 
6 This software is a computer program whose purpose is to access to data formatted using Energistics standards.
7 
8 This software is governed by the CeCILL-B license under French law and
9 abiding by the rules of distribution of free software. You can use,
10 modify and/ or redistribute the software under the terms of the CeCILL-B
11 license as circulated by CEA, CNRS and INRIA at the following URL
12 "http://www.cecill.info".
13 
14 As a counterpart to the access to the source code and rights to copy,
15 modify and redistribute granted by the license, users are provided only
16 with a limited warranty and the software's author, the holder of the
17 economic rights, and the successive licensors have only limited
18 liability.
19 
20 In this respect, the user's attention is drawn to the risks associated
21 with loading, using, modifying and/or developing or reproducing the
22 software by the user in light of its specific status of free software,
23 that may mean that it is complicated to manipulate, and that also
24 therefore means that it is reserved for developers and experienced
25 professionals having in-depth computer knowledge. Users are therefore
26 encouraged to load and test the software's suitability as regards their
27 requirements in conditions enabling the security of their systems and/or
28 data to be ensured and, more generally, to use and operate it in the
29 same conditions as regards security.
30 
31 The fact that you are presently reading this means that you have had
32 knowledge of the CeCILL-B license and that you accept its terms.
33 -----------------------------------------------------------------------*/
34 #pragma once
35 
36 #include <string>
37 #include <vector>
38 #include <limits>
39 #include <stdexcept>
40 
41 #include "proxies/stdsoap2.h"
42 #include "proxies/gsoap_resqml2_0_1H.h"
43 #include "proxies/gsoap_witsml1_4_1_1H.h"
44 
45 #include "epc/Package.h"
46 
47 #if (defined(_WIN32) && _MSC_VER < 1600) || (defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6)))
48 #include "tools/nullptr_emulation.h"
49 #endif
50 
51 #if defined(_WIN32) && defined(FESAPI_DLL)
52  #ifdef FesapiCpp_EXPORTS
53  #define DLL_IMPORT_OR_EXPORT __declspec(dllexport)
54  #else
55  #define DLL_IMPORT_OR_EXPORT __declspec(dllimport)
56  #endif
57 #else
58  #define DLL_IMPORT_OR_EXPORT
59 #endif
60 
61 namespace resqml2
62 {
63  class AbstractObject;
64  class AbstractFeature;
65  class AbstractFeatureInterpretation;
66  class AbstractHdfProxy;
67  class AbstractLocal3dCrs;
68  class AbstractRepresentation;
69  class Activity;
70  class ActivityTemplate;
71  class GridConnectionSetRepresentation;
72  class MdDatum;
73  class PropertyKind;
74  class SubRepresentation;
75  class TimeSeries;
76  class RepresentationSetRepresentation;
77 }
78 
79 namespace resqml2_0_1
80 {
81  class Activity;
82  class ActivityTemplate;
83  class PropertyKindMapper;
84  class LocalDepth3dCrs;
85  class LocalTime3dCrs;
86  class Fault;
87  class Fracture;
88  class Horizon;
89  class WellboreFeature;
90  class SeismicLineFeature;
91  class StratigraphicUnitFeature;
92  class PolylineSetRepresentation;
93  class PolylineRepresentation;
94  class TriangulatedSetRepresentation;
95  class Grid2dSetRepresentation;
96  class Grid2dRepresentation;
97  class WellboreTrajectoryRepresentation;
98  class AbstractIjkGridRepresentation;
99  class IjkGridExplicitRepresentation;
100  class IjkGridParametricRepresentation;
101  class IjkGridLatticeRepresentation;
102  class IjkGridNoGeometryRepresentation;
103  class UnstructuredGridRepresentation;
104  class BoundaryFeature;
105  class BoundaryFeatureInterpretation;
106  class TectonicBoundaryFeature;
107  class SeismicLatticeFeature;
108  class SeismicLineSetFeature;
109  class OrganizationFeature;
110  class GenericFeatureInterpretation;
111  class HorizonInterpretation;
112  class FaultInterpretation;
113  class WellboreInterpretation;
114  class EarthModelInterpretation;
115  class StructuralOrganizationInterpretation;
116  class StratigraphicUnitInterpretation;
117  class StratigraphicColumn;
118  class StratigraphicColumnRankInterpretation;
119  class PointSetRepresentation;
120  class WellboreFrameRepresentation;
121  class WellboreMarkerFrameRepresentation;
122  class NonSealedSurfaceFrameworkRepresentation;
123  class SealedSurfaceFrameworkRepresentation;
124  class StringTableLookup;
125  class CommentProperty;
126  class ContinuousProperty;
127  class ContinuousPropertySeries;
128  class DiscreteProperty;
129  class DiscretePropertySeries;
130  class CategoricalProperty;
131  class CategoricalPropertySeries;
132  class AbstractOrganizationInterpretation;
133  class AbstractGridRepresentation;
134  class OrganizationFeature;
135  class StratigraphicOccurrenceInterpretation;
136  class FrontierFeature;
137  class PlaneSetRepresentation;
138  class FluidBoundaryFeature;
139  class BlockedWellboreRepresentation;
140 }
141 
142 namespace witsml1_4_1_1
143 {
144  class AbstractObject;
145  class Well;
146  class CoordinateReferenceSystem;
147  class Trajectory;
148 }
149 
150 namespace common
151 {
155  class DLL_IMPORT_OR_EXPORT EpcDocument
156  {
157  public:
158 
159  enum openingMode { READ_ONLY = 0, READ_WRITE = 1, OVERWRITE = 2 };
160 
161  EpcDocument(const std::string & fileName, const openingMode & hdf5PermissionAccess = READ_ONLY);
162  EpcDocument(const std::string & fileName, const std::string & propertyKindMappingFilesDirectory, const openingMode & hdf5PermissionAccess = READ_ONLY);
163 
167  virtual ~EpcDocument() { close(); }
168 
169  // A function pointer definition which allows to build an abstract hdf proxy in writing mode of an epc document
170  typedef resqml2::AbstractHdfProxy* (HdfProxyBuilder)(soap* soapContext, const std::string & guid, const std::string & title, const std::string & packageDirAbsolutePath, const std::string & externalFilePath);
171  // A function pointer which allows to build a v2.0.1 abstract hdf proxy in reading mode of an epc document
172  typedef resqml2::AbstractHdfProxy* (HdfProxyBuilderFromGsoapProxy2_0_1)(gsoap_resqml2_0_1::_eml__EpcExternalPartReference* fromGsoap, const std::string & packageDirAbsolutePath, const std::string & externalFilePath);
173 #ifdef WITH_RESQML2_1
174  // A function pointer which allows to build a v2.0.1 abstract hdf proxy in reading mode of an epc document
175  typedef resqml2::AbstractHdfProxy* (HdfProxyBuilderFromGsoapProxy2_1)(gsoap_resqml2_1::_eml__EpcExternalPartReference* fromGsoap, const std::string & packageDirAbsolutePath, const std::string & externalFilePath);
176 #endif
177 
178  // Allows a fesapi user to set a different builder of Hdf Proxy than the default one in writing mode of an epc document
179  // This is especially useful when the fesapi users wants to use its own builder for example.
180  void set_hdf_proxy_builder(HdfProxyBuilder builder);
181  void set_hdf_proxy_builder(HdfProxyBuilderFromGsoapProxy2_0_1 builder);
182 #ifdef WITH_RESQML2_1
183  void set_hdf_proxy_builder(HdfProxyBuilderFromGsoapProxy2_1 builder);
184 #endif
185 
191  void open(const std::string & fileName, const openingMode & hdf5PermissionAccess = READ_ONLY);
192 
196  void close();
197 
198  const openingMode & getHdf5PermissionAccess() const;
199 
204  void setFilePath(const std::string & filePath);
205 
209  virtual void serialize(bool useZip64 = false);
210 
215  virtual std::string deserialize();
216 
220  soap* getGsoapContext() const;
221 
225  void addGsoapProxy(resqml2::AbstractObject* proxy);
226 
230  void addGsoapProxy(witsml1_4_1_1::AbstractObject* proxy);
231 
236  resqml2_0_1::PropertyKindMapper* getPropertyKindMapper() const;
237 
242  std::string getEnergisticsPropertyKindName(const gsoap_resqml2_0_1::resqml2__ResqmlPropertyKind & energisticsPropertyKind) const;
243 
248  gsoap_resqml2_0_1::resqml2__ResqmlPropertyKind getEnergisticsPropertyKind(const std::string & energisticsPropertyKindName) const;
249 
254  std::string getEnergisticsUnitOfMeasureName(const gsoap_resqml2_0_1::resqml2__ResqmlUom & energisticsUom) const;
255 
260  gsoap_resqml2_0_1::resqml2__ResqmlUom getEnergisticsUnitOfMeasure(const std::string & energisticsUomName) const;
261 
266  std::string getFacet(const gsoap_resqml2_0_1::resqml2__Facet & facet) const;
267 
272  gsoap_resqml2_0_1::resqml2__Facet getFacet(const std::string & facet) const;
273 
278  std::string getWitsmlLengthUom(const gsoap_witsml1_4_1_1::witsml1__LengthUom & witsmlUom) const;
279 
284  std::string getWitsmlWellVerticalCoordinateUom(const gsoap_witsml1_4_1_1::witsml1__WellVerticalCoordinateUom & witsmlUom) const;
285 
290  std::string getWitsmlMeasuredDepthUom(const gsoap_witsml1_4_1_1::witsml1__MeasuredDepthUom & witsmlUom) const;
291 
296  std::string getWitsmlPlaneAngleUom(const gsoap_witsml1_4_1_1::witsml1__PlaneAngleUom & witsmlUom) const;
297 
301 #if (defined(_WIN32) && _MSC_VER >= 1600) || defined(__APPLE__)
302  const std::unordered_map< std::string, resqml2::AbstractObject* > & getResqmlAbstractObjectSet() const;
303 #else
304  const std::tr1::unordered_map< std::string, resqml2::AbstractObject* > & getResqmlAbstractObjectSet() const;
305 #endif
306 
310  resqml2::AbstractObject* getResqmlAbstractObjectByUuid(const std::string & uuid, int & gsoapType) const;
311 
315  resqml2::AbstractObject* getResqmlAbstractObjectByUuid(const std::string & uuid) const;
316 
321  template <class valueType>
322  valueType* getResqmlAbstractObjectByUuid(const std::string & uuid) const
323  {
324  resqml2::AbstractObject* const result = getResqmlAbstractObjectByUuid(uuid);
325 
326  if (result == nullptr) {
327  return nullptr;
328  }
329 
330  if (dynamic_cast<valueType*>(result) != nullptr) {
331  return static_cast<valueType*>(result);
332  }
333 
334  throw std::invalid_argument("The uuid " + uuid + " does not resolve to the expected datatype");
335  }
336 
337  witsml1_4_1_1::AbstractObject* getWitsmlAbstractObjectByUuid(const std::string & uuid) const;
338 
342  const std::vector<resqml2_0_1::LocalDepth3dCrs*> & getLocalDepth3dCrsSet() const;
343 
347  const std::vector<resqml2_0_1::LocalTime3dCrs*> & getLocalTime3dCrsSet() const;
348 
352  const std::vector<resqml2_0_1::StratigraphicColumn*> & getStratigraphicColumnSet() const;
353 
357  const std::vector<resqml2_0_1::Fault*> & getFaultSet() const;
358 
362  const std::vector<resqml2_0_1::Fracture*> & getFractureSet() const;
363 
367  std::vector<resqml2_0_1::PolylineSetRepresentation*> getFaultPolylineSetRepSet() const;
368 
372  std::vector<resqml2_0_1::PolylineSetRepresentation*> getFracturePolylineSetRepSet() const;
373 
377  std::vector<resqml2_0_1::PolylineSetRepresentation*> getFrontierPolylineSetRepSet() const;
378 
382  std::vector<resqml2_0_1::TriangulatedSetRepresentation*> getFaultTriangulatedSetRepSet() const;
383 
387  std::vector<resqml2_0_1::TriangulatedSetRepresentation*> getFractureTriangulatedSetRepSet() const;
388 
392  const std::vector<resqml2_0_1::Horizon*> & getHorizonSet() const;
393 
397  std::vector<resqml2_0_1::Grid2dSetRepresentation*> getHorizonGrid2dSetRepSet() const;
398 
402  std::vector<resqml2_0_1::Grid2dRepresentation*> getHorizonGrid2dRepSet() const;
403 
407  std::vector<resqml2_0_1::PolylineRepresentation*> getHorizonPolylineRepSet() const;
408 
412  std::vector<resqml2_0_1::PolylineSetRepresentation*> getHorizonPolylineSetRepSet() const;
413 
417  std::vector<resqml2_0_1::TriangulatedSetRepresentation*> getHorizonTriangulatedSetRepSet() const;
418 
422  const std::vector<resqml2_0_1::TriangulatedSetRepresentation*> & getAllTriangulatedSetRepSet() const;
423 
427  std::vector<resqml2_0_1::TriangulatedSetRepresentation*> getUnclassifiedTriangulatedSetRepSet() const;
428 
432  const std::vector<resqml2_0_1::SeismicLineFeature*> & getSeismicLineSet() const;
433 
437  const std::vector<resqml2_0_1::WellboreFeature*> & getWellboreSet() const;
438 
442  std::vector<resqml2_0_1::WellboreTrajectoryRepresentation*> getWellboreCubicParamLineTrajRepSet() const;
443 
447  const std::vector<resqml2::RepresentationSetRepresentation*> & getRepresentationSetRepresentationSet() const;
448 
452  unsigned int getRepresentationSetRepresentationCount() const;
453 
457  resqml2::RepresentationSetRepresentation* getRepresentationSetRepresentation(const unsigned int & index) const;
458 
462  std::vector<resqml2_0_1::PolylineRepresentation*> getPolylineRepresentationSet() const;
463 
467  std::vector<resqml2_0_1::PolylineRepresentation*> getSeismicLinePolylineRepSet() const;
468 
472  const std::vector<resqml2_0_1::AbstractIjkGridRepresentation*> & getIjkGridRepresentationSet() const;
473  unsigned int getIjkGridRepresentationCount() const;
474  resqml2_0_1::AbstractIjkGridRepresentation* getIjkGridRepresentation(const unsigned int & i) const;
475 
479  std::vector<resqml2_0_1::IjkGridParametricRepresentation*> getIjkGridParametricRepresentationSet() const;
480 
484  std::vector<resqml2_0_1::IjkGridExplicitRepresentation*> getIjkGridExplicitRepresentationSet() const;
485 
489  std::vector<resqml2_0_1::IjkGridLatticeRepresentation*> getIjkSeismicCubeGridRepresentationSet() const;
490 
494  const std::vector<resqml2_0_1::UnstructuredGridRepresentation*> & getUnstructuredGridRepresentationSet() const;
495 
499  const std::vector<resqml2_0_1::FrontierFeature*> & getFrontierSet() const;
500 
504  const std::vector<resqml2_0_1::OrganizationFeature*> & getOrganizationSet() const;
505 
509  const std::vector<resqml2::TimeSeries*> & getTimeSeriesSet() const;
510 
514  const std::vector<resqml2::SubRepresentation*> & getSubRepresentationSet() const;
515  unsigned int getSubRepresentationCount() const;
516  resqml2::SubRepresentation* getSubRepresentation(const unsigned int & index) const;
517 
521  const std::vector<resqml2_0_1::PointSetRepresentation*> & getPointSetRepresentationSet() const;
522  unsigned int getPointSetRepresentationCount() const;
523  resqml2_0_1::PointSetRepresentation* getPointSetRepresentation(const unsigned int & index) const;
524 
528  const std::vector<resqml2::AbstractHdfProxy*> & getHdfProxySet() const;
529  unsigned int getHdfProxyCount() const;
530  resqml2::AbstractHdfProxy* getHdfProxy(const unsigned int & index) const;
531 
535  std::string getStorageDirectory() const;
536 
540  std::string getName() const;
541 
545  void updateAllRelationships();
546 
547 #if (defined(_WIN32) && _MSC_VER >= 1600) || defined(__APPLE__)
548  std::unordered_map< std::string, std::string > & getExtendedCoreProperty();
549 #else
550  std::tr1::unordered_map< std::string, std::string > & getExtendedCoreProperty();
551 #endif
552 
553  void setExtendedCoreProperty(const std::string & key, const std::string & value);
554 
559  std::string getExtendedCoreProperty(const std::string & key);
560 
561  //************************************
562  //************ HDF *******************
563  //************************************
564 
565  virtual resqml2::AbstractHdfProxy* createHdfProxy(const std::string & guid, const std::string & title, const std::string & packageDirAbsolutePath, const std::string & externalFilePath);
566 
567  //************************************
568  //************ CRS *******************
569  //************************************
570 
585  resqml2_0_1::LocalDepth3dCrs* createLocalDepth3dCrs(const std::string & guid, const std::string & title,
586  const double & originOrdinal1, const double & originOrdinal2, const double & originOrdinal3,
587  const double & arealRotation,
588  const gsoap_resqml2_0_1::eml__LengthUom & projectedUom, const unsigned long & projectedEpsgCode,
589  const gsoap_resqml2_0_1::eml__LengthUom & verticalUom, const unsigned int & verticalEpsgCode, const bool & isUpOriented);
590 
605  resqml2_0_1::LocalDepth3dCrs* createLocalDepth3dCrs(const std::string & guid, const std::string & title,
606  const double & originOrdinal1, const double & originOrdinal2, const double & originOrdinal3,
607  const double & arealRotation,
608  const gsoap_resqml2_0_1::eml__LengthUom & projectedUom, const std::string & projectedUnknownReason,
609  const gsoap_resqml2_0_1::eml__LengthUom & verticalUom, const std::string & verticalUnknownReason, const bool & isUpOriented);
610 
625  resqml2_0_1::LocalDepth3dCrs* createLocalDepth3dCrs(const std::string & guid, const std::string & title,
626  const double & originOrdinal1, const double & originOrdinal2, const double & originOrdinal3,
627  const double & arealRotation,
628  const gsoap_resqml2_0_1::eml__LengthUom & projectedUom, const unsigned long & projectedEpsgCode,
629  const gsoap_resqml2_0_1::eml__LengthUom & verticalUom, const std::string & verticalUnknownReason, const bool & isUpOriented);
630 
645  resqml2_0_1::LocalDepth3dCrs* createLocalDepth3dCrs(const std::string & guid, const std::string & title,
646  const double & originOrdinal1, const double & originOrdinal2, const double & originOrdinal3,
647  const double & arealRotation,
648  const gsoap_resqml2_0_1::eml__LengthUom & projectedUom, const std::string & projectedUnknownReason,
649  const gsoap_resqml2_0_1::eml__LengthUom & verticalUom, const unsigned int & verticalEpsgCode, const bool & isUpOriented);
650 
666  resqml2_0_1::LocalTime3dCrs* createLocalTime3dCrs(const std::string & guid, const std::string & title,
667  const double & originOrdinal1, const double & originOrdinal2, const double & originOrdinal3,
668  const double & arealRotation,
669  const gsoap_resqml2_0_1::eml__LengthUom & projectedUom, const unsigned long & projectedEpsgCode,
670  const gsoap_resqml2_0_1::eml__TimeUom & timeUom,
671  const gsoap_resqml2_0_1::eml__LengthUom & verticalUom, const unsigned int & verticalEpsgCode, const bool & isUpOriented);
672 
688  resqml2_0_1::LocalTime3dCrs* createLocalTime3dCrs(const std::string & guid, const std::string & title,
689  const double & originOrdinal1, const double & originOrdinal2, const double & originOrdinal3,
690  const double & arealRotation,
691  const gsoap_resqml2_0_1::eml__LengthUom & projectedUom, const std::string & projectedUnknownReason,
692  const gsoap_resqml2_0_1::eml__TimeUom & timeUom,
693  const gsoap_resqml2_0_1::eml__LengthUom & verticalUom, const std::string & verticalUnknownReason, const bool & isUpOriented);
694 
710  resqml2_0_1::LocalTime3dCrs* createLocalTime3dCrs(const std::string & guid, const std::string & title,
711  const double & originOrdinal1, const double & originOrdinal2, const double & originOrdinal3,
712  const double & arealRotation,
713  const gsoap_resqml2_0_1::eml__LengthUom & projectedUom, const unsigned long & projectedEpsgCode,
714  const gsoap_resqml2_0_1::eml__TimeUom & timeUom,
715  const gsoap_resqml2_0_1::eml__LengthUom & verticalUom, const std::string & verticalUnknownReason, const bool & isUpOriented);
716 
732  resqml2_0_1::LocalTime3dCrs* createLocalTime3dCrs(const std::string & guid, const std::string & title,
733  const double & originOrdinal1, const double & originOrdinal2, const double & originOrdinal3,
734  const double & arealRotation,
735  const gsoap_resqml2_0_1::eml__LengthUom & projectedUom, const std::string & projectedUnknownReason,
736  const gsoap_resqml2_0_1::eml__TimeUom & timeUom,
737  const gsoap_resqml2_0_1::eml__LengthUom & verticalUom, const unsigned int & verticalEpsgCode, const bool & isUpOriented);
738 
739  resqml2::MdDatum* createMdDatum(const std::string & guid, const std::string & title,
740  resqml2::AbstractLocal3dCrs * locCrs, const gsoap_resqml2_0_1::resqml2__MdReference & originKind,
741  const double & referenceLocationOrdinal1, const double & referenceLocationOrdinal2, const double & referenceLocationOrdinal3);
742 
743  //************************************
744  //************ FEATURE ***************
745  //************************************
746 
747  resqml2_0_1::BoundaryFeature* createBoundaryFeature(const std::string & guid, const std::string & title);
748 
749  resqml2_0_1::Horizon* createHorizon(const std::string & guid, const std::string & title);
750 
751  resqml2_0_1::TectonicBoundaryFeature* createTectonicBoundaryFeature(const std::string & guid, const std::string & title);
752 
753  resqml2_0_1::Fault* createFault(const std::string & guid, const std::string & title);
754 
755  resqml2_0_1::Fracture* createFracture(const std::string & guid, const std::string & title);
756 
757  resqml2_0_1::WellboreFeature* createWellboreFeature(const std::string & guid, const std::string & title);
758 
759  resqml2_0_1::SeismicLatticeFeature* createSeismicLattice(const std::string & guid, const std::string & title,
760  const int & inlineIncrement, const int & crosslineIncrement,
761  const unsigned int & originInline, const unsigned int & originCrossline,
762  const unsigned int & inlineCount, const unsigned int & crosslineCount);
763 
764  resqml2_0_1::SeismicLineFeature* createSeismicLine(const std::string & guid, const std::string & title,
765  const int & traceIndexIncrement, const unsigned int & firstTraceIndex, const unsigned int & traceCount);
766 
767  resqml2_0_1::SeismicLineSetFeature* createSeismicLineSet(const std::string & guid, const std::string & title);
768 
769  resqml2_0_1::FrontierFeature* createFrontier(const std::string & guid, const std::string & title);
770 
771  resqml2_0_1::StratigraphicUnitFeature* createStratigraphicUnit(const std::string & guid, const std::string & title);
772 
773  resqml2_0_1::OrganizationFeature* createStructuralModel(const std::string & guid, const std::string & title);
774 
775  resqml2_0_1::OrganizationFeature* createStratigraphicModel(const std::string & guid, const std::string & title);
776 
777  resqml2_0_1::OrganizationFeature* createEarthModel(const std::string & guid, const std::string & title);
778 
779  resqml2_0_1::FluidBoundaryFeature* createFluidBoundaryFeature(const std::string & guid, const std::string & title, const gsoap_resqml2_0_1::resqml2__FluidContact & fluidContact);
780 
781  //************************************
782  //************ INTERPRETATION ********
783  //************************************
784 
785  resqml2_0_1::GenericFeatureInterpretation* createGenericFeatureInterpretation(resqml2::AbstractFeature * feature, const std::string & guid, const std::string & title);
786 
787  resqml2_0_1::BoundaryFeatureInterpretation* createBoundaryFeatureInterpretation(resqml2_0_1::BoundaryFeature * feature, const std::string & guid, const std::string & title);
788 
789  resqml2_0_1::HorizonInterpretation* createPartialHorizonInterpretation(const std::string & guid, const std::string & title);
790 
791  resqml2_0_1::HorizonInterpretation* createHorizonInterpretation(resqml2_0_1::Horizon * horizon, const std::string & guid, const std::string & title);
792 
793  resqml2_0_1::FaultInterpretation* createFaultInterpretation(resqml2_0_1::Fault * fault, const std::string & guid, const std::string & title);
794 
795  resqml2_0_1::WellboreInterpretation* createWellboreInterpretation(resqml2_0_1::WellboreFeature * wellbore, const std::string & guid, const std::string & title, bool isDrilled);
796 
797  resqml2_0_1::EarthModelInterpretation* createEarthModelInterpretation(resqml2_0_1::OrganizationFeature * orgFeat, const std::string & guid, const std::string & title);
798 
799  resqml2_0_1::StructuralOrganizationInterpretation* createStructuralOrganizationInterpretationInAge(resqml2_0_1::OrganizationFeature * orgFeat, const std::string & guid, const std::string & title);
800  resqml2_0_1::StructuralOrganizationInterpretation* createStructuralOrganizationInterpretationInApparentDepth(resqml2_0_1::OrganizationFeature * orgFeat, const std::string & guid, const std::string & title);
801  resqml2_0_1::StructuralOrganizationInterpretation* createStructuralOrganizationInterpretationInMeasuredDepth(resqml2_0_1::OrganizationFeature * orgFeat, const std::string & guid, const std::string & title);
802 
803  resqml2_0_1::StratigraphicUnitInterpretation* createStratigraphicUnitInterpretation(resqml2_0_1::StratigraphicUnitFeature * stratiUnitFeature, const std::string & guid, const std::string & title);
804  resqml2_0_1::StratigraphicColumn* createStratigraphicColumn(const std::string & guid, const std::string & title);
805  resqml2_0_1::StratigraphicColumnRankInterpretation* createStratigraphicColumnRankInterpretationInAge(resqml2_0_1::OrganizationFeature * orgFeat, const std::string & guid, const std::string & title, const unsigned long & rank);
806  resqml2_0_1::StratigraphicColumnRankInterpretation* createStratigraphicColumnRankInterpretationInApparentDepth(resqml2_0_1::OrganizationFeature * orgFeat, const std::string & guid, const std::string & title, const unsigned long & rank);
807  resqml2_0_1::StratigraphicOccurrenceInterpretation* createStratigraphicOccurrenceInterpretationInAge(resqml2_0_1::OrganizationFeature * orgFeat, const std::string & guid, const std::string & title);
808  resqml2_0_1::StratigraphicOccurrenceInterpretation* createStratigraphicOccurrenceInterpretationInApparentDepth(resqml2_0_1::OrganizationFeature * orgFeat, const std::string & guid, const std::string & title);
809 
810  //************************************
811  //************ REPRESENTATION ********
812  //************************************
813 
815  const std::string & guid, const std::string & title);
816 
817  resqml2_0_1::PolylineSetRepresentation* createPolylineSetRepresentation(resqml2::AbstractLocal3dCrs * crs,
818  const std::string & guid, const std::string & title);
819 
821  const std::string & guid, const std::string & title);
822 
824  const std::string & guid, const std::string & title, const gsoap_resqml2_0_1::resqml2__LineRole & roleKind);
825 
827  const std::string & guid, const std::string & title);
828 
830  const std::string & guid, const std::string & title);
831 
832  resqml2_0_1::PolylineRepresentation* createPolylineRepresentation(resqml2::AbstractLocal3dCrs * crs,
833  const std::string & guid, const std::string & title, bool isClosed = false);
834 
836  const std::string & guid, const std::string & title, bool isClosed = false);
837 
839  const std::string & guid, const std::string & title, const gsoap_resqml2_0_1::resqml2__LineRole & roleKind, bool isClosed = false);
840 
842  const std::string & guid, const std::string & title);
843 
844  resqml2_0_1::WellboreTrajectoryRepresentation* createWellboreTrajectoryRepresentation(resqml2_0_1::WellboreInterpretation* interp, const std::string & guid, const std::string & title, resqml2::MdDatum * mdInfo);
845 
846  resqml2_0_1::WellboreFrameRepresentation* createWellboreFrameRepresentation(resqml2_0_1::WellboreInterpretation* interp, const std::string & guid, const std::string & title, resqml2_0_1::WellboreTrajectoryRepresentation * traj);
847 
848  resqml2_0_1::WellboreMarkerFrameRepresentation* createWellboreMarkerFrameRepresentation(resqml2_0_1::WellboreInterpretation* interp, const std::string & guid, const std::string & title, resqml2_0_1::WellboreTrajectoryRepresentation * traj);
849 
850  resqml2_0_1::BlockedWellboreRepresentation* createBlockedWellboreRepresentation(resqml2_0_1::WellboreInterpretation* interp,
851  const std::string & guid, const std::string & title, resqml2_0_1::WellboreTrajectoryRepresentation * traj);
852 
853  resqml2::RepresentationSetRepresentation* createRepresentationSetRepresentation(
855  const std::string & guid,
856  const std::string & title);
857 
858  resqml2::RepresentationSetRepresentation* createRepresentationSetRepresentation(
859  const std::string & guid,
860  const std::string & title);
861 
862  resqml2::RepresentationSetRepresentation* createPartialRepresentationSetRepresentation(const std::string & guid, const std::string & title);
863 
864  resqml2_0_1::NonSealedSurfaceFrameworkRepresentation* createNonSealedSurfaceFrameworkRepresentation(
866  const std::string & guid,
867  const std::string & title,
868  const bool & isSealed);
869 
870  resqml2_0_1::SealedSurfaceFrameworkRepresentation* createSealedSurfaceFrameworkRepresentation(
872  const std::string & guid,
873  const std::string & title);
874 
875  resqml2_0_1::AbstractIjkGridRepresentation* createPartialIjkGridRepresentation(const std::string & guid, const std::string & title);
876 
877  resqml2_0_1::AbstractIjkGridRepresentation* createPartialTruncatedIjkGridRepresentation(const std::string & guid, const std::string & title);
878 
879  resqml2_0_1::IjkGridExplicitRepresentation* createIjkGridExplicitRepresentation(resqml2::AbstractLocal3dCrs * crs,
880  const std::string & guid, const std::string & title,
881  const unsigned int & iCount, const unsigned int & jCount, const unsigned int & kCount);
882 
884  const std::string & guid, const std::string & title,
885  const unsigned int & iCount, const unsigned int & jCount, const unsigned int & kCount);
886 
887  resqml2_0_1::IjkGridParametricRepresentation* createIjkGridParametricRepresentation(resqml2::AbstractLocal3dCrs * crs,
888  const std::string & guid, const std::string & title,
889  const unsigned int & iCount, const unsigned int & jCount, const unsigned int & kCount);
890 
892  const std::string & guid, const std::string & title,
893  const unsigned int & iCount, const unsigned int & jCount, const unsigned int & kCount);
894 
895  resqml2_0_1::IjkGridLatticeRepresentation* createIjkGridLatticeRepresentation(resqml2::AbstractLocal3dCrs * crs,
896  const std::string & guid, const std::string & title,
897  const unsigned int & iCount, const unsigned int & jCount, const unsigned int & kCount);
898 
900  const std::string & guid, const std::string & title,
901  const unsigned int & iCount, const unsigned int & jCount, const unsigned int & kCount);
902 
903  resqml2_0_1::IjkGridNoGeometryRepresentation* createIjkGridNoGeometryRepresentation(
904  const std::string & guid, const std::string & title,
905  const unsigned int & iCount, const unsigned int & jCount, const unsigned int & kCount);
906 
907  resqml2_0_1::IjkGridNoGeometryRepresentation* createIjkGridNoGeometryRepresentation(resqml2::AbstractFeatureInterpretation* interp,
908  const std::string & guid, const std::string & title,
909  const unsigned int & iCount, const unsigned int & jCount, const unsigned int & kCount);
910 
911  resqml2_0_1::UnstructuredGridRepresentation* createPartialUnstructuredGridRepresentation(const std::string & guid, const std::string & title);
912 
913  resqml2_0_1::UnstructuredGridRepresentation* createUnstructuredGridRepresentation(resqml2::AbstractLocal3dCrs * crs,
914  const std::string & guid, const std::string & title,
915  const ULONG64 & cellCount);
916 
917  resqml2::SubRepresentation* createPartialSubRepresentation(const std::string & guid, const std::string & title);
918 
919  resqml2::SubRepresentation* createSubRepresentation(
920  const std::string & guid, const std::string & title,
921  resqml2::AbstractRepresentation * supportingRep);
922 
924  const std::string & guid, const std::string & title,
925  resqml2::AbstractRepresentation * supportingRep);
926 
927  resqml2::GridConnectionSetRepresentation* createPartialGridConnectionSetRepresentation(const std::string & guid, const std::string & title);
928 
929  resqml2::GridConnectionSetRepresentation* createGridConnectionSetRepresentation(const std::string & guid, const std::string & title);
930 
931  resqml2::GridConnectionSetRepresentation* createGridConnectionSetRepresentation(resqml2::AbstractFeatureInterpretation* interp,
932  const std::string & guid, const std::string & title);
933 
934  //************************************
935  //************* PROPERTIES ***********
936  //************************************
937 
938  resqml2::TimeSeries* createTimeSeries(const std::string & guid, const std::string & title);
939 
940  resqml2::TimeSeries* createPartialTimeSeries(const std::string & guid, const std::string & title);
941 
942  resqml2_0_1::StringTableLookup* createStringTableLookup(const std::string & guid, const std::string & title);
943 
944  resqml2::PropertyKind* createPropertyKind(const std::string & guid, const std::string & title,
945  const std::string & namingSystem, const gsoap_resqml2_0_1::resqml2__ResqmlUom & uom, const gsoap_resqml2_0_1::resqml2__ResqmlPropertyKind & parentEnergisticsPropertyKind);
946 
947  resqml2::PropertyKind* createPropertyKind(const std::string & guid, const std::string & title,
948  const std::string & namingSystem, const gsoap_resqml2_0_1::resqml2__ResqmlUom & uom, resqml2::PropertyKind * parentPropType);
949 
950  resqml2::PropertyKind* createPropertyKind(const std::string & guid, const std::string & title,
951  const std::string & namingSystem, const std::string & nonStandardUom, const gsoap_resqml2_0_1::resqml2__ResqmlPropertyKind & parentEnergisticsPropertyKind);
952 
953  resqml2::PropertyKind* createPropertyKind(const std::string & guid, const std::string & title,
954  const std::string & namingSystem, const std::string & nonStandardUom, resqml2::PropertyKind * parentPropType);
955 
956  resqml2::PropertyKind* createPartialPropertyKind(const std::string & guid, const std::string & title);
957 
958  resqml2_0_1::CommentProperty* createCommentProperty(resqml2::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
959  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind, const gsoap_resqml2_0_1::resqml2__ResqmlPropertyKind & energisticsPropertyKind);
960 
961  resqml2_0_1::CommentProperty* createCommentProperty(resqml2::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
962  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind, resqml2::PropertyKind * localPropType);
963 
964  resqml2_0_1::ContinuousProperty* createContinuousProperty(resqml2::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
965  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind, const gsoap_resqml2_0_1::resqml2__ResqmlUom & uom, const gsoap_resqml2_0_1::resqml2__ResqmlPropertyKind & energisticsPropertyKind);
966 
967  resqml2_0_1::ContinuousProperty* createContinuousProperty(resqml2::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
968  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind, const gsoap_resqml2_0_1::resqml2__ResqmlUom & uom, resqml2::PropertyKind * localPropType);
969 
970  resqml2_0_1::ContinuousProperty* createContinuousProperty(resqml2::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
971  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind, const std::string & nonStandardUom, const gsoap_resqml2_0_1::resqml2__ResqmlPropertyKind & energisticsPropertyKind);
972 
973  resqml2_0_1::ContinuousProperty* createContinuousProperty(resqml2::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
974  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind, const std::string & nonStandardUom, resqml2::PropertyKind * localPropType);
975 
976  resqml2_0_1::ContinuousPropertySeries* createContinuousPropertySeries(resqml2::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
977  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind, const gsoap_resqml2_0_1::resqml2__ResqmlUom & uom, const gsoap_resqml2_0_1::resqml2__ResqmlPropertyKind & energisticsPropertyKind,
978  resqml2::TimeSeries * ts, const bool & useInterval = false);
979 
980  resqml2_0_1::ContinuousPropertySeries* createContinuousPropertySeries(resqml2::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
981  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind, const gsoap_resqml2_0_1::resqml2__ResqmlUom & uom, resqml2::PropertyKind * localPropType,
982  resqml2::TimeSeries * ts, const bool & useInterval = false);
983 
984  resqml2_0_1::DiscreteProperty* createDiscreteProperty(resqml2::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
985  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind, const gsoap_resqml2_0_1::resqml2__ResqmlPropertyKind & energisticsPropertyKind);
986 
987  resqml2_0_1::DiscreteProperty* createDiscreteProperty(resqml2::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
988  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind, resqml2::PropertyKind * localPropType);
989 
990  resqml2_0_1::DiscretePropertySeries* createDiscretePropertySeries(resqml2::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
991  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind, const gsoap_resqml2_0_1::resqml2__ResqmlPropertyKind & energisticsPropertyKind,
992  resqml2::TimeSeries * ts, const bool & useInterval = false);
993 
994  resqml2_0_1::DiscretePropertySeries* createDiscretePropertySeries(resqml2::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
995  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind, resqml2::PropertyKind * localPropType,
996  resqml2::TimeSeries * ts, const bool & useInterval = false);
997 
998  resqml2_0_1::CategoricalProperty* createCategoricalProperty(resqml2::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
999  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind,
1000  resqml2_0_1::StringTableLookup* strLookup, const gsoap_resqml2_0_1::resqml2__ResqmlPropertyKind & energisticsPropertyKind);
1001 
1002  resqml2_0_1::CategoricalProperty* createCategoricalProperty(resqml2::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
1003  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind,
1004  resqml2_0_1::StringTableLookup* strLookup, resqml2::PropertyKind * localPropType);
1005 
1006  resqml2_0_1::CategoricalPropertySeries* createCategoricalPropertySeries(resqml2::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
1007  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind,
1008  resqml2_0_1::StringTableLookup* strLookup, const gsoap_resqml2_0_1::resqml2__ResqmlPropertyKind & energisticsPropertyKind,
1009  resqml2::TimeSeries * ts, const bool & useInterval = false);
1010 
1011  resqml2_0_1::CategoricalPropertySeries* createCategoricalPropertySeries(resqml2::AbstractRepresentation * rep, const std::string & guid, const std::string & title,
1012  const unsigned int & dimension, const gsoap_resqml2_0_1::resqml2__IndexableElements & attachmentKind,
1013  resqml2_0_1::StringTableLookup* strLookup, resqml2::PropertyKind * localPropType,
1014  resqml2::TimeSeries * ts, const bool & useInterval = false);
1015 
1016  //************************************
1017  //************* ACTIVITIES ***********
1018  //************************************
1019 
1020  resqml2::ActivityTemplate* createActivityTemplate(const std::string & guid, const std::string & title);
1021 
1022  resqml2::Activity* createActivity(resqml2::ActivityTemplate* activityTemplate, const std::string & guid, const std::string & title);
1023 
1024  //************************************
1025  //*************** WITSML *************
1026  //************************************
1027 
1031  std::vector<witsml1_4_1_1::Trajectory*> getWitsmlTrajectorySet() const;
1032 
1033  witsml1_4_1_1::Well* createWell(
1034  const std::string & guid,
1035  const std::string & title,
1036  const std::string & timeZone);
1037 
1038  witsml1_4_1_1::Well* createWell(
1039  const std::string & guid,
1040  const std::string & title,
1041  const std::string & timeZone,
1042  const std::string & operator_,
1043  gsoap_witsml1_4_1_1::witsml1__WellStatus statusWell,
1044  gsoap_witsml1_4_1_1::witsml1__WellPurpose purposeWell,
1045  gsoap_witsml1_4_1_1::witsml1__WellFluid fluidWell,
1046  gsoap_witsml1_4_1_1::witsml1__WellDirection directionWell,
1047  const time_t & dTimSpud,
1048  const std::string & sourceName,
1049  const time_t & dTimCreation,
1050  const time_t & dTimLastChange,
1051  const std::string & comments
1052  );
1053 
1054  witsml1_4_1_1::CoordinateReferenceSystem* createCoordinateReferenceSystem(
1055  const std::string & guid,
1056  const std::string & title,
1057  const std::string & namingSystem,
1058  const std::string & code,
1059  const std::string & sourceName,
1060  const time_t & dTimCreation,
1061  const time_t & dTimLastChange,
1062  const std::string & comments);
1063 
1064  //************************************
1065  //************* WARNINGS *************
1066  //************************************
1067 
1068  void addWarning(const std::string & warning);
1069  const std::vector<std::string> & getWarnings() const;
1070 
1071  protected:
1075  int getGsoapErrorCode() const;
1076 
1080  std::string getGsoapErrorMessage() const;
1081 
1085  void setGsoapStream(std::istream * inputStream);
1086 
1090  void addFesapiWrapperAndDeleteItIfException(resqml2::AbstractObject* proxy);
1091 
1095  void addFesapiWrapperAndDeleteItIfException(witsml1_4_1_1::AbstractObject* proxy);
1096 
1102  resqml2::AbstractObject* getResqml2_0_1WrapperFromGsoapContext(const std::string & resqmlContentType);
1103 
1108  gsoap_resqml2_0_1::_eml__EpcExternalPartReference* getEpcExternalPartReferenceGsoapProxyFromGsoapContext();
1109 
1110  private :
1111  static const char * DOCUMENT_EXTENSION;
1112 
1113  openingMode hdf5PermissionAccess;
1114 
1115  epc::Package* package;
1116 #if (defined(_WIN32) && _MSC_VER >= 1600) || defined(__APPLE__)
1117  std::unordered_map< std::string, resqml2::AbstractObject* > resqmlAbstractObjectSet;
1118 #else
1119  std::tr1::unordered_map< std::string, resqml2::AbstractObject* > resqmlAbstractObjectSet;
1120 #endif
1121 #if (defined(_WIN32) && _MSC_VER >= 1600) || defined(__APPLE__)
1122  std::unordered_map< std::string, witsml1_4_1_1::AbstractObject* > witsmlAbstractObjectSet;
1123 #else
1124  std::tr1::unordered_map< std::string, witsml1_4_1_1::AbstractObject* > witsmlAbstractObjectSet;
1125 #endif
1126  soap* s;
1127  std::string filePath;
1128 
1129  // Better for performance reason to have set of important objects instead of having a global vector of GsoapWrapper
1130  // Even if redundant with resqmlAbstractObjectSet
1131  std::vector<resqml2_0_1::LocalDepth3dCrs*> localDepth3dCrsSet;
1132  std::vector<resqml2_0_1::LocalTime3dCrs*> localTime3dCrsSet;
1133  std::vector<resqml2_0_1::Fault*> faultSet;
1134  std::vector<resqml2_0_1::Fracture*> fractureSet;
1135  std::vector<resqml2_0_1::Horizon*> horizonSet;
1136  std::vector<resqml2_0_1::SeismicLineFeature*> seismicLineSet;
1137  std::vector<resqml2::AbstractHdfProxy*> hdfProxySet;
1138  std::vector<resqml2_0_1::WellboreFeature*> wellboreSet;
1139  std::vector<resqml2::RepresentationSetRepresentation*> representationSetRepresentationSet;
1140  std::vector<witsml1_4_1_1::Trajectory*> witsmlTrajectorySet;
1141  std::vector<resqml2_0_1::TriangulatedSetRepresentation*> triangulatedSetRepresentationSet;
1142  std::vector<resqml2_0_1::PolylineRepresentation*> polylineRepresentationSet;
1143  std::vector<resqml2_0_1::AbstractIjkGridRepresentation*> ijkGridRepresentationSet;
1144  std::vector<resqml2_0_1::UnstructuredGridRepresentation*> unstructuredGridRepresentationSet;
1145  std::vector<resqml2_0_1::StratigraphicColumn*> stratigraphicColumnSet;
1146  std::vector<resqml2_0_1::FrontierFeature*> frontierSet;
1147  std::vector<resqml2_0_1::OrganizationFeature*> organizationSet;
1148  std::vector<resqml2::TimeSeries*> timeSeriesSet;
1149  std::vector<resqml2::SubRepresentation*> subRepresentationSet;
1150  std::vector<resqml2_0_1::PointSetRepresentation*> pointSetRepresentationSet;
1151 
1152  resqml2_0_1::PropertyKindMapper* propertyKindMapper;
1153 
1154  std::vector<std::string> warnings;
1155 
1156  HdfProxyBuilder* make_hdf_proxy;
1157  HdfProxyBuilderFromGsoapProxy2_0_1* make_hdf_proxy_from_gsoap_proxy_2_0_1;
1158 #ifdef WITH_RESQML2_1
1159  HdfProxyBuilderFromGsoapProxy2_1* make_hdf_proxy_from_gsoap_proxy_2_1;
1160 #endif
1161  };
1162 }
1163 
1164 
Definition: EpcDocument.h:142
Definition: PlaneSetRepresentation.h:40
Definition: SeismicLatticeFeature.h:40
Definition: FluidBoundaryFeature.h:40
Definition: WellboreInterpretation.h:40
Definition: AbstractFeature.h:42
Definition: AbstractIjkGridRepresentation.h:46
Definition: ContinuousPropertySeries.h:40
valueType * getResqmlAbstractObjectByUuid(const std::string &uuid) const
Definition: EpcDocument.h:322
Definition: LocalTime3dCrs.h:40
Definition: ActivityTemplate.h:40
Definition: IjkGridExplicitRepresentation.h:40
Definition: AbstractObject.h:43
Definition: AbstractHdfProxy.h:44
Definition: OrganizationFeature.h:40
Definition: StratigraphicUnitInterpretation.h:40
Definition: StratigraphicOccurrenceInterpretation.h:45
Definition: Fault.h:40
Definition: AbstractLocal3dCrs.h:40
Definition: PropertyKind.h:40
Definition: ContinuousProperty.h:44
Definition: LocalDepth3dCrs.h:40
Definition: TectonicBoundaryFeature.h:40
Definition: DiscretePropertySeries.h:40
Definition: AbstractOrganizationInterpretation.h:43
Definition: CommentProperty.h:40
Definition: BoundaryFeature.h:40
Definition: CategoricalProperty.h:40
Definition: CategoricalPropertySeries.h:40
Definition: PolylineSetRepresentation.h:40
Definition: FrontierFeature.h:40
Definition: SeismicLineFeature.h:40
Definition: StringTableLookup.h:40
Definition: Grid2dRepresentation.h:40
Definition: PropertyKindMapper.h:46
Definition: Horizon.h:40
Definition: AbstractObject.h:41
Definition: WellboreMarkerFrameRepresentation.h:45
Definition: PolylineRepresentation.h:40
Definition: EpcDocument.h:79
Definition: Well.h:40
Definition: EpcDocument.h:155
Definition: UnstructuredGridRepresentation.h:40
Definition: WellboreTrajectoryRepresentation.h:50
Definition: IjkGridParametricRepresentation.h:42
Definition: StratigraphicUnitFeature.h:40
Definition: FaultInterpretation.h:41
Definition: IjkGridLatticeRepresentation.h:40
Definition: SealedSurfaceFrameworkRepresentation.h:44
Definition: TriangulatedSetRepresentation.h:44
Definition: StructuralOrganizationInterpretation.h:41
Definition: Package.h:49
Definition: AbstractRepresentation.h:40
Definition: GridConnectionSetRepresentation.h:40
Definition: EpcDocument.h:150
Definition: WellboreFeature.h:45
Definition: WellboreFrameRepresentation.h:46
Definition: Activity.h:40
Definition: IjkGridNoGeometryRepresentation.h:40
Definition: BlockedWellboreRepresentation.h:45
Definition: GenericFeatureInterpretation.h:40
Definition: MdDatum.h:45
Definition: Fracture.h:40
Definition: TimeSeries.h:40
Definition: HorizonInterpretation.h:42
Definition: CoordinateReferenceSystem.h:40
Definition: EpcDocument.h:61
Definition: PointSetRepresentation.h:40
Definition: SubRepresentation.h:40
Definition: StratigraphicColumn.h:43
Definition: RepresentationSetRepresentation.h:40
Definition: EarthModelInterpretation.h:43
Definition: NonSealedSurfaceFrameworkRepresentation.h:40
Definition: DiscreteProperty.h:40
Definition: AbstractFeatureInterpretation.h:45
Definition: StratigraphicColumnRankInterpretation.h:45
virtual ~EpcDocument()
Definition: EpcDocument.h:167
Definition: SeismicLineSetFeature.h:40
Definition: BoundaryFeatureInterpretation.h:41