OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimVisitor.cpp
Go to the documentation of this file.
1 // $Id: ossimVisitor.cpp 22790 2014-05-16 19:19:30Z gpotts $
2 
8 
9 
11 :m_visitorType(static_cast<VisitorType>(visitorType)),
12 m_stopTraversalFlag(false)
13 {
14 
15 }
16 
18 :m_visitorType(src.m_visitorType),
19 m_markNode(src.m_markNode),
20 m_stopTraversalFlag(src.m_stopTraversalFlag)
21 {
22 }
23 
25 {
26  return m_visitorType;
27 }
28 
29 void ossimVisitor::setVisitorType(int vType, bool on)
30 {
31  if(on)
32  {
34  }
35  else
36  {
38  }
39 }
40 
42 {
43  setVisitorType(vType, false);
44 }
45 
47 {
48  m_markNode.clear();
49  m_stopTraversalFlag = false;
50 }
51 
53 {
54  m_markNode.insert(obj);
55 }
56 
58 {
59  visit(static_cast<ossimObject*>(obj));
60 }
61 
63 {
64  return m_markNode.find(obj) != m_markNode.end();
65 }
66 
68 {
69  return m_stopTraversalFlag;
70 }
71 
72 
74  :
75  ossimVisitor(ossimVisitor::VISIT_INPUTS|ossimVisitor::VISIT_CHILDREN),
76  m_object(0),
77  m_id(0)
78 {
79 }
80 
82  :
83  ossimVisitor(visitorType),
84  m_object(0),
85  m_id(0)
86 {
87 }
88 
89 ossimIdVisitor::ossimIdVisitor(const ossimId& id, int visitorType)
90  :
91  ossimVisitor(visitorType),
92  m_object(0),
93  m_id(id)
94 {
95 }
96 
98  :
99  ossimVisitor(src),
100  m_object(src.m_object),
101  m_id(src.m_id)
102 {
103 }
104 
106 {
107  return new ossimIdVisitor(*this);
108 }
109 
111 {
112  if ( !hasVisited(obj) )
113  {
114  if(obj->getId() == m_id)
115  {
116  m_object = obj;
117  m_stopTraversalFlag = true;
118  }
119  ossimVisitor::visit(obj);
120  }
121 }
122 
124 {
126  m_object = 0;
127 }
128 
130 {
131  return m_object;
132 }
133 
135 {
136  return m_object;
137 }
138 
140 {
141  m_id = id;
142 }
143 
145 {
146  return m_id;
147 }
148 
150 :ossimVisitor(visitorType)
151 {
152 }
153 
155 :m_collection(src.m_collection)
156 {
157 }
158 
160 {
161  return m_collection;
162 }
163 
165 {
166  return m_collection;
167 }
168 
170 {
171  if(idx < m_collection.size())
172  {
173  return m_collection[idx].get();
174  }
175  return 0;
176 }
177 
179 {
180  if(idx < m_collection.size())
181  {
182  return m_collection[idx].get();
183  }
184  return 0;
185 }
186 
188 {
190  m_collection.clear();
191 }
192 
194  :ossimCollectionVisitor(visitorType),
195  m_typeName(),
196  m_firstOfTypeFlag(false)
197 {
198 }
199 
201  bool firstOfTypeFlag,
202  int visitorType)
203  :
204  ossimCollectionVisitor(visitorType),
205  m_typeName(typeName),
206  m_firstOfTypeFlag(firstOfTypeFlag)
207 {
208 }
209 
211 :m_typeName(src.m_typeName),
212  m_firstOfTypeFlag(src.m_firstOfTypeFlag)
213 {
214 }
215 
217 {
218  return new ossimTypeNameVisitor(*this);
219 }
220 
222 {
223  if(!hasVisited(obj))
224  {
226  if(obj&&obj->canCastTo(m_typeName))
227  {
228  m_collection.push_back(obj);
230  }
231  }
232 }
233 
235 {
236  m_typeName = typeName;
237 }
238 
240 {
241  return m_typeName;
242 }
243 
245 {
246  m_firstOfTypeFlag = flag;
247 }
248 
250 {
251  return m_firstOfTypeFlag;
252 }
253 
255 :ossimCollectionVisitor(visitorType)
256 {
257 }
258 
259 ossimTypeIdVisitor::ossimTypeIdVisitor(const RTTItypeid& typeId, bool firstOfTypeFlag, int visitorType)
260 :ossimCollectionVisitor(visitorType),
261 m_typeId(typeId),
262 m_firstOfTypeFlag(firstOfTypeFlag)
263 {
264 }
265 
267 :m_typeId(src.m_typeId),
268 m_firstOfTypeFlag(src.m_firstOfTypeFlag)
269 {
270 }
271 
273 {
274  return new ossimTypeIdVisitor(*this);
275 }
276 
278 {
279  m_typeId = typeId;
280 }
281 
283 {
284  return m_typeId;
285 }
286 
288 {
289  if(!hasVisited(obj))
290  {
292  if(obj&&obj->canCastTo(m_typeId))
293  {
294  m_collection.push_back(obj);
296  }
297  }
298 }
299 
301 :ossimVisitor(visitorType),
302 m_event(evt)
303 {
304 }
306 :ossimVisitor(src),
307 m_event(src.m_event)
308 {
309 }
310 
312 {
313  return new ossimEventVisitor(*this);
314 }
315 
317 {
318  if(!hasVisited(obj))
319  {
320  ossimListenerManager* manager = dynamic_cast<ossimListenerManager*> (obj);
321  if(manager)
322  {
323  manager->fireEvent(*m_event);
324  ossimVisitor::visit(obj);
325  }
326  }
327 }
328 
330  :
331  ossimVisitor(visitorType),
332  m_view(view)
333 {
334 }
335 
337  :
338  ossimVisitor(src),
339  m_view(src.m_view)
340 {
341 }
342 
344 {
345  return new ossimViewInterfaceVisitor(*this);
346 }
347 
349 {
350  return m_view.get();
351 }
352 
354 {
355  return m_view.get();
356 }
357 
359 {
360  if( !hasVisited(obj) )
361  {
362  if ( m_view.get() )
363  {
364  ossimViewInterface* vi = dynamic_cast<ossimViewInterface*>(obj);
365  if ( vi )
366  {
367  // Set the view:
368  vi->setView( m_view.get() );
369 
370  // Send property event for outputs connected to us.
371  ossimRefPtr<ossimEvent> propEvent = new ossimPropertyEvent(obj);
372  ossimEventVisitor ev( propEvent.get(), VISIT_OUTPUTS );
373  obj->accept(ev);
374  }
375  }
376 
377  // This will put the obj in the m_markNode for hasVisited method.
378  ossimVisitor::visit(obj);
379  }
380 }
381 
382 
383 
384 
385 
386 
387 
388 
390  :
391  ossimVisitor(visitorType)
392 {
393 }
394 
396  :ossimVisitor(src)
397 {
398 }
399 
401 {
402  return new ossimSourceInitializeVisitor(*this);
403 }
404 
406 {
407  if( !hasVisited(obj) )
408  {
409  ossimSource* vi = dynamic_cast<ossimSource*>(obj);
410 
411  if ( vi )
412  {
413  vi->initialize();
414  }
415 
416  // This will put the obj in the m_markNode for hasVisited method.
417  ossimVisitor::visit(obj);
418  }
419 }
virtual void visit(ossimObject *obj)
bool getFirstOfTypeFlag() const
void setId(const ossimId &id)
ossimVisitor(int visitorType=VISIT_NONE)
ossimString m_typeName
Definition: ossimVisitor.h:141
ossimRefPtr< ossimObject > m_view
Definition: ossimVisitor.h:201
virtual void visit(ossimObject *obj)
Calls ossimViewInterface::setView if obj cast to ossimViewInterface*.
virtual void accept(ossimVisitor &visitor)
virtual ossimRefPtr< ossimVisitor > dup() const
void setVisitorType(int vType, bool on=true)
bool m_stopTraversalFlag
Definition: ossimVisitor.h:50
Visitor to update view and then propagate property event to outputs.
Definition: ossimVisitor.h:179
virtual void visit(ossimConnectableObject *obj)
virtual ossimRefPtr< ossimVisitor > dup() const
virtual void visit(ossimObject *obj)
ossimTypeIdVisitor(int visitorType=(VISIT_INPUTS|VISIT_CHILDREN))
virtual ossimRefPtr< ossimVisitor > dup() const
virtual void fireEvent(ossimEvent &event)
ossimCollectionVisitor(int visitorType=(VISIT_INPUTS|VISIT_CHILDREN))
virtual ossimRefPtr< ossimVisitor > dup() const
virtual void visit(ossimObject *obj)
void turnOffVisitorType(int vType)
void setTypeId(const RTTItypeid &typeId)
const RTTItypeid & getTypeId() const
Visitor to update view and then propagate property event to outputs.
Definition: ossimVisitor.h:209
const ossimId & getId() const
Will allow us to get this object&#39;s id.
ossimEventVisitor(ossimEvent *evt, int visitorType=(VISIT_OUTPUTS|VISIT_CHILDREN))
unsigned int ossim_uint32
bool hasVisited(ossimObject *obj) const
void setTypeName(const ossimString &typeName)
std::vector< ossimRefPtr< ossimObject > > ListRef
Definition: ossimVisitor.h:21
const ossimId & getId() const
virtual void initialize()
void setFirstOfTypeFlag(bool flag)
Set the m_firstOfTypeFlag.
RTTItypeid m_typeId
Definition: ossimVisitor.h:156
ossimConnectableObject * getObject()
ossimIdVisitor()
Default constructor Constructs with id of 0 and vistor type of VISIT_INPUTS|VISIT_CHILDREN.
ossimTypeNameVisitor(int visitorType=(VISIT_INPUTS|VISIT_CHILDREN))
ossimObject * getObject(ossim_uint32 idx=0)
virtual void reset()
Resets m_object to 0, calls ossimVisitor::reset().
virtual ossimRefPtr< ossimVisitor > dup() const
ossimRefPtr< ossimEvent > m_event
Definition: ossimVisitor.h:170
virtual ossimRefPtr< ossimVisitor > dup() const
virtual bool setView(ossimObject *baseObject)=0
ossimSourceInitializeVisitor(int visitorType=VISIT_OUTPUTS)
VisitorType getVisitorType() const
virtual bool canCastTo(ossimObject *obj) const
Definition: ossimObject.cpp:74
VisitorType
Enumeration type can be a mask and will traverse a graph of connectables based on the values...
Definition: ossimVisitor.h:27
bool stopTraversal() const
VisitorType m_visitorType
Definition: ossimVisitor.h:48
virtual void reset()
virtual void visit(ossimObject *obj)
Calls ossimViewInterface::setView if obj cast to ossimViewInterface*.
ossimViewInterfaceVisitor(ossimObject *view, int visitorType=(VISIT_OUTPUTS|VISIT_CHILDREN))
virtual void visit(ossimObject *obj)
ossimConnectableObject * m_object
Definition: ossimVisitor.h:114
const ossimString & getTypeName() const
Collection m_markNode
Definition: ossimVisitor.h:49