\subsection*{Internal releases} \ccIndexSubsubitemBegin{source files}{headings for}{internal releases} The heading of a \cgal\ source file that is submitted (for an internal release) should have the following format: \begin{verbatim} // ============================================================================ // // Copyright (c) 1997-2001 The CGAL Consortium // // This software and related documentation is part of an INTERNAL release // of the Computational Geometry Algorithms Library (CGAL). It is not // intended for general use. // // ---------------------------------------------------------------------------- // // release : $CGAL_Revision$ // release_date : $CGAL_Date$ // // file : include/CGAL/Min_ellipse_2.h // package : Min_ellipse_2 (3.5.4) // chapter : Geometric Optimisation // // source : web/Optimisation/Min_ellipse_2.aw // revision : $Revision$ // revision_date : $Date$ // // author(s) : Bernd Gaertner, Sven Schoenherr // maintainer : Sven Schoenherr // coordinator : ETH Zuerich (Bernd Gaertner ) // // implementation: 2D Smallest Enclosing Ellipse // ============================================================================ \end{verbatim} The following rules apply to the fields: \begin{itemize} \item {\tt }, {\tt }, and {\tt } must be present but need not be filled in (since they will be overwritten when the internal release is created). \item {\tt }, {\tt }, {\tt }, and {\tt } are obligatory and must be filled in. \item {\tt }, {\tt }, {\tt }, {\tt }, and {\tt } are optional. \item For the {\tt } field, the coordinating site as well as the person in charge is named, together with the person's e-mail address. \item Optionally, the next-to-last line may contain a comment on the functionality of the source file's content. \end{itemize} When a new internal release is generated\ccIndexMainItem{internal release}, the fields {\tt } and {\tt } are overwritten. The release label for the internal release is composed of the number of the next public release, an~{\tt I} (for ``internal''), and a positive integer that represents the internal release number (\eg, e.g.~{\tt CGAL-2.2-I-1} was the number of the first internal release after public release 2.1).% \ccIndexSubitem{internal release}{number} If the field {\tt } is blank, it is filled in with the name and email address of the last person who submitted the package.% \ccIndexSubitem{\tt maintainer}{field in file header} All other fields between the two delimiting lines of equal signs remain untouched. \ccIndexSubsubitemEnd{source files}{headings for}{internal releases} \subsection*{Public releases} \ccIndexSubsubitemBegin{source files}{headings for}{public releases} When a new public release is generated, only the fields {\tt }, {\tt }, \mbox{{\tt }} (if present), and {\tt } are kept. The heading of the source file (generated by the \texttt{make\_public\_header} script (see Chapter~\ref{chap:releases}) will become something like this: \begin{verbatim} // ============================================================================ // // Copyright (c) 1997-2000 The CGAL Consortium // // This software and related documentation is part of the // Computational Geometry Algorithms Library (CGAL). // // This software and documentation is provided "as-is" and without warranty // of any kind. In no event shall the CGAL Consortium be liable for any // damage of any kind. // // Every use of CGAL requires a license. // // Academic research and teaching license // - For academic research and teaching purposes, permission to use and copy // the software and its documentation is hereby granted free of charge, // provided that it is not a component of a commercial product, and this // notice appears in all copies of the software and related documentation. // // Commercial licenses // - A commercial license is available through Algorithmic Solutions, // (http://www.algorithmic-solutions.com). // - Commercial users may apply for an evaluation license by writing to // Algorithmic Solutions (contact@algorithmic-solutions.com). // // The CGAL Consortium consists of Utrecht University (The Netherlands), // ETH Zurich (Switzerland), Freie Universitaet Berlin (Germany), // INRIA Sophia-Antipolis (France), Martin-Luther-University Halle-Wittenberg // (Germany), Max-Planck-Institute Saarbrucken (Germany), RISC Linz (Austria), // and Tel-Aviv University (Israel). // // ---------------------------------------------------------------------------- // // release : CGAL-2.1 // release_date : 2000, January 11 // // file : include/CGAL/Min_ellipse_2.h // package : Min_ellipse_2 (3.5.4) // chapter : Geometric Optimisation // author(s) : Bernd Gaertner, Sven Schoenherr // // email : cgal@cs.uu.nl // // ============================================================================ \end{verbatim} \ccIndexSubsubitemEnd{source files}{headings for}{public releases} \ccIndexSubitemEnd{source files}{headings for} \section{Requirements and recommendations} \label{sec:code_format_doc_req_and_rec} \noindent Requirements: \begin{itemize} \item Follow the naming schemes outlined above. \item Provide typedefs of template arguments as necessary to make the template parameters accessible elsewhere. \item Label member function and parameters with \ccc{const} where appropriate \item Use \CC-style type casts. \item Protect header files from multiple inclusions. \item Obey the code format rules outlined above. \item Provide a header for each submitted file in the proper format. \end{itemize}