CGAL Developers Manual
Table of Contents

Title Page
Table of Contents
1   Introduction
   1.1 Primary design goals
   1.2 The overall design
2   Coding Conventions
   2.1 Naming scheme
   2.2 Programming conventions
   2.3 Code format
   2.4 File header
3   Geometry Kernels
   3.1 Cartesian and homogeneous representation
   3.2 Cartesian versus homogeneous computation
   3.3 Available kernels
   3.4 Kernel design and conventions
   3.5 Number-type based predicates
   3.6 Missing functionality
4   Traits Classes
   4.1 What are traits classes in CGAL?
   4.2 Why are traits classes in CGAL?
   4.3 An example - planar convex hulls
   4.4 Kernel as traits
5   Checks: Pre- and Postconditions, Assertions, and Warnings
   5.1 Categories of checks
   5.2 Using checks
   5.3 Controlling checks at a finer granularity
   5.4 Exception handling
6   Reference Counting and Handle Types
   6.1 Reference counting
   6.2 Handle & Rep
   6.3 Using Handle & Rep
   6.4 Templated handles
   6.5 Using templated handles
   6.6 Allocation
7   Memory Management
   7.1 The C++ standard allocator interface
   7.2 The allocator macro
   7.3 Using the allocator
8   Namespaces
   8.1 What are namespaces
   8.2 Namespace std
   8.3 Namespace CGAL
   8.4 Name lookup
   8.5 Namespace CGAL::NTS
9   Polymorphic Return Types
10   Iterators and Circulators (and Handles)
   10.1 Iterator and circulator traits
   10.2 Input and output iterators
   10.3 Writing code with and for iterators, circulators, and handles
11   Robustness Issues
   11.1 The role of predicates and constructions
12   Portability Issues
   12.1 Checking for LEDA or GMP support
   12.2 Using Boost
   12.3 Using the version-number and configuration macros and flags
   12.4 Identifying compilers and architectures
   12.5 Known problems and workarounds
13   Debugging Tips
   13.1 Graphical debugging
   13.2 Cross-checkers
   13.3 Examining the values of variables
14   Editorial Committee
15   Recommended Reading
Bibliography
Index