7 #ifndef MDAL_DYNAMIC_DRIVER_H
8 #define MDAL_DYNAMIC_DRIVER_H
10 #include "mdal_driver.hpp"
11 #include "mdal_utils.hpp"
26 bool canReadMesh(
const std::string &uri )
override;
27 std::unique_ptr<Mesh> load(
const std::string &uri,
const std::string &meshName )
override;
30 static Driver *create(
const std::string &libFile );
35 const std::string &longName,
36 const std::string &filters,
43 int mCapabilityFlags = 0;
44 int mMaxVertexPerFace = std::numeric_limits<int>::max();
46 std::set<int> mMeshIds;
49 std::function<bool (
const char * )> mCanReadMeshFunction;
50 std::function<int (
const char *,
const char * )> mOpenMeshFunction;
60 size_t next(
size_t vertexCount,
double *coordinates )
override;
67 std::function<int (
int,
int,
int,
double * )> mVerticesFunction;
75 size_t next(
size_t faceOffsetsBufferLen,
76 int *faceOffsetsBuffer,
77 size_t vertexIndicesBufferLen,
78 int *vertexIndicesBuffer )
override;
85 std::function<int (
int,
int,
int,
int *,
int,
int * )> mFacesFunction;
93 size_t next(
size_t edgeCount,
94 int *startVertexIndices,
95 int *endVertexIndices );
102 std::function<int (
int,
int,
int,
int *,
int * )> mEdgesFunction;
115 virtual bool loadSymbol();
122 int mGroupIndex = -1;
123 int mDatasetIndex = -1;
127 std::function<int (
int,
int,
int,
int,
int,
double * )> mDataFunction;
128 std::function<void(
int,
int,
int )> mUnloadFunction;
141 bool loadSymbol()
override;
143 size_t scalarData(
size_t indexStart,
size_t count,
double *buffer )
override;
144 size_t vectorData(
size_t indexStart,
size_t count,
double *buffer )
override;
145 size_t activeData(
size_t indexStart,
size_t count,
int *buffer )
override;
149 std::function<int (
int,
int,
int,
int,
int,
int * )> mActiveFlagsFunction;
160 size_t maxVerticalLevelCount,
163 bool loadSymbol()
override;
166 size_t verticalLevelData(
size_t indexStart,
size_t count,
double *buffer )
override;
167 size_t faceToVolumeData(
size_t indexStart,
size_t count,
int *buffer )
override;
168 size_t scalarVolumesData(
size_t indexStart,
size_t count,
double *buffer )
override;
169 size_t vectorVolumesData(
size_t indexStart,
size_t count,
double *buffer )
override;
173 std::function<int (
int,
int,
int,
int,
int,
int * )> mVerticalLevelCountDataFunction;
174 std::function<int (
int,
int,
int,
int,
int,
double * )> mVerticalLevelDataFunction;
175 std::function<int (
int,
int,
int,
int,
int,
int * )> mFaceToVolumeDataFunction;
183 size_t faceVerticesMaximumCount,
184 const std::string &uri,
189 std::unique_ptr<MeshVertexIterator> readVertices()
override;
190 std::unique_ptr<MeshEdgeIterator> readEdges()
override;
191 std::unique_ptr<MeshFaceIterator> readFaces()
override;
192 size_t verticesCount()
const override;
193 size_t edgesCount()
const override;
194 size_t facesCount()
const override;
195 BBox extent()
const override;
200 bool populateDatasetGroups();
210 std::function<int (
int )> mMeshVertexCountFunction;
211 std::function<int (
int )> mMeshFaceCountFunction;
212 std::function<int (
int )> mMeshEdgeCountFunction;
213 std::function<void (
int,
double *,
double *,
double *,
double * )> mMeshExtentFunction;
214 std::function<
const char *( int )> mMeshProjectionFunction;
215 std::function<int (
int )> mMeshDatasetGroupsCountFunction;
217 std::function<
const char *( int, int )> mDatasetgroupNameFunction;
218 std::function<
const char *( int, int )> mDatasetGroupReferencetimeFunction;
219 std::function<int (
int,
int )> mDatasetGroupMetadataCountFunction;
220 std::function<
const char *( int, int, int )> mDatasetGroupMetadataKeyFunction;
221 std::function<
const char *( int, int, int )> mDatasetGroupMetadataValueFunction;
222 std::function < bool (
int,
int,
bool *,
int *,
int * )> mDatasetDescriptionFunction;
223 std::function < double(
int,
int,
int,
bool * )> mDatasetTimeFunction;
224 std::function<bool (
int,
int,
int )> mDatasetSupportActiveFlagFunction;
225 std::function<int (
int,
int,
int )> mDataset3DMaximumVerticalLevelCount;
226 std::function<int (
int,
int,
int )> mDataset3DVolumeCount;
228 std::function<void (
int )> mCloseMeshFunction;
Definition: mdal_data_model.hpp:97
Definition: mdal_data_model.hpp:113
Definition: mdal_dynamic_driver.hpp:132
size_t activeData(size_t indexStart, size_t count, int *buffer) override
For drivers that supports it, see supportsActiveFlag()
Definition: mdal_dynamic_driver.cpp:516
size_t vectorData(size_t indexStart, size_t count, double *buffer) override
For DataOnVertices or DataOnFaces.
Definition: mdal_dynamic_driver.cpp:508
size_t scalarData(size_t indexStart, size_t count, double *buffer) override
For DataOnVertices or DataOnFaces.
Definition: mdal_dynamic_driver.cpp:500
Definition: mdal_dynamic_driver.hpp:153
size_t scalarVolumesData(size_t indexStart, size_t count, double *buffer) override
For DataOnVolumes.
Definition: mdal_dynamic_driver.cpp:483
size_t vectorVolumesData(size_t indexStart, size_t count, double *buffer) override
For DataOnVolumes.
Definition: mdal_dynamic_driver.cpp:491
size_t faceToVolumeData(size_t indexStart, size_t count, int *buffer) override
For DataOnVolumes.
Definition: mdal_dynamic_driver.cpp:475
size_t verticalLevelData(size_t indexStart, size_t count, double *buffer) override
For DataOnVolumes.
Definition: mdal_dynamic_driver.cpp:467
size_t verticalLevelCountData(size_t indexStart, size_t count, int *buffer) override
For DataOnVolumes.
Definition: mdal_dynamic_driver.cpp:459
Definition: mdal_dynamic_driver.hpp:107
void unloadData()
Removes stored data in memory (for drivers that support lazy loading)
Definition: mdal_dynamic_driver.cpp:580
Definition: mdal_data_model.hpp:137
Definition: mdal_dynamic_driver.hpp:20
Definition: mdal_driver.hpp:28
Class to handle dynamic library. The loaded library is implicity shared when copying this object.
Definition: mdal_utils.hpp:256
Definition: mdal_dynamic_driver.hpp:180
void setProjection()
Set the projection from the source.
Definition: mdal_dynamic_driver.cpp:178
bool loadSymbol()
Returns whether all the symbols have been loaded.
Definition: mdal_dynamic_driver.cpp:298
Definition: mdal_dynamic_driver.hpp:89
Definition: mdal_data_model.hpp:217
Definition: mdal_dynamic_driver.hpp:71
Definition: mdal_data_model.hpp:227
Definition: mdal_dynamic_driver.hpp:56
Definition: mdal_data_model.hpp:209
Definition: mdal_data_model.hpp:238
Definition: mdal_data_model.hpp:24