VR-Forces 4.0.4 Class Documentation
include/vrfobjcore/vrfObjFiltIter.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2004 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 /*******************************************************************************
00006 ** $RCSfile: vrfObjFiltIter.h,v $ $Revision: 1.13 $ $State: Exp $
00007 *******************************************************************************/
00008 
00011 
00012 #ifndef DtVrfObjectFilterIterator_H_
00013 #define DtVrfObjectFilterIterator_H_
00014 
00015 #include "vrfobjcore/fltrFcnInf.h"
00016 #include "vrfobjcore/vrfObjIter.h"
00017 #include "vrfobjcore/vrfObject.h"
00018 #include "vrfobjcore/simObjSR.h"
00019 #include "vrfobjcore/vrfObjPred.h"
00020 
00023 
00043 #include "vrfobjcore/vrfobjcoreDefines.h"
00044 class DT_DLL_vrfobjcore DtVrfObjectFilterIterator : public DtVrfObjectIterator
00045 {
00046 
00047 private:
00049    DtVrfObjectFilterIterator();
00050    DtVrfObjectFilterIterator& operator=(const DtVrfObjectFilterIterator& orig);
00051 
00052 public:
00053 
00060    DtVrfObjectFilterIterator(const DtList& list,
00061       const DtObjectType & filter = DtObjectType::anyType(), 
00062       bool invertFilter = false);
00063 
00064    DtVrfObjectFilterIterator(const DtList& list,
00065       DtFilterFcn filter, bool invertFilter = false,
00066       void* usrData = 0);
00067 
00071    DtVrfObjectFilterIterator(const DtList& list,
00072       const DtVrfObjectPredicate& predicate);
00073 
00074    DtVrfObjectFilterIterator(const DtVrfObjectFilterIterator& orig);
00075 
00077    virtual ~DtVrfObjectFilterIterator();
00078 
00082    virtual DtVrfObject* first(bool move = true)
00083       {
00084          return firstMatch(DtVrfObjectIterator::first(move), false, move); //don't wrap
00085       };
00086 
00089    virtual DtVrfObject* next(bool move = true)
00090       {
00091          return firstMatch(DtVrfObjectIterator::next(move), false, move); //don't wrap
00092       };
00093 
00094    virtual DtVrfObject* wrapNext(bool move = true)
00095       {
00096          return firstMatch(DtVrfObjectIterator::wrapNext(move), true, move); //wrap
00097       };
00098 
00101    virtual DtVrfObject* prev(bool move = true)
00102       {
00103          return lastMatch(DtVrfObjectIterator::prev(move), false, move);  //don't wrap
00104       };
00105 
00106    virtual DtVrfObject* wrapPrev(bool move = true)
00107       {
00108          return lastMatch(DtVrfObjectIterator::wrapPrev(move), true, move); //wrap
00109       };
00110 
00114    virtual DtVrfObject* last(bool move = true)
00115       {
00116          return lastMatch(DtVrfObjectIterator::last(move), false, move); //don't wrap
00117       };
00118 
00121    virtual DtVrfObject* firstMatch(DtVrfObject* initial, bool wrap, 
00122       bool move = true);
00123 
00126    virtual DtVrfObject* lastMatch(DtVrfObject* initial, bool wrap, bool move = true);
00127 
00129    virtual void setFilter(const DtVrfObjectPredicate& objectPredicate);
00130 
00131    void setFilter(const DtObjectType& filter);
00132 
00133    virtual void setFilter(DtFilterFcn filter, void* usrData = 0);
00134 
00135    virtual void setInvertFilter(bool invert) { myInvertFilter = invert; };
00136    virtual bool invertFilter() const { return myInvertFilter; };
00137 
00138 
00139 protected:
00144    virtual bool matchFilter(DtVrfObject* simObject) const;
00145 
00146    static bool filterByObjType(const DtVrfObject* object, void* usr);
00147    static bool filterByPredicate(const DtVrfObject* object, void* usr);
00148 
00149 protected:
00150    DtVrfObjectPredicate* myVrfObjectPredicate; 
00151    bool                  myDoFiltering;
00152    DtFilterFcnInfo       myFilterInfo;
00153    DtObjectType          myFilter;  
00154    bool                  myInvertFilter;
00155 };
00156 
00157 #endif

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)