1 | 1 |
/* -*- C++ -*- |
2 | 2 |
* |
3 | 3 |
* This file is a part of LEMON, a generic C++ optimization library |
4 | 4 |
* |
5 | 5 |
* Copyright (C) 2003-2008 |
6 | 6 |
* Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
7 | 7 |
* (Egervary Research Group on Combinatorial Optimization, EGRES). |
8 | 8 |
* |
9 | 9 |
* Permission to use, modify and distribute this software is granted |
10 | 10 |
* provided that this copyright notice appears in all copies. For |
11 | 11 |
* precise terms see the accompanying LICENSE file. |
12 | 12 |
* |
13 | 13 |
* This software is provided "AS IS" with no warranty of any kind, |
14 | 14 |
* express or implied, and with no claim as to its suitability for any |
15 | 15 |
* purpose. |
16 | 16 |
* |
17 | 17 |
*/ |
18 | 18 |
|
19 | 19 |
/*! |
20 | 20 |
|
21 | 21 |
\page coding_style LEMON Coding Style |
22 | 22 |
|
23 | 23 |
\section naming_conv Naming Conventions |
24 | 24 |
|
25 | 25 |
In order to make development easier we have made some conventions |
26 | 26 |
according to coding style. These include names of types, classes, |
27 | 27 |
functions, variables, constants and exceptions. If these conventions |
28 | 28 |
are met in one's code then it is easier to read and maintain |
29 | 29 |
it. Please comply with these conventions if you want to contribute |
30 | 30 |
developing LEMON library. |
31 | 31 |
|
32 | 32 |
\note When the coding style requires the capitalization of an abbreviation, |
33 | 33 |
only the first letter should be upper case. |
34 | 34 |
|
35 | 35 |
\code |
36 | 36 |
XmlReader |
37 | 37 |
\endcode |
38 | 38 |
|
39 | 39 |
|
40 | 40 |
\warning In some cases we diverge from these rules. |
41 |
This primary done because STL uses different naming convention and |
|
41 |
This is primary done because STL uses different naming convention and |
|
42 | 42 |
in certain cases |
43 | 43 |
it is beneficial to provide STL compatible interface. |
44 | 44 |
|
45 | 45 |
\subsection cs-files File Names |
46 | 46 |
|
47 | 47 |
The header file names should look like the following. |
48 | 48 |
|
49 | 49 |
\code |
50 | 50 |
header_file.h |
51 | 51 |
\endcode |
52 | 52 |
|
53 | 53 |
Note that all standard LEMON headers are located in the \c lemon subdirectory, |
54 | 54 |
so you should include them from C++ source like this: |
55 | 55 |
|
56 | 56 |
\code |
57 | 57 |
#include <lemon/header_file.h> |
58 | 58 |
\endcode |
59 | 59 |
|
60 | 60 |
The source code files use the same style and they have '.cc' extension. |
61 | 61 |
|
62 | 62 |
\code |
63 | 63 |
source_code.cc |
64 | 64 |
\endcode |
65 | 65 |
|
66 | 66 |
\subsection cs-class Classes and other types |
67 | 67 |
|
68 | 68 |
The name of a class or any type should look like the following. |
69 | 69 |
|
70 | 70 |
\code |
71 | 71 |
AllWordsCapitalizedWithoutUnderscores |
72 | 72 |
\endcode |
73 | 73 |
|
74 | 74 |
\subsection cs-func Methods and other functions |
75 | 75 |
|
76 | 76 |
The name of a function should look like the following. |
77 | 77 |
|
78 | 78 |
\code |
79 | 79 |
firstWordLowerCaseRestCapitalizedWithoutUnderscores |
80 | 80 |
\endcode |
81 | 81 |
|
82 | 82 |
\subsection cs-funcs Constants, Macros |
83 | 83 |
|
84 | 84 |
The names of constants and macros should look like the following. |
85 | 85 |
|
86 | 86 |
\code |
87 | 87 |
ALL_UPPER_CASE_WITH_UNDERSCORES |
88 | 88 |
\endcode |
89 | 89 |
|
90 | 90 |
\subsection cs-loc-var Class and instance member variables, auto variables |
91 | 91 |
|
92 | 92 |
The names of class and instance member variables and auto variables (=variables used locally in methods) should look like the following. |
93 | 93 |
|
94 | 94 |
\code |
95 | 95 |
all_lower_case_with_underscores |
96 | 96 |
\endcode |
97 | 97 |
|
98 |
\subsection pri-loc-var Private member variables |
|
99 |
|
|
100 |
Private member variables should start with underscore |
|
101 |
|
|
102 |
\code |
|
103 |
_start_with_underscores |
|
104 |
\endcode |
|
105 |
|
|
98 | 106 |
\subsection cs-excep Exceptions |
99 | 107 |
|
100 | 108 |
When writing exceptions please comply the following naming conventions. |
101 | 109 |
|
102 | 110 |
\code |
103 | 111 |
ClassNameEndsWithException |
104 | 112 |
\endcode |
105 | 113 |
|
106 | 114 |
or |
107 | 115 |
|
108 | 116 |
\code |
109 | 117 |
ClassNameEndsWithError |
110 | 118 |
\endcode |
111 | 119 |
|
112 | 120 |
\section header-template Template Header File |
113 | 121 |
|
114 | 122 |
Each LEMON header file should look like this: |
115 | 123 |
|
116 | 124 |
\include template.h |
117 | 125 |
|
118 | 126 |
*/ |
... | ... |
@@ -443,143 +443,143 @@ |
443 | 443 |
debugging and testing. |
444 | 444 |
*/ |
445 | 445 |
|
446 | 446 |
|
447 | 447 |
/** |
448 | 448 |
@defgroup timecount Time measuring and Counting |
449 | 449 |
@ingroup misc |
450 | 450 |
Here you can find simple tools for measuring the performance |
451 | 451 |
of algorithms. |
452 | 452 |
*/ |
453 | 453 |
|
454 | 454 |
/** |
455 | 455 |
@defgroup graphbits Tools for Graph Implementation |
456 | 456 |
@ingroup utils |
457 | 457 |
\brief Tools to Make It Easier to Make Graphs. |
458 | 458 |
|
459 | 459 |
This group describes the tools that makes it easier to make graphs and |
460 | 460 |
the maps that dynamically update with the graph changes. |
461 | 461 |
*/ |
462 | 462 |
|
463 | 463 |
/** |
464 | 464 |
@defgroup exceptions Exceptions |
465 | 465 |
@ingroup utils |
466 | 466 |
This group contains the exceptions thrown by LEMON library |
467 | 467 |
*/ |
468 | 468 |
|
469 | 469 |
/** |
470 | 470 |
@defgroup io_group Input-Output |
471 | 471 |
\brief Several Graph Input-Output methods |
472 | 472 |
|
473 | 473 |
Here you can find tools for importing and exporting graphs |
474 | 474 |
and graph related data. Now it supports the LEMON format, the |
475 | 475 |
\c DIMACS format and the encapsulated postscript format. |
476 | 476 |
*/ |
477 | 477 |
|
478 | 478 |
/** |
479 | 479 |
@defgroup lemon_io Lemon Input-Output |
480 | 480 |
@ingroup io_group |
481 | 481 |
\brief Reading and writing LEMON format |
482 | 482 |
|
483 | 483 |
Methods for reading and writing LEMON format. More about this |
484 | 484 |
format you can find on the \ref graph-io-page "Graph Input-Output" |
485 | 485 |
tutorial pages. |
486 | 486 |
*/ |
487 | 487 |
|
488 | 488 |
/** |
489 | 489 |
@defgroup section_io Section readers and writers |
490 | 490 |
@ingroup lemon_io |
491 | 491 |
\brief Section readers and writers for lemon Input-Output. |
492 | 492 |
|
493 | 493 |
Here you can find which section readers and writers can attach to |
494 | 494 |
the LemonReader and LemonWriter. |
495 | 495 |
*/ |
496 | 496 |
|
497 | 497 |
/** |
498 | 498 |
@defgroup item_io Item Readers and Writers |
499 | 499 |
@ingroup lemon_io |
500 | 500 |
\brief Item readers and writers for lemon Input-Output. |
501 | 501 |
|
502 | 502 |
The Input-Output classes can handle more data type by example |
503 | 503 |
as map or attribute value. Each of these should be written and |
504 | 504 |
read some way. The module make possible to do this. |
505 | 505 |
*/ |
506 | 506 |
|
507 | 507 |
/** |
508 | 508 |
@defgroup eps_io Postscript exporting |
509 | 509 |
@ingroup io_group |
510 | 510 |
\brief General \c EPS drawer and graph exporter |
511 | 511 |
|
512 | 512 |
This group contains general \c EPS drawing methods and special |
513 | 513 |
graph exporting tools. |
514 | 514 |
*/ |
515 | 515 |
|
516 | 516 |
|
517 | 517 |
/** |
518 | 518 |
@defgroup concept Concepts |
519 | 519 |
\brief Skeleton classes and concept checking classes |
520 | 520 |
|
521 | 521 |
This group describes the data/algorithm skeletons and concept checking |
522 | 522 |
classes implemented in LEMON. |
523 | 523 |
|
524 | 524 |
The purpose of the classes in this group is fourfold. |
525 | 525 |
|
526 | 526 |
- These classes contain the documentations of the concepts. In order |
527 | 527 |
to avoid document multiplications, an implementation of a concept |
528 | 528 |
simply refers to the corresponding concept class. |
529 | 529 |
|
530 | 530 |
- These classes declare every functions, <tt>typedef</tt>s etc. an |
531 | 531 |
implementation of the concepts should provide, however completely |
532 | 532 |
without implementations and real data structures behind the |
533 | 533 |
interface. On the other hand they should provide nothing else. All |
534 | 534 |
the algorithms working on a data structure meeting a certain concept |
535 | 535 |
should compile with these classes. (Though it will not run properly, |
536 | 536 |
of course.) In this way it is easily to check if an algorithm |
537 | 537 |
doesn't use any extra feature of a certain implementation. |
538 | 538 |
|
539 | 539 |
- The concept descriptor classes also provide a <em>checker class</em> |
540 | 540 |
that makes it possible check whether a certain implementation of a |
541 | 541 |
concept indeed provides all the required features. |
542 | 542 |
|
543 | 543 |
- Finally, They can serve as a skeleton of a new implementation of a concept. |
544 | 544 |
|
545 | 545 |
*/ |
546 | 546 |
|
547 | 547 |
|
548 | 548 |
/** |
549 | 549 |
@defgroup graph_concepts Graph Structure Concepts |
550 | 550 |
@ingroup concept |
551 | 551 |
\brief Skeleton and concept checking classes for graph structures |
552 | 552 |
|
553 | 553 |
This group contains the skeletons and concept checking classes of LEMON's |
554 | 554 |
graph structures and helper classes used to implement these. |
555 | 555 |
*/ |
556 | 556 |
|
557 | 557 |
/* --- Unused group |
558 | 558 |
@defgroup experimental Experimental Structures and Algorithms |
559 | 559 |
This group contains some Experimental structures and algorithms. |
560 | 560 |
The stuff here is subject to change. |
561 | 561 |
*/ |
562 | 562 |
|
563 | 563 |
/** |
564 | 564 |
\anchor demoprograms |
565 | 565 |
|
566 | 566 |
@defgroup demos Demo programs |
567 | 567 |
|
568 | 568 |
Some demo programs are listed here. Their full source codes can be found in |
569 | 569 |
the \c demo subdirectory of the source tree. |
570 | 570 |
|
571 |
The standard compilation procedure (<tt>./configure;make</tt>) will compile |
|
572 |
them, as well. |
|
571 |
It order to compile them, use <tt>--enable-demo</tt> configure option when |
|
572 |
build the library. |
|
573 | 573 |
|
574 | 574 |
*/ |
575 | 575 |
|
576 | 576 |
/** |
577 | 577 |
@defgroup tools Standalone utility applications |
578 | 578 |
|
579 | 579 |
Some utility applications are listed here. |
580 | 580 |
|
581 | 581 |
The standard compilation procedure (<tt>./configure;make</tt>) will compile |
582 | 582 |
them, as well. |
583 | 583 |
|
584 | 584 |
*/ |
585 | 585 |
|
0 comments (0 inline)