CGAL Developers Manual
Table of Contents


Title Page
Table of Contents
Short Table of Contents

1   Introduction
   1.1 Manual organization
   1.2 Primary design goals
   1.3 The overall design
2   Specification Documentation
   2.1 File and directory organization
   2.2 The manual tools
   2.3 Users' manual
   2.4 Reference manual
   2.5 Figures
   2.6 Indexing
   2.7 Test suite
   2.8 Common problems and solutions
   2.9 Requirements and recommendations
3   SVN Server
   3.1 Structure of the repository
   3.2 Access to the repository
   3.3 How to use it
4   Directory Structure for Packages
   4.1 test subdirectory
   4.2 doc_tex subdirectory
   4.3 examples subdirectory
   4.4 demo subdirectory
   4.5 Requirements and recommendations
5   Scripts and Other Tools
   5.1 create_assertions.sh
   5.2 remove_line_directives
   5.3 rename_clib_calls
   5.4 cgal_create_makefile
   5.5 create_cgal_test
   5.6 autotest_cgal
   5.7 create_internal_module
   5.8 create_modules
   5.9 check_licenses
6   Coding Conventions
   6.1 Naming scheme
   6.2 Programming conventions
   6.3 Code format
   6.4 File header
   6.5 Requirements and recommendations
7   Geometry Kernels
   7.1 Cartesian and homogeneous representation
   7.2 Cartesian versus homogeneous computation
   7.3 Available kernels
   7.4 Kernel design and conventions
   7.5 Number-type based predicates
   7.6 Missing functionality
8   Traits Classes
   8.1 What are traits classes in CGAL?
   8.2 Why are traits classes in CGAL?
   8.3 An example - planar convex hulls
   8.4 Kernel as traits
   8.5 Requirements and recommendations
9   Checks: Pre- and Postconditions, Assertions, and Warnings
   9.1 Categories of checks
   9.2 Using checks
   9.3 Controlling checks at a finer granularity
   9.4 Exception handling
   9.5 Requirements and recommendations
10   Reference Counting and Handle Types
   10.1 Reference counting
   10.2 Handle & Rep
   10.3 Using Handle & Rep
   10.4 Templated handles
   10.5 Using templated handles
   10.6 Allocation
11   Memory Management
   11.1 The C++ standard allocator interface
   11.2 The allocator macro
   11.3 Using the allocator
   11.4 Requirements and recommendations
12   Namespaces
   12.1 What are namespaces
   12.2 Namespace std
   12.3 Namespace CGAL
   12.4 Name lookup
   12.5 Namespace CGAL::NTS
   12.6 Requirements and recommendations
13   Polymorphic Return Types
14   Iterators and Circulators (and Handles)
   14.1 Iterator and circulator traits
   14.2 Input and output iterators
   14.3 Writing code with and for iterators, circulators, and handles
   14.4 Requirements and recommendations
15   Robustness Issues
   15.1 The role of predicates and constructions
   15.2 Requirements and recommendations
16   Portability Issues
   16.1 Checking for LEDA or GMP support
   16.2 Using Boost
   16.3 Identifying CGAL and LEDA versions
   16.4 Using the version-number and configuration macros and flags
   16.5 Identifying compilers and architectures
   16.6 Known problems and workarounds
   16.7 Requirements and recommendations
17   Testing
   17.1 What a test suite for a package should contain
   17.2 Using the code coverage tool gcov
   17.3 Test suite directory
   17.4 Test suite input
   17.5 Running the test suite
   17.6 Files generated by the test suite
   17.7 Test suite results
   17.8 Requirements and recommendations
18   Debugging Tips
   18.1 Graphical debugging
   18.2 Cross-checkers
   18.3 Examining the values of variables
   18.4 Requirements and recommendations
19   Example and Demo Programs
   19.1 Coding conventions
   19.2 The Programs
   19.3 Including programs in documentation
   19.4 Demo programs on the web
   19.5 Requirements and recommendations
20   Submitting Packages
   20.1 Editorial committee
   20.2 Electronic submission
   20.3 When something goes wrong
   20.4 Requirements and recommendations
21   Making Releases
   21.1 Internal Releases
   21.2 Public Releases
22   The CGAL Web Site
   22.1 SVN cgal-web Project and Maintenance
   22.2 Regular Tasks
23   Mailing Lists and Addresses
24   Sources of Information
   24.1 Recommended reading
   24.2 Web documents and pages
Bibliography
Index