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