NDArray.cpp
Go to the documentation of this file.
1/*
2 * This file is part of ArmarX.
3 *
4 * Copyright (C) 2012-2016, High Performance Humanoid Technologies (H2T),
5 * Karlsruhe Institute of Technology (KIT), all rights reserved.
6 *
7 * ArmarX is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 *
11 * ArmarX is distributed in the hope that it will be useful, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 *
19 * @author Fabian Peller-Konrad (fabian dot peller-konrad at kit dot edu)
20 * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
21 * GNU General Public License
22 */
23
24// Header
25#include "NDArray.h"
26
27#include <SimoxUtility/meta/type_name.h>
28
30{
31 // constructors
33 detail::NDArrayGenerator<type::NDArray, NDArray>(
34 "NDArray",
35 "NDArray",
36 simox::meta::get_type_name<data::dto::NDArray>(),
37 simox::meta::get_type_name<type::dto::NDArray>(),
38 n)
39 {
40 }
41
42 std::pair<std::vector<std::pair<std::string, std::string>>, bool>
43 NDArray::getCtorInitializers(const std::string& name) const
44 {
45 //Currently not supported
46 /**
47 if (type.getNumberDimensions() == -1)
48 {
49 return {{}, false};
50 }
51
52 if (type.getDefaultValue() == aron::type::ndarray::default_value::DEFAULT ||
53 type.getDefaultValue() == aron::type::ndarray::default_value::IDENTITY)
54 {
55 return {{{name, getInstantiatedCppTypename() + "::Identity()"}}, true};
56 }
57 else if (type.getDefaultValue() == aron::type::ndarray::default_value::ZEROS)
58 {
59 return {{{name, getInstantiatedCppTypename() + "::Zero()"}}, true};
60 }
61 else if (type.getDefaultValue() == aron::type::ndarray::default_value::ONES)
62 {
63 return {{{name, getInstantiatedCppTypename() + "::One()"}}, true};
64 }
65 */
66 if (type.getMaybe() == type::Maybe::OPTIONAL)
67 {
68 return {{{name, "std::nullopt"}}, true};
69 }
70 return {{}, false};
71 }
72
74 NDArray::getResetSoftBlock(const std::string& cppAccessor) const
75 {
76 CppBlockPtr block_if_data = std::make_shared<CppBlock>();
77 block_if_data->addLine(cppAccessor + " = " + this->getFullInstantiatedCppTypename() +
78 "();");
79 return resolveMaybeResetSoftBlock(block_if_data, cppAccessor);
80 }
81
83 NDArray::getWriteTypeBlock(const std::string&,
84 const std::string&,
85 const Path& p,
86 std::string&) const
87 {
88 CppBlockPtr b = std::make_shared<CppBlock>();
89 return b;
90 }
91
93 NDArray::getWriteBlock(const std::string& cppAccessor, const Path& p, std::string&) const
94 {
95 CppBlockPtr b = std::make_shared<CppBlock>();
96 return b;
97 }
98
100 NDArray::getReadBlock(const std::string& cppAccessor, const std::string&) const
101 {
102 CppBlockPtr b = std::make_shared<CppBlock>();
103 return b;
104 }
105} // namespace armarx::aron::codegenerator::cpp::generator
The Path class.
Definition Path.h:36
CppBlockPtr resolveMaybeResetSoftBlock(const CppBlockPtr &, const std::string &) const
CppBlockPtr getReadBlock(const std::string &cppAccessor, const std::string &variantAccessor) const final
Definition NDArray.cpp:100
CppBlockPtr getWriteTypeBlock(const std::string &typeAccessor, const std::string &cppAccessor, const Path &, std::string &variantAccessor) const final
Definition NDArray.cpp:83
std::pair< std::vector< std::pair< std::string, std::string > >, bool > getCtorInitializers(const std::string &) const final
Definition NDArray.cpp:43
CppBlockPtr getWriteBlock(const std::string &cppAccessor, const Path &, std::string &variantAccessor) const final
Definition NDArray.cpp:93
CppBlockPtr getResetSoftBlock(const std::string &cppAccessor) const final
Definition NDArray.cpp:74
The NDArray class.
Definition NDArray.h:38
A convenience header to include all aron files (full include, not forward declared)
std::shared_ptr< CppBlock > CppBlockPtr
Definition CppBlock.h:37
Definition Impl.cpp:41