CGAL 5.5.1 - Manual
|
Names, in particular (member) function names and class names should be descriptive and easily remembered. So it is not surprising that different libraries or packages choose the same name for corresponding or similar classes and functions. A common approach to solving the naming problem is to add a prefix, for example, OpenGL adds gl
and FLTK adds fl
. LEDA uses prefix leda_
to some extent, but you have to tell LEDA not to make the corresponding unprefixed names available as well.CGAL's makefile does this by setting -DLEDA_PREFIX
. Initially, CGAL used prefix CGAL_
. At the beginning of 1999, it was decided to drop prefix CGAL_
and to introduce namespace CGAL
.
All names introduced by CGAL should be in namespace CGAL
, e.g.:
Make sure not to have include statements nested between namespace CGAL {
and } // namespace CGAL
. Otherwise all names defined in the file included will be added to namespace CGAL
.
All names introduced by CGAL which are not documented to the user should be under an internal
subnamespace of CGAL
, e.g.:
According to the resolutions of the following issues in the forthcoming C++-standard ( 225, 226 and 229 ):
Unless otherwise specified, no global or non-member function in the standard library shall use a function from another namespace which is found through argument-dependent name lookup
the namespace CGAL::NTS
does not need to be used anymore (currently CGAL_NTS
macro boils down to CGAL::
).
Requirements:
CGAL
(including namespaces nested in namespace CGAL
). square
, sign
, abs
, \( \dots\) ) by CGAL::
to ensure the functions used are the one from CGAL and not one from another library. If you want to allow an optimized function from another library to be used, then you should not qualify the call and document it explicitly (if appropriate).