LocationVisitor.hpp

Go to the documentation of this file.
00001 
00015 #ifndef LocationVisitor_H
00016 #define LocationVisitor_H
00017 
00018 #include "NamedLoc.hpp"
00019 #include "UnnamedLoc.hpp"
00020 #include "InvisibleLoc.hpp"
00021 #include "UnknownLoc.hpp"
00022 #include "LocSubSet.hpp"
00023 #include "LocIdxSubSet.hpp"
00024 #include "LocFieldSubSet.hpp"
00025 namespace OA {
00026 
00027 //--------------------------------------------------------------------
00045 class LocationVisitor {
00046 protected:
00047   LocationVisitor() {}
00048 public:
00049   virtual ~LocationVisitor() {}
00050 
00051   //---------------------------------------
00052   // methods for each Location subclasses
00053   //---------------------------------------
00054   
00055   virtual void visitNamedLoc(NamedLoc& loc) = 0;
00056   virtual void visitUnnamedLoc(UnnamedLoc& loc) = 0;
00057   virtual void visitInvisibleLoc(InvisibleLoc& loc) = 0;
00058   virtual void visitUnknownLoc(UnknownLoc& loc) = 0;
00059 
00060   // default LocSubSet base class so that visitors can handle 
00061   // LocSubSet sub-classes added later in a generic fasion
00062   // and direct instances of LocSubSet
00063   virtual void visitLocSubSet(LocSubSet& loc) = 0;
00064 
00065   // each subclass of LocSubSet should call visitLocSubSet
00066   // as default
00067   virtual void visitLocIdxSubSet(LocIdxSubSet& loc);
00068   virtual void visitLocFieldSubSet(LocFieldSubSet& loc);
00069 };
00070 
00071 } // end of OA namespace
00072 
00073 #endif

Generated on Sat Oct 31 05:21:22 2009 for OpenAnalysis by  doxygen 1.6.1