]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/CodingStyle
release: 0.0.9
[lilypond.git] / Documentation / CodingStyle
1 -*-text-*-
2
3 CODING STANDARDS:
4
5 Functions and methods do not return errorcodes, but use assert for
6 checking status. 
7
8 INDENTATION, in emacs:
9
10
11 (add-hook 'c-mode-hook
12           '(lambda ()(setq c-basic-offset 4)))
13
14
15 (add-hook 'c++-mode-hook
16           '(lambda() (c-set-style "Stroustrup")
17              )
18           )
19
20
21 CLASSES and TYPES:
22
23         This_is_a_class
24         AClass_name     (for Abbreviation_class_name)
25
26 DATA MEMBERS
27
28         Class::member
29
30 if the member's name resembles its type, then I use
31
32         class Fubular { ..}
33
34         Class::fubular_
35
36 COMMENTS
37
38 /// short description
39 class Class {
40         ///
41         Data data_member_;
42         /**
43                 ..
44         */
45
46         /****************/
47
48         /// short memo
49         member();
50         /**
51                 long doco of member()
52         */
53 };
54 /**
55         Class documentation.
56 */
57
58 Unfortunately most of the code isn't really documented that good.
59
60 CLASSNAMES (2)
61
62 A lot of classes in LilyPond start with 'P', this is to distinguish
63 certain parts of LilyPond: the P stands for Printer, and the P-classes
64 are supposed to be more lowlevel than the others. Example:
65
66         Staff uses PStaff, PScore and PCol to do the typesetting of
67 symbols. Staff is are the "brains" for PStaff
68
69 NB: in PCursor (which is part of the library) P stands for PointerCursor
70
71
72 MEMBERS(2)
73
74 Standard methods:
75
76         ///check that *this satisfies its invariants, abort if not.
77         void OK() const
78
79         /// print *this (and substructures) to debugging log
80         void print() const
81
82         /// add some data to *this; 
83         add( .. )
84         /**
85         Presence of these methods usually imply that it is not feasible to this
86         via  a constructor
87         */
88
89         /// replace some data of *this
90         set( .. )
91