00001 #ifndef MAXIMALCELLSET_H
00002 #define MAXIMALCELLSET_H
00003
00004 #include "SundanceDefs.h"
00005
00006 #include <string>
00007 #include "CellSetBase.h"
00008 #include "CellReordererBase.h"
00009 #include "TSFSmartPtr.h"
00010
00011
00012 namespace Sundance
00013 {
00014
00015 using namespace TSF;
00016 using std::string;
00017
00018 using std::ostream;
00019
00020
00021
00022
00023
00024 class MaximalCellSet : public CellSetBase
00025 {
00026 public:
00027
00028 MaximalCellSet() : CellSetBase() {;}
00029
00030
00031 virtual ~MaximalCellSet(){;}
00032
00033
00034 virtual bool contains(const Cell& cell) const ;
00035
00036
00037 virtual XMLObject toXML() const ;
00038
00039
00040
00041 virtual int dimension(const Mesh& mesh) const ;
00042
00043
00044
00045 virtual bool equals(const CellSet& other) const ;
00046
00047
00048 virtual bool lessThan(const CellSet& other) const ;
00049
00050 static void setReorderer(const TSFSmartPtr<CellReordererBase>& r)
00051 {customReorderer_ = r;}
00052
00053
00054 TSFSmartPtr<TSFArray<int> > getCellOrdering(const Mesh& mesh) const ;
00055 protected:
00056
00057 virtual TSFSmartPtr<TSFArray<Cell> >
00058 innerGetOrderedCells(const Mesh& mesh) const ;
00059
00060
00061 static TSFSmartPtr<CellReordererBase>& defaultReorderer() ;
00062
00063
00064 static TSFSmartPtr<CellReordererBase> customReorderer_;
00065
00066 TSFSmartPtr<CellReordererBase> reorderer() const ;
00067 };
00068
00069 }
00070 #endif