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: