GCC Code Coverage Report
Directory: ./ Exec Total Coverage
File: include/dynamic-graph/command-direct-getter.h Lines: 8 8 100.0 %
Date: 2023-03-15 12:04:10 Branches: 7 14 50.0 %

Line Branch Exec Source
1
//
2
// Copyright 2010 CNRS
3
//
4
// Author: Nicolas Mansard
5
//
6
7
#ifndef __dg_command_direct_getter_h__
8
#define __dg_command_direct_getter_h__
9
10
/* Define a getter command directly on the attribute (no need to pass by
11
 * an explicit function). A typical use is given here:
12
 *     addCommand("getSize",
13
 *                makeDirectGetter(*this,&_dimension,
14
 *                                 docDirectGetter("dimension","int")));
15
 *
16
 */
17
18
#include <boost/assign/list_of.hpp>
19
20
#include "dynamic-graph/command.h"
21
22
/* --- GETTER --------------------------------------------------------- */
23
namespace dynamicgraph {
24
namespace command {
25
26
template <class E, typename T>
27
class DirectGetter : public Command {
28
 public:
29
  /// Pointer to method that sets parameter of type T
30
  typedef T (E::*GetterMethod)() const;
31
32
  /// Constructor
33
4
  DirectGetter(E &entity, T *ptr, const std::string &docString)
34
4
      : Command(entity, std::vector<Value::Type>(), docString), T_ptr(ptr) {}
35
36
 protected:
37
1
  virtual Value doExecute() { return Value(*T_ptr); }
38
39
 private:
40
  T *T_ptr;
41
};
42
43
template <class E, typename T>
44
3
DirectGetter<E, T> *makeDirectGetter(E &entity, T *ptr,
45
                                     const std::string &docString) {
46
3
  return new DirectGetter<E, T>(entity, ptr, docString);
47
}
48
49
4
inline std::string docDirectGetter(const std::string &name,
50
                                   const std::string &type) {
51


8
  return std::string("\nGet the ") + name + ".\n\nNo input.\nReturn an " +
52
8
         type + ".\n\n";
53
}
54
55
}  // namespace command
56
}  // namespace dynamicgraph
57
58
#endif  // __dg_command_direct_getter_h__