diff --git a/include/sot-dyninv/commands-helper.h b/include/sot-dyninv/commands-helper.h index e9e2502689c51a741212dba09f1e63c3d8af7ea1..742b812282360160b3b77e7b598d1a49c2422a8f 100644 --- a/include/sot-dyninv/commands-helper.h +++ b/include/sot-dyninv/commands-helper.h @@ -19,113 +19,15 @@ /* --- COMMON INCLUDE -------------------------------------------------- */ #include <dynamic-graph/command.h> -#include <dynamic-graph/command-setter.h> -#include <dynamic-graph/command-getter.h> +#include <dynamic-graph/command-direct-setter.h> +#include <dynamic-graph/command-direct-getter.h> -/* --- GETTER --------------------------------------------------------- */ -namespace dynamicgraph { - namespace command { - - - - template <class E, typename T> - class DirectGetter - : public Command - { - public: - /// Pointer to method that sets paramter of type T - typedef T (E::*GetterMethod) () const; - - /// Constructor - DirectGetter(E& entity,T* ptr, - const std::string& docString) - : Command(entity, std::vector<Value::Type>(), docString), - T_ptr(ptr) {} - - protected: - virtual Value doExecute() { return Value(*T_ptr); } - private: - T* T_ptr; - }; - - template <class E, typename T> - DirectGetter<E,T>* - makeDirectGetter( E& entity,T* ptr, - const std::string& docString) - { return new DirectGetter<E,T>(entity,ptr,docString); } - - std::string docDirectGetter( const std::string& name, - const std::string& type ) - { - return std::string("\nGet the ")+name+".\n\nNo input.\nReturn an "+type+".\n\n"; - } - - } // namespace command -} // namespace dynamicgraph - - -/* --- SETTER --------------------------------------------------------- */ -namespace dynamicgraph { - namespace command { - - - template< typename T > - struct ValueHelper - { - static const Value::Type TypeID; - }; - - template<> - const Value::Type ValueHelper<int>::TypeID = Value::INT; - - - template <class E, typename T, Value::Type TYPEID> - class DirectSetter - : public Command - { - public: - DirectSetter(E& entity,T* ptr,const std::string& docString) - :Command(entity, boost::assign::list_of(TYPEID), docString) - ,T_ptr(ptr) - {} - - protected: - virtual Value doExecute() - { - const std::vector<Value>& values = getParameterValues(); - T val = values[0].value(); - (*T_ptr) = val; - return Value(); // void - } - private: - T* T_ptr; - }; - - - - template <Value::Type TYPEID,class E, typename T> - DirectSetter<E,T,TYPEID>* - makeDirectSetter( E& entity,T* ptr, - const std::string& docString) - { return new DirectSetter<E,T,TYPEID>(entity,ptr,docString); } - - std::string docDirectSetter( const std::string& name, - const std::string& type ) - { - return std::string("\nSet the ")+name+".\n\nInput:\n - a " - +type+".\nVoid return.\n\n"; - } - - } // namespace command -} // namespace dynamicgraph - /* --- HELPER --------------------------------------------------------------- */ namespace sot { namespace dyninv { - using ::dynamicgraph::command::Value; using ::dynamicgraph::command::makeDirectGetter; using ::dynamicgraph::command::docDirectGetter; using ::dynamicgraph::command::makeDirectSetter; diff --git a/src/controller-pd.cpp b/src/controller-pd.cpp index d95590b34b8825809580099f6a757be3b32621c0..5dbd0722e35a88333f7088e8d5414096f54f46c2 100644 --- a/src/controller-pd.cpp +++ b/src/controller-pd.cpp @@ -60,7 +60,7 @@ namespace sot docDirectGetter("dimension","int"))); addCommand("setSize", - makeDirectSetter<Value::INT>(*this, &_dimension, + makeDirectSetter(*this, &_dimension, docDirectSetter("dimension","int"))); }