23 #include "openPMD/ChunkInfo.hpp"
24 #include "openPMD/Dataset.hpp"
25 #include "openPMD/Error.hpp"
26 #include "openPMD/IterationEncoding.hpp"
27 #include "openPMD/Streaming.hpp"
28 #include "openPMD/auxiliary/Export.hpp"
29 #include "openPMD/auxiliary/Memory.hpp"
30 #include "openPMD/auxiliary/Variant.hpp"
31 #include "openPMD/backend/Attribute.hpp"
32 #include "openPMD/backend/ParsePreference.hpp"
52 Writable *getWritable(Attributable *);
98 OPENPMDAPI_EXPORT std::string operationAsString(Operation);
106 virtual std::unique_ptr<AbstractParameter> to_heap() && = 0;
114 template <
typename TracingJSON>
117 std::string
const ¤tBackendName,
118 std::string
const &warningMessage);
125 I_dont_want_to_use_joined_dimensions{};
155 struct OPENPMDAPI_EXPORT
164 std::unique_ptr<AbstractParameter> to_heap() &&
override
166 return std::unique_ptr<AbstractParameter>(
170 std::string name =
"";
174 struct OPENPMDAPI_EXPORT
183 std::unique_ptr<AbstractParameter> to_heap() &&
override
185 return std::unique_ptr<AbstractParameter>(
189 std::string name =
"";
190 enum class FileExists
196 std::shared_ptr<FileExists> fileExists =
197 std::make_shared<FileExists>(FileExists::DontKnow);
201 struct OPENPMDAPI_EXPORT
210 std::unique_ptr<AbstractParameter> to_heap() &&
override
212 return std::unique_ptr<AbstractParameter>(
229 std::string name =
"";
230 Reopen reopen = Reopen::NoReopen;
231 using ParsePreference = internal::ParsePreference;
232 std::shared_ptr<ParsePreference> out_parsePreference =
233 std::make_shared<ParsePreference>(ParsePreference::UpFront);
237 struct OPENPMDAPI_EXPORT
246 std::unique_ptr<AbstractParameter> to_heap() &&
override
248 return std::unique_ptr<AbstractParameter>(
254 struct OPENPMDAPI_EXPORT
263 std::unique_ptr<AbstractParameter> to_heap() &&
override
265 return std::unique_ptr<AbstractParameter>(
269 std::string name =
"";
273 struct OPENPMDAPI_EXPORT
282 std::unique_ptr<AbstractParameter> to_heap() &&
override
284 return std::unique_ptr<AbstractParameter>(
288 std::string path =
"";
292 struct OPENPMDAPI_EXPORT
301 std::unique_ptr<AbstractParameter> to_heap() &&
override
303 return std::unique_ptr<AbstractParameter>(
309 struct OPENPMDAPI_EXPORT
318 std::unique_ptr<AbstractParameter> to_heap() &&
override
320 return std::unique_ptr<AbstractParameter>(
324 std::string path =
"";
328 struct OPENPMDAPI_EXPORT
337 std::unique_ptr<AbstractParameter> to_heap() &&
override
339 return std::unique_ptr<AbstractParameter>(
343 std::string path =
"";
347 struct OPENPMDAPI_EXPORT
356 std::unique_ptr<AbstractParameter> to_heap() &&
override
358 return std::unique_ptr<AbstractParameter>(
362 std::shared_ptr<std::vector<std::string>> paths =
363 std::make_shared<std::vector<std::string>>();
367 struct OPENPMDAPI_EXPORT
374 , joinedDimension(ds.joinedDimension())
386 std::unique_ptr<AbstractParameter> to_heap() &&
override
388 return std::unique_ptr<AbstractParameter>(
392 std::string name =
"";
394 Datatype dtype = Datatype::UNDEFINED;
395 std::string options =
"{}";
396 std::optional<size_t> joinedDimension;
398 template <
typename TracingJSON>
399 TracingJSON compileJSONConfig(
402 std::string
const &backendName)
const;
406 struct OPENPMDAPI_EXPORT
409 Parameter(Extent e) : joinedDimension(Dataset::joinedDimension(e))
411 this->extent = std::move(e);
423 std::unique_ptr<AbstractParameter> to_heap() &&
override
425 return std::unique_ptr<AbstractParameter>(
430 std::optional<size_t> joinedDimension;
434 struct OPENPMDAPI_EXPORT
443 std::unique_ptr<AbstractParameter> to_heap() &&
override
445 return std::unique_ptr<AbstractParameter>(
449 template <
typename TracingJSON>
450 static TracingJSON compileJSONConfig(
453 std::string
const &backendName);
455 std::string name =
"";
456 std::shared_ptr<Datatype> dtype = std::make_shared<Datatype>();
457 std::shared_ptr<Extent> extent = std::make_shared<Extent>();
461 struct OPENPMDAPI_EXPORT
470 std::unique_ptr<AbstractParameter> to_heap() &&
override
472 return std::unique_ptr<AbstractParameter>(
476 std::string name =
"";
480 struct OPENPMDAPI_EXPORT
490 std::unique_ptr<AbstractParameter> to_heap() &&
override
492 return std::unique_ptr<AbstractParameter>(
498 Datatype dtype = Datatype::UNDEFINED;
503 struct OPENPMDAPI_EXPORT
512 std::unique_ptr<AbstractParameter> to_heap() &&
override
514 return std::unique_ptr<AbstractParameter>(
520 Datatype dtype = Datatype::UNDEFINED;
521 std::shared_ptr<void> data =
nullptr;
525 struct OPENPMDAPI_EXPORT
534 std::unique_ptr<AbstractParameter> to_heap() &&
override
536 return std::unique_ptr<AbstractParameter>(
540 std::shared_ptr<std::vector<std::string>> datasets =
541 std::make_shared<std::vector<std::string>>();
545 struct OPENPMDAPI_EXPORT
554 std::unique_ptr<AbstractParameter> to_heap() &&
override
556 return std::unique_ptr<AbstractParameter>(
561 bool queryOnly =
false;
564 Datatype dtype = Datatype::UNDEFINED;
569 bool backendManagedBuffer =
false;
570 unsigned viewIndex = 0;
573 std::shared_ptr<OutParameters> out = std::make_shared<OutParameters>();
577 struct OPENPMDAPI_EXPORT
586 std::unique_ptr<AbstractParameter> to_heap() &&
override
588 return std::unique_ptr<AbstractParameter>(
592 std::string name =
"";
596 struct OPENPMDAPI_EXPORT
605 std::unique_ptr<AbstractParameter> to_heap() &&
override
607 return std::unique_ptr<AbstractParameter>(
611 std::string name =
"";
612 Datatype dtype = Datatype::UNDEFINED;
619 enum class ChangesOverSteps
625 ChangesOverSteps changesOverSteps = ChangesOverSteps::No;
628 template <
typename T>
629 void setResource(
T val);
630 template <
typename variant_t>
631 variant_t
const &resource()
const;
635 struct OPENPMDAPI_EXPORT
644 std::unique_ptr<AbstractParameter> to_heap() &&
override
646 return std::unique_ptr<AbstractParameter>(
650 std::string name =
"";
651 std::shared_ptr<Datatype> dtype = std::make_shared<Datatype>();
654 std::shared_ptr<std::any> m_resource = std::make_shared<std::any>();
655 template <
typename variant_t>
656 variant_t
const &resource()
const;
657 template <
typename T>
658 void setResource(
T val);
662 struct OPENPMDAPI_EXPORT
671 std::unique_ptr<AbstractParameter> to_heap() &&
override
673 return std::unique_ptr<AbstractParameter>(
677 std::string name =
"";
678 std::shared_ptr<Datatype> dtype = std::make_shared<Datatype>();
681 std::shared_ptr<std::any> m_resource = std::make_shared<std::any>();
682 template <
typename variant_t>
683 variant_t
const &resource()
const;
684 template <
typename variant_t>
685 variant_t &resource();
686 template <
typename T>
687 void setResource(std::vector<T> val);
691 struct OPENPMDAPI_EXPORT
700 std::unique_ptr<AbstractParameter> to_heap() &&
override
702 return std::unique_ptr<AbstractParameter>(
706 std::shared_ptr<std::vector<std::string>> attributes =
707 std::make_shared<std::vector<std::string>>();
711 struct OPENPMDAPI_EXPORT
720 std::unique_ptr<AbstractParameter> to_heap() &&
override
722 return std::unique_ptr<AbstractParameter>(
728 std::optional<size_t> step;
740 std::variant<AdvanceMode, StepSelection>
mode;
741 bool isThisStepMandatory =
false;
743 std::shared_ptr<AdvanceStatus> status =
748 struct OPENPMDAPI_EXPORT
757 std::unique_ptr<AbstractParameter> to_heap() &&
override
759 return std::unique_ptr<AbstractParameter>(
764 std::shared_ptr<ChunkTable> chunks = std::make_shared<ChunkTable>();
768 struct OPENPMDAPI_EXPORT
771 Parameter(
void const *ptr_in) : former_parent(ptr_in)
780 std::unique_ptr<AbstractParameter> to_heap() &&
override
782 return std::make_unique<Parameter<Operation::DEREGISTER>>(
787 void const *former_parent =
nullptr;
801 std::unique_ptr<AbstractParameter> to_heap() &&
override
803 return std::make_unique<Parameter<Operation::TOUCH>>(std::move(*
this));
808 struct OPENPMDAPI_EXPORT
819 std::unique_ptr<AbstractParameter> to_heap() &&
override
821 return std::make_unique<Parameter<Operation::SET_WRITTEN>>(
825 bool target_status =
false;
847 template <Operation op>
849 : writable{w}, operation{op}, parameter{std::move(p).to_heap()}
852 template <Operation op>
854 : writable{getWritable(a)}
856 , parameter{std::move(p).to_heap()}
859 IOTask(IOTask
const &other);
860 IOTask(IOTask &&other) noexcept;
861 IOTask &operator=(IOTask
const &other);
862 IOTask &operator=(IOTask &&other) noexcept;
866 std::shared_ptr<AbstractParameter> parameter;
Layer to manage storage of attributes associated with file objects.
Definition: Attributable.hpp:222
Definition: Dataset.hpp:38
std::string options
backend-dependent JSON configuration
Definition: Dataset.hpp:96
Self-contained description of a single IO operation.
Definition: IOTask.hpp:837
IOTask(Writable *w, Parameter< op > p)
Constructor for self-contained description of single IO operation.
Definition: IOTask.hpp:848
Layer to mirror structure of logical data and persistent data in file.
Definition: Writable.hpp:76
Class to handle default and dataset-specific JSON configurations.
Definition: JSONMatcher.hpp:89
Public definitions of openPMD-api.
Definition: Date.cpp:29
Datatype
Concrete datatype of an object available at runtime.
Definition: Datatype.hpp:51
OPENPMDAPI_EXPORT_ENUM_CLASS(Operation)
Type of IO operation between logical and persistent data.
Definition: IOTask.hpp:56
Definition: IOTask.hpp:123
Definition: IOTask.hpp:102
static void warnUnusedParameters(TracingJSON &, std::string const ¤tBackendName, std::string const &warningMessage)
Warn about unused JSON paramters.
Definition: IOTask.hpp:713
std::variant< AdvanceMode, StepSelection > mode
AdvanceMode: Is one of BeginStep/EndStep.
Definition: IOTask.hpp:740
Definition: IOTask.hpp:750
Definition: IOTask.hpp:176
Definition: IOTask.hpp:239
Definition: IOTask.hpp:294
Definition: IOTask.hpp:369
Definition: IOTask.hpp:157
Definition: IOTask.hpp:275
Definition: IOTask.hpp:579
Definition: IOTask.hpp:463
Definition: IOTask.hpp:256
Definition: IOTask.hpp:330
Definition: IOTask.hpp:408
Definition: IOTask.hpp:547
Definition: IOTask.hpp:693
Definition: IOTask.hpp:527
Definition: IOTask.hpp:349
Definition: IOTask.hpp:436
Definition: IOTask.hpp:203
Definition: IOTask.hpp:311
Definition: IOTask.hpp:637
Definition: IOTask.hpp:664
Definition: IOTask.hpp:505
Definition: IOTask.hpp:598
Definition: IOTask.hpp:482
Typesafe description of all required arguments for a specified Operation.
Definition: IOTask.hpp:148
Definition: Memory.hpp:48