1 /* -*- mode: C++; indent-tabs-mode: nil; -*-
3 * This file is a part of LEMON, a generic C++ optimization library.
5 * Copyright (C) 2003-2009
6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
7 * (Egervary Research Group on Combinatorial Optimization, EGRES).
9 * Permission to use, modify and distribute this software is granted
10 * provided that this copyright notice appears in all copies. For
11 * precise terms see the accompanying LICENSE file.
13 * This software is provided "AS IS" with no warranty of any kind,
14 * express or implied, and with no claim as to its suitability for any
21 \page coding_style LEMON Coding Style
23 \section naming_conv Naming Conventions
25 In order to make development easier we have made some conventions
26 according to coding style. These include names of types, classes,
27 functions, variables, constants and exceptions. If these conventions
28 are met in one's code then it is easier to read and maintain
29 it. Please comply with these conventions if you want to contribute
30 developing LEMON library.
32 \note When the coding style requires the capitalization of an abbreviation,
33 only the first letter should be upper case.
40 \warning In some cases we diverge from these rules.
41 This is primary done because STL uses different naming convention and
43 it is beneficial to provide STL compatible interface.
45 \subsection cs-files File Names
47 The header file names should look like the following.
53 Note that all standard LEMON headers are located in the \c lemon subdirectory,
54 so you should include them from C++ source like this:
57 #include <lemon/header_file.h>
60 The source code files use the same style and they have '.cc' extension.
66 \subsection cs-class Classes and other types
68 The name of a class or any type should look like the following.
71 AllWordsCapitalizedWithoutUnderscores
74 \subsection cs-func Methods and other functions
76 The name of a function should look like the following.
79 firstWordLowerCaseRestCapitalizedWithoutUnderscores
82 \subsection cs-funcs Constants, Macros
84 The names of constants and macros should look like the following.
87 ALL_UPPER_CASE_WITH_UNDERSCORES
90 \subsection cs-loc-var Class and instance member variables, auto variables
92 The names of class and instance member variables and auto variables
93 (=variables used locally in methods) should look like the following.
96 all_lower_case_with_underscores
99 \subsection pri-loc-var Private member variables
101 Private member variables should start with underscore
104 _start_with_underscores
107 \subsection cs-excep Exceptions
109 When writing exceptions please comply the following naming conventions.
112 ClassNameEndsWithException
118 ClassNameEndsWithError
121 \section header-template Template Header File
123 Each LEMON header file should look like this: