conversions.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <memory>
4 #include <optional>
5 #include <ostream>
6 
7 #include <Eigen/Core>
9 
10 namespace armarx::core::eigen
11 {
12  // optional
13  template <class EigenT, int rows, int cols>
14  std::optional<Eigen::Matrix<EigenT, rows, cols, Eigen::ColMajor>>&
17  {
19  if (rh.has_value())
20  {
21  lh.emplace(rh.value());
22  }
23  else
24  {
25  lh = std::nullopt;
26  }
27  return lh;
28  }
29 
30  template <class EigenT, int rows, int cols>
31  std::optional<Eigen::Matrix<EigenT, rows, cols, Eigen::RowMajor>>&
34  {
36  if (rh.has_value())
37  {
38  lh.emplace(rh.value());
39  }
40  else
41  {
42  lh = std::nullopt;
43  }
44  return lh;
45  }
46 
47  // shared_ptr
48  template <class EigenT, int rows, int cols>
49  std::shared_ptr<Eigen::Matrix<EigenT, rows, cols, Eigen::ColMajor>>&
51  const std::shared_ptr<Eigen::Matrix<EigenT, rows, cols, Eigen::RowMajor>>& rh)
52  {
54  if (rh)
55  {
56  lh = std::make_shared<Eigen::Matrix<EigenT, rows, cols, Eigen::ColMajor>>(*rh);
57  }
58  else
59  {
60  lh = nullptr;
61  }
62  return lh;
63  }
64 
65  template <class EigenT, int rows, int cols>
66  std::shared_ptr<Eigen::Matrix<EigenT, rows, cols, Eigen::RowMajor>>&
68  const std::shared_ptr<Eigen::Matrix<EigenT, rows, cols, Eigen::ColMajor>>& rh)
69  {
71  if (rh)
72  {
73  lh = std::make_shared<Eigen::Matrix<EigenT, rows, cols, Eigen::RowMajor>>(*rh);
74  }
75  else
76  {
77  lh = nullptr;
78  }
79  return lh;
80  }
81 } // namespace armarx::core::eigen
82 
83 namespace armarx
84 {
86 }
armarx::core::eigen
Definition: conversions.cpp:3
trace.h
ARMARX_TRACE
#define ARMARX_TRACE
Definition: trace.h:69
Eigen::Matrix
Definition: EigenForwardDeclarations.h:27
armarx::core::eigen::assign
std::optional< Eigen::Matrix< EigenT, rows, cols, Eigen::ColMajor > > & assign(std::optional< Eigen::Matrix< EigenT, rows, cols, Eigen::ColMajor >> &lh, const std::optional< Eigen::Matrix< EigenT, rows, cols, Eigen::RowMajor >> &rh)
Definition: conversions.h:15
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:28