VR-Link API Documentation for DIS
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
publisherList.h
Go to the documentation of this file.
1 /*********************************************************************************
2 ** Copyright (c) 2014 MAK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************************/
5 
6 #pragma once
7 
11 
13 
14 #include <list>
15 
17 template <typename Publisher>
19 {
20 public:
23 
26  {
27 
28  }
29 
32  {
33  clear();
34  }
35 
37  void tick()
38  {
39  std::list<Publisher*>::iterator iter=myPublishers.begin();
40  for(iter; iter!=myPublishers.end(); ++iter)
41  {
42  (*iter)->tick();
43  }
44  }
45 
47  void add(Publisher* pub)
48  {
49  myPublishers.push_back(pub);
50  std::list<DtPublisherListDelegate*>::iterator iter=myAddedDelegates.begin();
51  for(iter; iter!=myAddedDelegates.end(); ++iter)
52  {
53  (*(*iter))(pub);
54  }
55  }
56 
58  void remove(Publisher* pub)
59  {
60  myPublishers.remove(pub);
61  std::list<DtPublisherListDelegate*>::iterator iter=myRemovedDelegates.begin();
62  for(iter; iter!=myRemovedDelegates.end(); ++iter)
63  {
64  DtPublisherListDelegate* del=(*iter);
65  (*del)(pub);
66  }
67  }
68 
70  Publisher* find(std::string id)
71  {
72  std::list<Publisher*>::iterator iter=myPublishers.begin();
73  for(iter; iter!=myPublishers.end(); ++iter)
74  {
75  std::string gid=(*iter)->globalId().string();
76  if(id==gid)
77  {
78  return (*iter);
79  }
80  }
81 
82  return NULL;
83  }
84 
87  {
88  myAddedDelegates.push_back(del);
89  }
90 
93  {
94  myAddedDelegates.remove(del);
95  }
96 
99  {
100  myRemovedDelegates.push_back(del);
101  }
102 
105  {
106  myRemovedDelegates.remove(del);
107  }
108 
110  typename std::list<Publisher*>::iterator begin()
111  {
112  return myPublishers.begin();
113  }
114 
116  typename std::list<Publisher*>::iterator end()
117  {
118  return myPublishers.end();
119  }
120 
122  void clear()
123  {
124  std::list<Publisher*>::iterator iter=myPublishers.begin();
125  for(iter; iter!=myPublishers.end(); ++iter)
126  {
127  delete (*iter);
128  }
129  myPublishers.clear();
130 
131  std::list<DtPublisherListDelegate*>::iterator iter2=myAddedDelegates.begin();
132  for(iter2; iter2!=myAddedDelegates.end(); ++iter2)
133  {
134  delete (*iter2);
135  }
136  myAddedDelegates.clear();
137 
138  std::list<DtPublisherListDelegate*>::iterator iter3=myRemovedDelegates.begin();
139  for(iter3; iter3!=myRemovedDelegates.end(); ++iter3)
140  {
141  delete (*iter3);
142  }
143  myRemovedDelegates.clear();
144  }
145 
146 protected:
147  std::list<Publisher*> myPublishers;
148  std::list<DtPublisherListDelegate*> myAddedDelegates;
149  std::list<DtPublisherListDelegate*> myRemovedDelegates;
150 };

Document ID: Generated on Wed Jan 7 13:31:29 EST 2015 from SVN revision 149162
Copyright © 2005-2014 VT MÄK. All Rights Reserved (www.mak.com)