OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimVisitor.h
Go to the documentation of this file.
1 // $Id: ossimVisitor.h 22790 2014-05-16 19:19:30Z gpotts $
2 
3 #ifndef ossimVisitor_HEADER
4 #define ossimVisitor_HEADER 1
7 #include <ossim/base/ossimId.h>
10 #include <set>
11 #include <vector>
12 
14 
15 
17 {
18 public:
19  typedef std::set<ossimRefPtr<ossimObject> > MarkCollectionRef;
20  typedef std::set<ossimRefPtr<ossimObject> > CollectionRef;
21  typedef std::vector<ossimRefPtr<ossimObject> > ListRef;
22  typedef std::set<ossimObject*> Collection;
23  typedef std::vector<ossimObject* > List;
28  {
29  VISIT_NONE = 0,
30  VISIT_CHILDREN = 1,
31  VISIT_INPUTS = 2,
32  VISIT_OUTPUTS = 4,
33  VISIT_ALL = (VISIT_CHILDREN|VISIT_INPUTS|VISIT_OUTPUTS)
34  };
35 
36  ossimVisitor(int visitorType = VISIT_NONE);
37  ossimVisitor(const ossimVisitor& src);
38  virtual void reset();
39  virtual ossimRefPtr<ossimVisitor> dup()const=0;
40  virtual void visit(ossimObject* obj);
41  virtual void visit(ossimConnectableObject* obj);
42  VisitorType getVisitorType()const;
43  void setVisitorType(int vType, bool on=true);
44  void turnOffVisitorType(int vType);
45  bool hasVisited(ossimObject* obj)const;
46  bool stopTraversal()const;
47 protected:
50  mutable bool m_stopTraversalFlag;
51 };
52 
54 {
55 public:
56  ossimCollectionVisitor(int visitorType =(VISIT_INPUTS|VISIT_CHILDREN));
58  ListRef& getObjects();
59  const ListRef& getObjects()const;
60  ossimObject* getObject(ossim_uint32 idx = 0);
61  const ossimObject* getObject(ossim_uint32 idx = 0)const;
62 
63  // Inlined to force template instantiation.
64  template <class T> T* getObjectAs(ossim_uint32 idx=0)
65  {
66  if(idx < m_collection.size())
67  {
68  return dynamic_cast<T*>(m_collection[idx].get());
69  }
70  return 0;
71  }
72 
73  // Inlined to force template instantiation.
74  template<class T> const T* getObjectAs(ossim_uint32 idx=0)const
75  {
76  if(idx < m_collection.size())
77  {
78  return dynamic_cast<const T*>(m_collection[idx].get());
79  }
80  return 0;
81  }
82 
83  virtual void reset();
84 
85 protected:
87 
88 };
89 
91 {
92 public:
98 
99  ossimIdVisitor(int visitorType);
100  ossimIdVisitor(const ossimId& id, int visitorType =(VISIT_INPUTS|VISIT_CHILDREN));
101  ossimIdVisitor(const ossimIdVisitor& src);
102 
103  virtual ossimRefPtr<ossimVisitor> dup()const;
104  virtual void visit(ossimConnectableObject* obj);
105 
107  virtual void reset();
108 
109  ossimConnectableObject* getObject();
110  const ossimConnectableObject* getObject()const;
111  void setId(const ossimId& id);
112  const ossimId& getId()const;
113 protected:
116 };
117 
119 {
120 public:
121  ossimTypeNameVisitor(int visitorType =(VISIT_INPUTS|VISIT_CHILDREN));
122  ossimTypeNameVisitor(const ossimString& typeName, bool firstofTypeFlag=false, int visitorType =(VISIT_INPUTS|VISIT_CHILDREN));
124  virtual ossimRefPtr<ossimVisitor> dup()const;
125  virtual void visit(ossimObject* obj);
126  void setTypeName(const ossimString& typeName);
127  const ossimString& getTypeName()const;
128 
135  void setFirstOfTypeFlag(bool flag);
136 
138  bool getFirstOfTypeFlag() const;
139 
140 protected:
143 };
144 
146 {
147 public:
148  ossimTypeIdVisitor(int visitorType =(VISIT_INPUTS|VISIT_CHILDREN));
149  ossimTypeIdVisitor(const RTTItypeid& typeId, bool firstofTypeFlag=false, int visitorType =(VISIT_INPUTS|VISIT_CHILDREN));
151  virtual ossimRefPtr<ossimVisitor> dup()const;
152  virtual void visit(ossimObject* obj);
153  void setTypeId(const RTTItypeid& typeId);
154  const RTTItypeid& getTypeId()const;
155 protected:
158 };
159 
161 {
162 public:
164  int visitorType =(VISIT_OUTPUTS|VISIT_CHILDREN));
166  virtual ossimRefPtr<ossimVisitor> dup()const;
167  virtual void visit(ossimObject* obj);
168 
169 protected:
171 
172 };
173 
180 {
181 public:
183  int visitorType =(VISIT_OUTPUTS|VISIT_CHILDREN));
185  virtual ossimRefPtr<ossimVisitor> dup()const;
186 
195  virtual void visit(ossimObject* obj);
196 
197 
198  ossimObject* getView();
199  const ossimObject* getView()const;
200 protected:
202 };
203 
210 {
211 public:
212  ossimSourceInitializeVisitor(int visitorType = VISIT_OUTPUTS);
214  virtual ossimRefPtr<ossimVisitor> dup()const;
215 
224  virtual void visit(ossimObject* obj);
225 
226 
227 };
228 
229 #endif
virtual void visit(ossimObject *obj)
virtual ossimRefPtr< ossimVisitor > dup() const =0
ossimString m_typeName
Definition: ossimVisitor.h:141
ossimRefPtr< ossimObject > m_view
Definition: ossimVisitor.h:201
ossimReferenced allows for shared object ref counting if the reference count ever gets to 0 or less i...
bool m_stopTraversalFlag
Definition: ossimVisitor.h:50
Visitor to update view and then propagate property event to outputs.
Definition: ossimVisitor.h:179
Visitor to update view and then propagate property event to outputs.
Definition: ossimVisitor.h:209
std::vector< ossimObject *> List
Definition: ossimVisitor.h:23
unsigned int ossim_uint32
std::set< ossimObject * > Collection
Definition: ossimVisitor.h:22
std::vector< ossimRefPtr< ossimObject > > ListRef
Definition: ossimVisitor.h:21
std::set< ossimRefPtr< ossimObject > > MarkCollectionRef
Definition: ossimVisitor.h:19
RTTItypeid m_typeId
Definition: ossimVisitor.h:156
std::set< ossimRefPtr< ossimObject > > CollectionRef
Definition: ossimVisitor.h:20
T * getObjectAs(ossim_uint32 idx=0)
Definition: ossimVisitor.h:64
ossimRefPtr< ossimEvent > m_event
Definition: ossimVisitor.h:170
const T * getObjectAs(ossim_uint32 idx=0) const
Definition: ossimVisitor.h:74
#define OSSIM_DLL
VisitorType
Enumeration type can be a mask and will traverse a graph of connectables based on the values...
Definition: ossimVisitor.h:27
VisitorType m_visitorType
Definition: ossimVisitor.h:48
virtual void reset()
ossimConnectableObject * m_object
Definition: ossimVisitor.h:114
Collection m_markNode
Definition: ossimVisitor.h:49