1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
|
/*
* Distributed under the OSI-approved Apache License, Version 2.0. See
* accompanying file Copyright.txt for details.
*
* py11IO.h
*
* Created on: Mar 14, 2017
* Author: William F Godoy godoywf@ornl.gov
*/
#ifndef ADIOS2_BINDINGS_PYTHON_IO_H_
#define ADIOS2_BINDINGS_PYTHON_IO_H_
#include <pybind11/numpy.h>
#include <complex>
#include <string>
#include "py11Attribute.h"
#include "py11Engine.h"
#include "py11Variable.h"
#include "py11types.h"
namespace adios2
{
namespace py11
{
class IO
{
friend class ADIOS;
public:
IO() = default;
~IO() = default;
explicit operator bool() const noexcept;
bool InConfigFile() const;
void SetEngine(const std::string type);
void SetParameter(const std::string key, const std::string value);
void SetParameters(const Params ¶meters);
Params Parameters() const;
size_t AddTransport(const std::string type, const Params ¶meters);
void SetTransportParameter(const size_t transportIndex, const std::string key,
const std::string value);
Variable DefineVariable(const std::string &name);
Variable DefineVariable(const std::string &name, const pybind11::array &array,
const Dims &shape, const Dims &start, const Dims &count,
const bool isConstantDims);
Variable DefineVariable(const std::string &name, const pybind11::object &value,
const Dims &shape, const Dims &start, const Dims &count,
const bool isConstantDims);
Variable InquireVariable(const std::string &name);
Attribute DefineAttribute(const std::string &name, const pybind11::array &array,
const std::string &variableName = "",
const std::string separator = "/");
Attribute DefineAttribute(const std::string &name, const std::string &stringValue,
const std::string &variableName = "",
const std::string separator = "/");
Attribute DefineAttribute(const std::string &name, const std::vector<std::string> &strings,
const std::string &variableName = "",
const std::string separator = "/");
Attribute DefineAttribute(const std::string &name, const std::vector<int> &ints,
const std::string &variableName = "",
const std::string separator = "/");
Attribute DefineAttribute(const std::string &name, const std::vector<double> &doubles,
const std::string &variableName = "",
const std::string separator = "/");
Attribute DefineAttribute(const std::string &name,
const std::vector<std::complex<double>> &complexdoubles,
const std::string &variableName = "",
const std::string separator = "/");
Attribute DefineAttribute(const std::string &name, const pybind11::object &value,
const std::string &variableName, const std::string separator);
Attribute InquireAttribute(const std::string &name, const std::string &variableName = "",
const std::string separator = "/");
bool RemoveVariable(const std::string &name);
void RemoveAllVariables();
bool RemoveAttribute(const std::string &name);
void RemoveAllAttributes();
Engine Open(const std::string &name, const int openMode);
#if ADIOS2_USE_MPI
Engine Open(const std::string &name, const int openMode, MPI4PY_Comm comm);
#endif
void FlushAll();
std::map<std::string, Params> AvailableVariables();
std::map<std::string, Params> AvailableAttributes(const std::string &varname = "",
const std::string &separator = "/");
std::string VariableType(const std::string &name) const;
std::string AttributeType(const std::string &name) const;
std::string EngineType() const;
private:
IO(core::IO *io);
core::IO *m_IO = nullptr;
};
} // end namespace py11
} // end namespace adios2
#endif
|