|
def | __init__ (self, uniqueid, cppvariable, includes, othercppargs, *dimensions) |
|
def | writecpp (self, f=None) |
|
def | compilecpp (self, f) |
|
def | __getitem__ (self, item) |
|
def | __setitem__ (self, item, value) |
|
Definition at line 57 of file pythonmelautils.py.
◆ __init__()
def pythonmelautils.MultiDimensionalCppArray.__init__ |
( |
|
self, |
|
|
|
uniqueid, |
|
|
|
cppvariable, |
|
|
|
includes, |
|
|
|
othercppargs, |
|
|
* |
dimensions |
|
) |
| |
Definition at line 70 of file pythonmelautils.py.
70 def __init__(self, uniqueid, cppvariable, includes, othercppargs, *dimensions):
72 self.uniqueid = uniqueid
73 for i
in self.uniqueids:
75 raise ValueError(
"Two MultiDimensionalCppArrays can't have the same id\n{}".format(i, self.uniqueid))
76 self.uniqueids.append(uniqueid)
78 self.cppvariable = cppvariable
79 self.dimensions = dimensions
80 self.ndim = len(self.dimensions)
82 raise TypeError(
"Can't have a 0 dimensional array!")
86 for i
in range(dimensions[0]):
87 othercppargs[
"int index{}".format(len(dimensions))] = i
88 self.subarrays.append(
89 MultiDimensionalCppArray(
90 "{}_{}".format(self.uniqueid, i),
91 "{}[index{}]".format(cppvariable, len(dimensions)),
98 self.othercppargs = OrderedDict(othercppargs)
99 self.functionfilecontents = self.functionfiletemplate.format(
101 cppvariable=self.cppvariable,
102 cppargs=
",".join([key
for key
in self.othercppargs]+[
"int item"]),
103 includes=
"\n".join(
"#include <{}>".format(_)
for _
in includes),
105 self.includes = includes
106 self.functionfile = self.getitem = self.setitem =
None
◆ __getitem__()
def pythonmelautils.MultiDimensionalCppArray.__getitem__ |
( |
|
self, |
|
|
|
item |
|
) |
| |
Definition at line 140 of file pythonmelautils.py.
140 def __getitem__(self, item):
142 return self.subarrays[item]
144 if self.getitem
is None: self.compilecpp(self.writecpp())
145 if item >= self.dimensions[0]:
146 raise IndexError(
"Index {} out of range (0-{})".format(item, self.dimensions[0]))
147 return self.getitem(*(list(self.othercppargs.values())+[item]))
◆ __setitem__()
def pythonmelautils.MultiDimensionalCppArray.__setitem__ |
( |
|
self, |
|
|
|
item, |
|
|
|
value |
|
) |
| |
Definition at line 149 of file pythonmelautils.py.
149 def __setitem__(self, item, value):
151 raise TypeError(
"Need to specify all indices to write to the array.")
153 if self.setitem
is None: self.compilecpp()
154 if item >= self.dimensions[0]:
155 raise IndexError(
"Index {} out of range (0-{})".format(item, self.dimensions[0]))
156 self.setitem(*(list(self.othercppargs.values())+[item, value]))
◆ compilecpp()
def pythonmelautils.MultiDimensionalCppArray.compilecpp |
( |
|
self, |
|
|
|
f |
|
) |
| |
Definition at line 123 of file pythonmelautils.py.
123 def compilecpp(self, f):
125 for subarray
in self.subarrays:
126 subarray.compilecpp(f)
129 if self.functionfilecontents
not in self.getitems:
131 self.functionfiles[self.functionfilecontents] = f
132 self.getitems[self.functionfilecontents] = getattr(ROOT,
"{}_getitem".format(self.uniqueid))
133 self.setitems[self.functionfilecontents] = getattr(ROOT,
"{}_setitem".format(self.uniqueid))
135 self.functionfile = self.functionfiles[self.functionfilecontents]
136 self.getitem = self.getitems[self.functionfilecontents]
137 self.setitem = self.setitems[self.functionfilecontents]
◆ writecpp()
def pythonmelautils.MultiDimensionalCppArray.writecpp |
( |
|
self, |
|
|
|
f = None |
|
) |
| |
Definition at line 108 of file pythonmelautils.py.
108 def writecpp(self, f=None):
110 for subarray
in self.subarrays:
111 f = subarray.writecpp(f)
114 if self.functionfilecontents
not in self.functionfiles:
116 f = NamedTemporaryMacro()
117 self.functionfiles[self.functionfilecontents] = f
118 f.write(self.functionfilecontents.replace(
"NAME", self.uniqueid))
121 return self.functionfiles[self.functionfilecontents]
◆ cppvariable
pythonmelautils.MultiDimensionalCppArray.cppvariable |
◆ dimensions
pythonmelautils.MultiDimensionalCppArray.dimensions |
◆ functionfile
pythonmelautils.MultiDimensionalCppArray.functionfile |
◆ functionfilecontents
pythonmelautils.MultiDimensionalCppArray.functionfilecontents |
◆ functionfiles
dictionary pythonmelautils.MultiDimensionalCppArray.functionfiles = {} |
|
static |
◆ functionfiletemplate
string pythonmelautils.MultiDimensionalCppArray.functionfiletemplate |
|
static |
Initial value:= """
#include <type_traits>
{includes}
auto {name}_getitem({cppargs}) -> std::remove_reference<decltype({cppvariable}[item])>::type {{return {cppvariable}[item];}}
void {name}_setitem({cppargs}, std::remove_reference<decltype({cppvariable}[item])>::type value) {{{cppvariable}[item] = value;}}
"""
Definition at line 58 of file pythonmelautils.py.
◆ getitem
pythonmelautils.MultiDimensionalCppArray.getitem |
◆ getitems
dictionary pythonmelautils.MultiDimensionalCppArray.getitems = {} |
|
static |
◆ includes
pythonmelautils.MultiDimensionalCppArray.includes |
◆ ndim
pythonmelautils.MultiDimensionalCppArray.ndim |
◆ othercppargs
pythonmelautils.MultiDimensionalCppArray.othercppargs |
◆ setitem
pythonmelautils.MultiDimensionalCppArray.setitem |
◆ setitems
dictionary pythonmelautils.MultiDimensionalCppArray.setitems = {} |
|
static |
◆ subarrays
pythonmelautils.MultiDimensionalCppArray.subarrays |
◆ uniqueid
pythonmelautils.MultiDimensionalCppArray.uniqueid |
◆ uniqueids
list pythonmelautils.MultiDimensionalCppArray.uniqueids = [] |
|
static |
The documentation for this class was generated from the following file: