File: py11IO.h

package info (click to toggle)
adios2 2.10.2%2Bdfsg1-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 33,764 kB
  • sloc: cpp: 175,964; ansic: 160,510; f90: 14,630; yacc: 12,668; python: 7,275; perl: 7,126; sh: 2,825; lisp: 1,106; xml: 1,049; makefile: 579; lex: 557
file content (133 lines) | stat: -rw-r--r-- 4,267 bytes parent folder | download | duplicates (2)
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 &parameters);

    Params Parameters() const;

    size_t AddTransport(const std::string type, const Params &parameters);

    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