1 /* Copyright (C) 2001-2010 Roberto Bagnara <bagnara@cs.unipr.it>
2    Copyright (C) 2010-2016 BUGSENG srl (http://bugseng.com)
3 
4 This file is free software; as a special exception the author gives
5 unlimited permission to copy and/or distribute it, with or without
6 modifications, as long as this notice is preserved.
7 
8 This program is distributed in the hope that it will be useful, but
9 WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
10 implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11 PURPOSE. */
12 
13 #ifndef PPL_GMP_Integer_types_hh
14 #define PPL_GMP_Integer_types_hh 1
15 
16 #include "Coefficient_traits_template.hh"
17 #include "mp_std_bits_defs.hh"
18 #include <gmpxx.h>
19 
20 namespace Parma_Polyhedra_Library {
21 
22 /*! \class Parma_Polyhedra_Library::GMP_Integer
23   \brief
24   Unbounded integers as provided by the GMP library.
25 
26   \ingroup PPL_CXX_interface
27   GMP_Integer is an alias for the <CODE>mpz_class</CODE> type
28   defined in the C++ interface of the GMP library.
29   For more information, see <CODE>http://gmplib.org/</CODE>
30 */
31 typedef mpz_class GMP_Integer;
32 
33 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS
34 //! Coefficient traits specialization for unbounded integers.
35 /*! \ingroup PPL_CXX_interface */
36 #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS)
37 template <>
38 struct Coefficient_traits_template<GMP_Integer> {
39   //! The type used for references to const unbounded integers.
40   typedef const GMP_Integer& const_reference;
41 };
42 
43 } // namespace Parma_Polyhedra_Library
44 
45 #endif // !defined(PPL_GMP_Integer_types_hh)
46