VR-Forces 4.2 Class Documentation
vrfObjFiltIter.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2004 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 /*******************************************************************************
6 ** $RCSfile: vrfObjFiltIter.h,v $ $Revision: 1.13 $ $State: Exp $
7 *******************************************************************************/
8 
11 
12 #ifndef DtVrfObjectFilterIterator_H_
13 #define DtVrfObjectFilterIterator_H_
14 
15 #include "vrfobjcore/fltrFcnInf.h"
16 #include "vrfobjcore/vrfObjIter.h"
17 #include "vrfobjcore/vrfObject.h"
18 #include "vrfobjcore/simObjSR.h"
19 #include "vrfobjcore/vrfObjPred.h"
20 
23 
45 {
46 
47 private:
51 
52 public:
53 
60  DtVrfObjectFilterIterator(const DtList& list,
61  const DtObjectType & filter = DtObjectType::anyType(),
62  bool invertFilter = false);
63 
64  DtVrfObjectFilterIterator(const DtList& list,
65  DtFilterFcn filter, bool invertFilter = false,
66  void* usrData = 0);
67 
71  DtVrfObjectFilterIterator(const DtList& list,
72  const DtVrfObjectPredicate& predicate);
73 
75 
77  virtual ~DtVrfObjectFilterIterator();
78 
82  virtual DtVrfObject* first(bool move = true)
83  {
84  return firstMatch(DtVrfObjectIterator::first(move), false, move); //don't wrap
85  };
86 
89  virtual DtVrfObject* next(bool move = true)
90  {
91  return firstMatch(DtVrfObjectIterator::next(move), false, move); //don't wrap
92  };
93 
94  virtual DtVrfObject* wrapNext(bool move = true)
95  {
96  return firstMatch(DtVrfObjectIterator::wrapNext(move), true, move); //wrap
97  };
98 
101  virtual DtVrfObject* prev(bool move = true)
102  {
103  return lastMatch(DtVrfObjectIterator::prev(move), false, move); //don't wrap
104  };
105 
106  virtual DtVrfObject* wrapPrev(bool move = true)
107  {
108  return lastMatch(DtVrfObjectIterator::wrapPrev(move), true, move); //wrap
109  };
110 
114  virtual DtVrfObject* last(bool move = true)
115  {
116  return lastMatch(DtVrfObjectIterator::last(move), false, move); //don't wrap
117  };
118 
121  virtual DtVrfObject* firstMatch(DtVrfObject* initial, bool wrap,
122  bool move = true);
123 
126  virtual DtVrfObject* lastMatch(DtVrfObject* initial, bool wrap, bool move = true);
127 
129  virtual void setFilter(const DtVrfObjectPredicate& objectPredicate);
130 
131  void setFilter(const DtObjectType& filter);
132 
133  virtual void setFilter(DtFilterFcn filter, void* usrData = 0);
134 
135  virtual void setInvertFilter(bool invert) { myInvertFilter = invert; };
136  virtual bool invertFilter() const { return myInvertFilter; };
137 
138 
139 protected:
144  virtual bool matchFilter(DtVrfObject* simObject) const;
145 
146  static bool filterByObjType(const DtVrfObject* object, void* usr);
147  static bool filterByPredicate(const DtVrfObject* object, void* usr);
148 
149 protected:
153  DtObjectType myFilter;
155 };
156 
157 #endif

Document ID: Generated on Sun Nov 24 19:49:21 EST 2013 from SVN revision 133924
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)