Skip to content
Snippets Groups Projects
Commit 1943e207 authored by Fabian Reister's avatar Fabian Reister
Browse files

aron: ndarraynavigator: + from(stl)vector

parent 901e2e87
No related branches found
No related tags found
1 merge request!137Armem/dev
...@@ -239,4 +239,5 @@ case type::e##upperType: \ ...@@ -239,4 +239,5 @@ case type::e##upperType: \
{ {
return 0; return 0;
} }
}
} // namespace armarx::aron::datanavigator
...@@ -24,16 +24,22 @@ ...@@ -24,16 +24,22 @@
#pragma once #pragma once
// STD/STL // STD/STL
#include <cstddef>
#include <functional>
#include <memory> #include <memory>
#include <map> #include <map>
#include <numeric>
#include <vector>
// ArmarX // ArmarX
#include <ArmarXCore/core/exceptions/local/ExpressionException.h>
#include <RobotAPI/libraries/aron/core/navigator/data/Navigator.h> #include <RobotAPI/libraries/aron/core/navigator/data/Navigator.h>
namespace armarx::aron::datanavigator namespace armarx::aron::datanavigator
{ {
class NDArrayNavigator; class NDArrayNavigator;
typedef std::shared_ptr<NDArrayNavigator> NDArrayNavigatorPtr; using NDArrayNavigatorPtr = std::shared_ptr<NDArrayNavigator>;
class NDArrayNavigator : class NDArrayNavigator :
virtual public Navigator virtual public Navigator
...@@ -41,7 +47,6 @@ namespace armarx::aron::datanavigator ...@@ -41,7 +47,6 @@ namespace armarx::aron::datanavigator
public: public:
using PointerType = NDArrayNavigatorPtr; using PointerType = NDArrayNavigatorPtr;
public:
// constructors // constructors
NDArrayNavigator(const Path& path = Path()); NDArrayNavigator(const Path& path = Path());
NDArrayNavigator(const data::AronNDArrayPtr&, const Path& path = Path()); NDArrayNavigator(const data::AronNDArrayPtr&, const Path& path = Path());
...@@ -63,11 +68,31 @@ namespace armarx::aron::datanavigator ...@@ -63,11 +68,31 @@ namespace armarx::aron::datanavigator
/// Return dimensions in a readable string such as "(2, 3, 4)". /// Return dimensions in a readable string such as "(2, 3, 4)".
static std::string DimensionsToString(const std::vector<int>& dimensions); static std::string DimensionsToString(const std::vector<int>& dimensions);
// TODO(fabian.reister): move this to VectorConverter?
template<typename T>
static NDArrayNavigatorPtr FromVector(const std::vector<T>& data)
{
NDArrayNavigatorPtr ndArr(new NDArrayNavigator);
ndArr->setDimensions({static_cast<int>(data.size()), sizeof(T)});
ndArr->setData(data);
return ndArr;
}
// public member functions // public member functions
unsigned char* getData() const; unsigned char* getData() const;
void setData(unsigned int, const unsigned char*); void setData(unsigned int, const unsigned char*);
// TODO(fabian.reister): move this to VectorConverter?
template<typename T>
void setData(const std::vector<T>& data)
{
using E = typename decltype(aron->data)::value_type;
setData(sizeof(T) * data.size(), reinterpret_cast < const E* >(data.data()));
}
std::vector<int> getDimensions() const; std::vector<int> getDimensions() const;
void setDimensions(const std::vector<int>&); void setDimensions(const std::vector<int>&);
void addDimension(int); void addDimension(int);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment