00001 /* Grid_Certificate class declaration. 00002 Copyright (C) 2001-2006 Roberto Bagnara <bagnara@cs.unipr.it> 00003 00004 This file is part of the Parma Polyhedra Library (PPL). 00005 00006 The PPL is free software; you can redistribute it and/or modify it 00007 under the terms of the GNU General Public License as published by the 00008 Free Software Foundation; either version 2 of the License, or (at your 00009 option) any later version. 00010 00011 The PPL is distributed in the hope that it will be useful, but WITHOUT 00012 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 00013 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 00014 for more details. 00015 00016 You should have received a copy of the GNU General Public License 00017 along with this program; if not, write to the Free Software Foundation, 00018 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307, USA. 00019 00020 For the most up-to-date information see the Parma Polyhedra Library 00021 site: http://www.cs.unipr.it/ppl/ . */ 00022 00023 #ifndef PPL_Grid_Certificate_defs_hh 00024 #define PPL_Grid_Certificate_defs_hh 1 00025 00026 #include "Grid_Certificate.types.hh" 00027 00028 #include "Grid.types.hh" 00029 #include "globals.defs.hh" 00030 #include <cassert> 00031 #include <vector> 00032 00034 00043 class Parma_Polyhedra_Library::Grid_Certificate { 00044 public: 00046 Grid_Certificate(); 00047 00049 Grid_Certificate(const Grid& gr); 00050 00052 Grid_Certificate(const Grid_Certificate& y); 00053 00055 ~Grid_Certificate(); 00056 00058 00063 int compare(const Grid_Certificate& y) const; 00064 00066 int compare(const Grid& gr) const; 00067 00068 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS 00069 00073 #endif // PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS 00074 bool is_stabilizing(const Grid& gr) const; 00075 00077 00081 struct Compare { 00083 bool operator()(const Grid_Certificate& x, 00084 const Grid_Certificate& y) const; 00085 }; 00086 00087 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS 00089 #endif // PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS 00090 bool OK() const; 00091 00092 private: 00095 dimension_type num_equalities; 00098 dimension_type num_proper_congruences; 00099 }; 00100 00101 #include "Grid_Certificate.inlines.hh" 00102 00103 #endif // !defined(PPL_Grid_Certificate_defs_hh)