1 /* Documentation for used namespaces. 2 Copyright (C) 2001-2010 Roberto Bagnara <bagnara@cs.unipr.it> 3 Copyright (C) 2010-2016 BUGSENG srl (http://bugseng.com) 4 5 This file is part of the Parma Polyhedra Library (PPL). 6 7 The PPL is free software; you can redistribute it and/or modify it 8 under the terms of the GNU General Public License as published by the 9 Free Software Foundation; either version 3 of the License, or (at your 10 option) any later version. 11 12 The PPL is distributed in the hope that it will be useful, but WITHOUT 13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 15 for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with this program; if not, write to the Free Software Foundation, 19 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307, USA. 20 21 For the most up-to-date information see the Parma Polyhedra Library 22 site: http://bugseng.com/products/ppl/ . */ 23 24 #ifndef PPL_namespaces_hh 25 #define PPL_namespaces_hh 1 26 27 //! The entire library is confined to this namespace. 28 namespace Parma_Polyhedra_Library { 29 30 //! All input/output operators are confined to this namespace. 31 /*! \ingroup PPL_CXX_interface 32 This is done so that the library's input/output operators 33 do not interfere with those the user might want to define. 34 In fact, it is highly unlikely that any predefined I/O 35 operator will suit the needs of a client application. 36 On the other hand, those applications for which the PPL 37 I/O operator are enough can easily obtain access to them. 38 For example, a directive like 39 \code 40 using namespace Parma_Polyhedra_Library::IO_Operators; 41 \endcode 42 would suffice for most uses. 43 In more complex situations, such as 44 \code 45 const Constraint_System& cs = ...; 46 copy(cs.begin(), cs.end(), 47 ostream_iterator<Constraint>(cout, "\n")); 48 \endcode 49 the Parma_Polyhedra_Library namespace must be suitably extended. 50 This can be done as follows: 51 \code 52 namespace Parma_Polyhedra_Library { 53 // Import all the output operators into the main PPL namespace. 54 using IO_Operators::operator<<; 55 } 56 \endcode 57 */ 58 namespace IO_Operators { 59 } // namespace IO_Operators 60 61 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS 62 //! Types and functions implementing checked numbers. 63 /*! \ingroup PPL_CXX_interface */ 64 #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS) 65 namespace Checked { 66 } // namespace Checked 67 68 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS 69 //! %Implementation related data and functions. 70 /*! \ingroup PPL_CXX_interface */ 71 #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS) 72 namespace Implementation { 73 } // namespace Implementation 74 75 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS 76 //! Data and functions related to language interfaces. 77 #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS) 78 namespace Interfaces { 79 80 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS 81 //! Data and functions related to the C language interface. 82 /*! \ingroup PPL_C_interface */ 83 #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS) 84 namespace C { 85 86 } // namespace C 87 88 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS 89 //! Data and functions related to the Java language interface. 90 /*! \ingroup PPL_Java_interface */ 91 #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS) 92 namespace Java { 93 94 } // namespace Java 95 96 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS 97 //! Data and functions related to the OCaml language interface. 98 /*! \ingroup PPL_OCaml_interface */ 99 #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS) 100 namespace OCaml { 101 102 } // namespace OCaml 103 104 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS 105 //! Data and functions related to the Prolog language interfaces. 106 /*! \ingroup PPL_Prolog_interface */ 107 #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS) 108 namespace Prolog { 109 110 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS 111 //! Data and functions related to the Ciao Prolog language interface. 112 /*! \ingroup PPL_Prolog_interface */ 113 #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS) 114 namespace Ciao { 115 116 } // namespace Ciao 117 118 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS 119 //! Data and functions related to the GNU Prolog language interface. 120 /*! \ingroup PPL_Prolog_interface */ 121 #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS) 122 namespace GNU { 123 124 } // namespace GNU 125 126 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS 127 //! Data and functions related to the SICStus language interface. 128 /*! \ingroup PPL_Prolog_interface */ 129 #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS) 130 namespace SICStus { 131 132 } // namespace SICStus 133 134 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS 135 //! Data and functions related to the SWI-Prolog language interface. 136 /*! \ingroup PPL_Prolog_interface */ 137 #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS) 138 namespace SWI { 139 140 } // namespace SWI 141 142 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS 143 //! Data and functions related to the XSB language interface. 144 /*! \ingroup PPL_Prolog_interface */ 145 #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS) 146 namespace XSB { 147 148 } // namespace XSB 149 150 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS 151 //! Data and functions related to the YAP language interface. 152 /*! \ingroup PPL_Prolog_interface */ 153 #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS) 154 namespace YAP { 155 156 } // namespace YAP 157 158 } // namespace Prolog 159 160 } // namespace Interfaces 161 162 } // namespace Parma_Polyhedra_Library 163 164 165 //! The standard C++ namespace. 166 /*! \ingroup PPL_CXX_interface 167 The Parma Polyhedra Library conforms to the C++ standard and, 168 in particular, as far as reserved names are concerned (17.4.3.1, 169 [lib.reserved.names]). The PPL, however, defines several 170 template specializations for the standard library class template 171 <CODE>numeric_limits</CODE> (18.2.1, [lib.limits]). 172 173 \note 174 The PPL provides the specializations of the class template 175 <CODE>numeric_limits</CODE> not only for PPL-specific numeric types, 176 but also for the GMP types <CODE>mpz_class</CODE> and 177 <CODE>mpq_class</CODE>. These specializations will be removed 178 as soon as they will be provided by the C++ interface of GMP. 179 */ 180 namespace std { 181 } // namespace std 182 183 184 #endif // !defined(PPL_namespaces_hh) 185