Choreonoid  1.8
PositionTagGroup.h
Go to the documentation of this file.
1 #ifndef CNOID_UTIL_POSITION_TAG_GROUP_H
2 #define CNOID_UTIL_POSITION_TAG_GROUP_H
3 
4 #include "ClonableReferenced.h"
5 #include "PositionTag.h"
6 #include "Signal.h"
7 #include "EigenTypes.h"
8 #include <vector>
9 #include "exportdecl.h"
10 
11 namespace cnoid {
12 
13 class PositionTag;
14 class Mapping;
15 class ArchiveSession;
16 class Uuid;
17 
18 class CNOID_EXPORT PositionTagGroup : public ClonableReferenced
19 {
20 public:
21  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
22 
25  virtual ~PositionTagGroup();
26 
28  return static_cast<PositionTagGroup*>(doClone(nullptr));
29  }
30  PositionTagGroup* clone(CloneMap& cloneMap) const {
31  return static_cast<PositionTagGroup*>(doClone(&cloneMap));
32  }
33 
34  const std::string& name() const;
35  void setName(const std::string& name);
36 
37  const Uuid& uuid() const;
38 
39  void clearTags();
40 
41  bool empty() const { return tags_.empty(); }
42  int numTags() const { return tags_.size(); }
43 
44  const PositionTag* tagAt(int index) const {
45  return tags_[index];
46  }
47  PositionTag* tagAt(int index) {
48  return tags_[index];
49  }
50 
51  typedef std::vector<PositionTagPtr> Container;
52  Container::const_iterator begin() const { return tags_.begin(); }
53  Container::const_iterator end() const { return tags_.end(); }
54 
55  void insert(int index, PositionTag* tag);
56  void insert(int index, PositionTagGroup* group);
57  void append(PositionTag* tag);
58  bool removeAt(int index);
59  SignalProxy<void(int index)> sigTagAdded();
60  SignalProxy<void(int index, PositionTag* tag)> sigTagRemoved();
61  SignalProxy<void(int index)> sigTagPositionChanged();
62  SignalProxy<void(int index)> sigTagPositionUpdated();
63  void notifyTagPositionChange(int index);
64  void notifyTagPositionUpdate(int index, bool doNotifyPositionChange = true);
65 
66  bool read(const Mapping* archive, ArchiveSession& session);
67  bool write(Mapping* archive, ArchiveSession& session) const;
68 
69  enum CsvFormat { XYZMMRPYDEG = 0, XYZMM = 1 };
70  bool loadCsvFile(const std::string& filename, CsvFormat csvFormat, ArchiveSession& session);
71 
72 protected:
73  virtual Referenced* doClone(CloneMap* cloneMap) const override;
74 
75 private:
76  Container tags_;
77 
78  class Impl;
79  Impl* impl;
80 };
81 
83 
84 }
85 
86 #endif
cnoid::PositionTagGroup::clone
PositionTagGroup * clone(CloneMap &cloneMap) const
Definition: PositionTagGroup.h:30
cnoid::Mapping
Definition: ValueTree.h:251
cnoid::PositionTagGroupPtr
ref_ptr< PositionTagGroup > PositionTagGroupPtr
Definition: PositionTagGroup.h:82
cnoid::write
Listing * write(Mapping *mapping, const std::string &key, const Eigen::MatrixBase< Derived > &x)
Definition: EigenArchive.h:145
cnoid::PositionTagGroup::empty
bool empty() const
Definition: PositionTagGroup.h:41
cnoid::PositionTag
Definition: PositionTag.h:13
cnoid::PositionTagGroup::numTags
int numTags() const
Definition: PositionTagGroup.h:42
cnoid::read
bool read(const Mapping *mapping, const std::string &key, Eigen::MatrixBase< Derived > &x)
Definition: EigenArchive.h:43
cnoid::ref_ptr< PositionTagGroup >
cnoid::Uuid
Definition: Uuid.h:11
cnoid::PositionTagGroup::tagAt
PositionTag * tagAt(int index)
Definition: PositionTagGroup.h:47
PositionTag.h
cnoid::PositionTagGroup::CsvFormat
CsvFormat
Definition: PositionTagGroup.h:69
cnoid::PositionTagGroup::Container
std::vector< PositionTagPtr > Container
Definition: PositionTagGroup.h:51
cnoid::PositionTagGroup::clone
PositionTagGroup * clone() const
Definition: PositionTagGroup.h:27
cnoid::ArchiveSession
Definition: ArchiveSession.h:13
cnoid
Definition: AbstractSceneLoader.h:11
cnoid::ClonableReferenced
Definition: ClonableReferenced.h:10
cnoid::CloneMap
Definition: CloneMap.h:13
cnoid::PositionTagGroup::end
Container::const_iterator end() const
Definition: PositionTagGroup.h:53
Signal.h
cnoid::PositionTagGroup::tagAt
const PositionTag * tagAt(int index) const
Definition: PositionTagGroup.h:44
cnoid::PositionTagGroup
Definition: PositionTagGroup.h:18
cnoid::Referenced
Definition: Referenced.h:54
EigenTypes.h
cnoid::SignalProxy
Definition: Signal.h:470
ClonableReferenced.h
cnoid::PositionTagGroup::begin
Container::const_iterator begin() const
Definition: PositionTagGroup.h:52