KJB
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
bbb_activity_sequence.h
Go to the documentation of this file.
1 /* =========================================================================== *
2  |
3  | Copyright (c) 1994-2011 by Kobus Barnard (author)
4  |
5  | Personal and educational use of this code is granted, provided that this
6  | header is kept intact, and that the authorship is not misrepresented, that
7  | its use is acknowledged in publications, and relevant papers are cited.
8  |
9  | For other use contact the author (kobus AT cs DOT arizona DOT edu).
10  |
11  | Please note that the code in this file has not necessarily been adequately
12  | tested. Naturally, there is no guarantee of performance, support, or fitness
13  | for any particular task. Nonetheless, I am interested in hearing about
14  | problems that you encounter.
15  |
16  | Author: Ernesto Brau
17  * =========================================================================== */
18 
19 /* $Id$ */
20 
21 #ifndef B3_ACTIVITY_SEQUENCE_H
22 #define B3_ACTIVITY_SEQUENCE_H
23 
26 #include <string>
27 #include <vector>
28 #include <iostream>
29 #include <boost/variant.hpp>
30 
31 namespace kjb {
32 namespace bbb {
33 
40 {
41 public:
42  typedef boost::variant<Physical_activity, Intentional_activity> Activity;
43  typedef std::vector<Activity>::const_iterator const_iterator;
44 
45 public:
47  Activity_sequence(const std::string& role) : role_(role) {}
48 
50  const std::string& role() const { return role_; }
51 
53  const_iterator begin() const { return activities_.begin(); }
54 
56  const_iterator end() const { return activities_.end(); }
57 
59  const Activity& activity(size_t j) const { return activities_[j]; }
60 
62  size_t size() const { return activities_.size(); }
63 
66  {
67  activities_.push_back(activity);
68  }
69 
72  {
73  activities_.push_back(activity);
74  }
75 
76 private:
77  std::string role_;
78  std::vector<Activity> activities_;
79 };
80 
86 class Output_activity : public boost::static_visitor<>
87 {
88 public:
89  Output_activity(std::ostream& ost) : ost_(&ost) {}
90 
92  template<class A>
93  void operator()(const A& act) { *ost_ << act; }
94 
95  std::ostream* ost_;
96 };
97 
99 class Get_name : public boost::static_visitor<>
100 {
101 public:
102  Get_name(std::string* nm) : name(nm) {}
103 
105  template<class A>
106  void operator()(const A& act) const { *name = act.name(); }
107 
108  std::string* name;
109 };
110 
112 class Get_start : public boost::static_visitor<>
113 {
114 public:
115  Get_start(size_t* s) : start(s) {}
116 
118  template<class A>
119  void operator()(const A& act) const { *start = act.start(); }
120 
121  size_t* start;
122 };
123 
125 class Get_end : public boost::static_visitor<>
126 {
127 public:
128  Get_end(size_t* e) : end(e) {}
129 
131  template<class A>
132  void operator()(const A& act) const { *end = act.end(); }
133 
134  size_t* end;
135 };
136 
138 class Get_trajectories : public boost::static_visitor<>
139 {
140 public:
142 
144  template<class A>
145  void operator()(const A& act) const { *trajs = act.trajectories(); }
146 
148 };
149 
151 template<class A>
152 bool same_activity(const Activity_sequence::Activity& activity, const A& piact)
153 {
154  return boost::get<A>(&activity) == &piact;
155 }
156 
157 /* \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ */
158 
160 std::ostream& operator<<(std::ostream& ost, const Activity_sequence& aseq);
161 
162 }} // namespace kjb::bbb
163 
164 #endif /*B3_ACTIVITY_SEQUENCE_H */
165 
Definition: bbb_activity_sequence.h:112
Definition: bbb_intentional_activity.h:39
Definition: bbb_activity_sequence.h:86
void operator()(const A &act) const
Get the end time of a generic activity.
Definition: bbb_activity_sequence.h:132
Get_end(size_t *e)
Definition: bbb_activity_sequence.h:128
void operator()(const A &act)
Output an (generic) activity.
Definition: bbb_activity_sequence.h:93
Get_trajectories(Traj_set *ts)
Definition: bbb_activity_sequence.h:141
Definition: bbb_activity_sequence.h:39
void add(const Intentional_activity &activity)
Add intentional activity.
Definition: bbb_activity_sequence.h:65
Definition: bbb_activity_sequence.h:99
void operator()(const A &act) const
Get the trajectories of a generic activity.
Definition: bbb_activity_sequence.h:145
void operator()(const A &act) const
Get the start time of a generic activity.
Definition: bbb_activity_sequence.h:119
std::string * name
Definition: bbb_activity_sequence.h:108
Get_name(std::string *nm)
Definition: bbb_activity_sequence.h:102
bool same_activity(const Activity_sequence::Activity &activity, const A &piact)
Determines whether two activities are the same.
Definition: bbb_activity_sequence.h:152
std::ostream & operator<<(std::ostream &ost, const Activity_sequence &aseq)
Push an activity sequence to an output stream.
boost::variant< Physical_activity, Intentional_activity > Activity
Definition: bbb_activity_sequence.h:42
Activity_sequence(const std::string &role)
Create an empty activity sequence.
Definition: bbb_activity_sequence.h:47
const std::string & role() const
Gets the role of this activity sequence.
Definition: bbb_activity_sequence.h:50
const Activity & activity(size_t j) const
Get the jth actiity.
Definition: bbb_activity_sequence.h:59
void add(const Physical_activity &activity)
Add physical activity.
Definition: bbb_activity_sequence.h:71
Traj_set * trajs
Definition: bbb_activity_sequence.h:147
size_t * end
Definition: bbb_activity_sequence.h:134
const_iterator end() const
Iterator to one-past-the-last activity.
Definition: bbb_activity_sequence.h:56
Definition: bbb_traj_set.h:37
size_t size() const
Get the jth actiity.
Definition: bbb_activity_sequence.h:62
void operator()(const A &act) const
Get the name of a generic activity.
Definition: bbb_activity_sequence.h:106
std::ostream * ost_
Definition: bbb_activity_sequence.h:95
Definition: bbb_activity_sequence.h:125
const_iterator begin() const
Iterator to first activity.
Definition: bbb_activity_sequence.h:53
void trajectories(const Data &data, OutIt output) const
Get a set of pointers to trajectory. OutIt must point to const Trajectory*.
Definition: bbb_traj_set.h:95
Output_activity(std::ostream &ost)
Definition: bbb_activity_sequence.h:89
Definition: bbb_physical_activity.h:39
size_t * start
Definition: bbb_activity_sequence.h:121
std::vector< Activity >::const_iterator const_iterator
Definition: bbb_activity_sequence.h:43
Get_start(size_t *s)
Definition: bbb_activity_sequence.h:115
Definition: bbb_activity_sequence.h:138