00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef CERTI_BASE_REGION_HH
00026 #define CERTI_BASE_REGION_HH
00027
00028 #include "Extent.hh"
00029 #include "Handled.hh"
00030
00031 #include <vector>
00032
00033 namespace certi {
00034
00035 typedef Handle RegionHandle ;
00036
00037 class CERTI_EXPORT BaseRegion : public Handled<RegionHandle>
00038 {
00039 public:
00040 BaseRegion(RegionHandle);
00041 virtual ~BaseRegion();
00042
00043 virtual ULong getRangeLowerBound(ExtentIndex, DimensionHandle) const
00044 throw (ArrayIndexOutOfBounds);
00045
00046 virtual ULong getRangeUpperBound(ExtentIndex, DimensionHandle) const
00047 throw (ArrayIndexOutOfBounds);
00048
00049 virtual void setRangeLowerBound(ExtentIndex, DimensionHandle, ULong)
00050 throw (ArrayIndexOutOfBounds);
00051
00052 virtual void setRangeUpperBound(ExtentIndex, DimensionHandle, ULong)
00053 throw (ArrayIndexOutOfBounds);
00054
00055 virtual ULong getNumberOfExtents() const
00056 throw ();
00057
00058 virtual SpaceHandle getSpaceHandle() const
00059 throw () = 0 ;
00060
00061 const std::vector<Extent> &getExtents() const ;
00062 void replaceExtents(const std::vector<Extent> &) throw (InvalidExtents);
00063 bool overlaps(const BaseRegion ®ion) const ;
00064
00065 protected:
00066 void setExtents(const std::vector<Extent> &);
00067
00068 std::vector<Extent> extents ;
00069 };
00070
00071 }
00072
00073 #endif // CERTI_BASE_REGION_HH