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>(
563 Datatype dtype = Datatype::UNDEFINED;
568 bool backendManagedBuffer =
false;
569 unsigned viewIndex = 0;
572 std::shared_ptr<OutParameters> out = std::make_shared<OutParameters>();
576 struct OPENPMDAPI_EXPORT
585 std::unique_ptr<AbstractParameter> to_heap() &&
override
587 return std::unique_ptr<AbstractParameter>(
591 std::string name =
"";
595 struct OPENPMDAPI_EXPORT
604 std::unique_ptr<AbstractParameter> to_heap() &&
override
606 return std::unique_ptr<AbstractParameter>(
610 std::string name =
"";
611 Datatype dtype = Datatype::UNDEFINED;
618 enum class ChangesOverSteps
624 ChangesOverSteps changesOverSteps = ChangesOverSteps::No;
627 template <
typename T>
628 void setResource(
T val);
629 template <
typename variant_t>
630 variant_t
const &resource()
const;
634 struct OPENPMDAPI_EXPORT
643 std::unique_ptr<AbstractParameter> to_heap() &&
override
645 return std::unique_ptr<AbstractParameter>(
649 std::string name =
"";
650 std::shared_ptr<Datatype> dtype = std::make_shared<Datatype>();
653 std::shared_ptr<std::any> m_resource = std::make_shared<std::any>();
654 template <
typename variant_t>
655 variant_t
const &resource()
const;
656 template <
typename T>
657 void setResource(
T val);
661 struct OPENPMDAPI_EXPORT
670 std::unique_ptr<AbstractParameter> to_heap() &&
override
672 return std::unique_ptr<AbstractParameter>(
676 std::string name =
"";
677 std::shared_ptr<Datatype> dtype = std::make_shared<Datatype>();
680 std::shared_ptr<std::any> m_resource = std::make_shared<std::any>();
681 template <
typename variant_t>
682 variant_t
const &resource()
const;
683 template <
typename variant_t>
684 variant_t &resource();
685 template <
typename T>
686 void setResource(std::vector<T> val);
690 struct OPENPMDAPI_EXPORT
699 std::unique_ptr<AbstractParameter> to_heap() &&
override
701 return std::unique_ptr<AbstractParameter>(
705 std::shared_ptr<std::vector<std::string>> attributes =
706 std::make_shared<std::vector<std::string>>();
710 struct OPENPMDAPI_EXPORT
719 std::unique_ptr<AbstractParameter> to_heap() &&
override
721 return std::unique_ptr<AbstractParameter>(
727 std::optional<size_t> step;
739 std::variant<AdvanceMode, StepSelection>
mode;
740 bool isThisStepMandatory =
false;
742 std::shared_ptr<AdvanceStatus> status =
747 struct OPENPMDAPI_EXPORT
756 std::unique_ptr<AbstractParameter> to_heap() &&
override
758 return std::unique_ptr<AbstractParameter>(
763 std::shared_ptr<ChunkTable> chunks = std::make_shared<ChunkTable>();
767 struct OPENPMDAPI_EXPORT
770 Parameter(
void const *ptr_in) : former_parent(ptr_in)
779 std::unique_ptr<AbstractParameter> to_heap() &&
override
781 return std::make_unique<Parameter<Operation::DEREGISTER>>(
786 void const *former_parent =
nullptr;
800 std::unique_ptr<AbstractParameter> to_heap() &&
override
802 return std::make_unique<Parameter<Operation::TOUCH>>(std::move(*
this));
807 struct OPENPMDAPI_EXPORT
818 std::unique_ptr<AbstractParameter> to_heap() &&
override
820 return std::make_unique<Parameter<Operation::SET_WRITTEN>>(
824 bool target_status =
false;
846 template <Operation op>
848 : writable{w}, operation{op}, parameter{std::move(p).to_heap()}
851 template <Operation op>
853 : writable{getWritable(a)}
855 , parameter{std::move(p).to_heap()}
858 IOTask(IOTask
const &other);
859 IOTask(IOTask &&other) noexcept;
860 IOTask &operator=(IOTask
const &other);
861 IOTask &operator=(IOTask &&other) noexcept;
865 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:836
IOTask(Writable *w, Parameter< op > p)
Constructor for self-contained description of single IO operation.
Definition: IOTask.hpp:847
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:712
std::variant< AdvanceMode, StepSelection > mode
AdvanceMode: Is one of BeginStep/EndStep.
Definition: IOTask.hpp:739
Definition: IOTask.hpp:749
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:578
Definition: IOTask.hpp:463
Definition: IOTask.hpp:256
Definition: IOTask.hpp:330
Definition: IOTask.hpp:408
Definition: IOTask.hpp:547
Definition: IOTask.hpp:692
Definition: IOTask.hpp:527
Definition: IOTask.hpp:349
Definition: IOTask.hpp:436
Definition: IOTask.hpp:203
Definition: IOTask.hpp:311
Definition: IOTask.hpp:636
Definition: IOTask.hpp:663
Definition: IOTask.hpp:505
Definition: IOTask.hpp:597
Definition: IOTask.hpp:482
Typesafe description of all required arguments for a specified Operation.
Definition: IOTask.hpp:148
Definition: Memory.hpp:48