~pmdj/ubuntu/trusty/qemu/2.9+applesmc+fadtv3

« back to all changes in this revision

Viewing changes to pixman/CODING_STYLE

  • Committer: Phil Dennis-Jordan
  • Date: 2017-07-21 08:03:43 UTC
  • mfrom: (1.1.1)
  • Revision ID: phil@philjordan.eu-20170721080343-2yr2vdj7713czahv
New upstream release 2.9.0.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
Pixman coding style.
 
2
====================
 
3
 
 
4
The pixman coding style is close to cairo's with one exception: braces
 
5
go on their own line, rather than on the line of the if/while/for:
 
6
 
 
7
        if (condition)
 
8
        {
 
9
            do_something();
 
10
            do_something_else();
 
11
        }
 
12
 
 
13
not
 
14
 
 
15
        if (condition) {
 
16
            do_something();
 
17
            do_something_else();
 
18
        }
 
19
 
 
20
 
 
21
 
 
22
Indentation
 
23
===========
 
24
 
 
25
Each new level is indented four spaces:
 
26
 
 
27
        if (condition)
 
28
            do_something();
 
29
 
 
30
This may be achieved with space characters or with a combination of
 
31
tab characters and space characters. Tab characters are interpreted as
 
32
 
 
33
        Advance to the next column which is a multiple of 8.
 
34
 
 
35
 
 
36
Names
 
37
=====
 
38
 
 
39
In all names, words are separated with underscores. Do not use
 
40
CamelCase for any names.
 
41
 
 
42
Macros have ALL_CAPITAL_NAMES
 
43
 
 
44
Type names are in lower case and end with "_t". For example
 
45
pixman_image_t.
 
46
 
 
47
Labels, functions and variables have lower case names.
 
48
 
 
49
 
 
50
Braces
 
51
======
 
52
 
 
53
Braces always go on their own line:
 
54
 
 
55
        if (condition)
 
56
        {
 
57
            do_this ();
 
58
            do_that ();
 
59
        }
 
60
        else
 
61
        {
 
62
            do_the_other ();
 
63
        }
 
64
 
 
65
Rules for braces and substatements of if/while/for/do:
 
66
 
 
67
* If a substatement spans multiple lines, then there must be braces
 
68
  around it.
 
69
 
 
70
* If the condition of an if/while/for spans multiple lines, then 
 
71
  braces must be used for the substatements.
 
72
 
 
73
* If one substatement of an if statement has braces, then the other
 
74
  must too.
 
75
 
 
76
* Otherwise, don't add braces.
 
77
 
 
78
 
 
79
Comments
 
80
========
 
81
 
 
82
For comments either like this:
 
83
 
 
84
        /* One line comment */
 
85
 
 
86
or like this:
 
87
 
 
88
        /* This is a multi-line comment
 
89
         *
 
90
         * It extends over multiple lines
 
91
         */
 
92
 
 
93
Generally comments should say things that aren't clear from the code
 
94
itself. If too many comments say obvious things, then people will just
 
95
stop reading all comments, including the good ones.
 
96
 
 
97
 
 
98
Whitespace
 
99
==========
 
100
 
 
101
* Put a single space after commas
 
102
 
 
103
* Put spaces around arithmetic operators such a +, -, *, /:
 
104
 
 
105
        y * stride + x
 
106
 
 
107
        x / unit_x
 
108
 
 
109
* Do not put spaces after the address-of operator, the * when used as
 
110
  a pointer derefernce or the ! and ~ operators:
 
111
 
 
112
     &foo;
 
113
 
 
114
     ~0x00000000
 
115
 
 
116
     !condition
 
117
 
 
118
     *result = 100
 
119
 
 
120
* Break up long lines (> ~80 characters) and use whitespace to align
 
121
  things nicely. This is one way:
 
122
 
 
123
         some_very_long_function name (
 
124
                implementation, op, src, mask, dest, 
 
125
                src_x, src_y, mask_x, mask_y, dest_x, dest_y,
 
126
                width, height);
 
127
 
 
128
  This is another:
 
129
 
 
130
        some_very_long_function_name (implementation, op,
 
131
                                      src, mask, dest,
 
132
                                      src_x, src_y,
 
133
                                      mask_x, mask_y,
 
134
                                      dest_x, dest_y,
 
135
                                      width, height);
 
136
 
 
137
* Separate logically distinct chunks with a single newline. This
 
138
  obviously applies between functions, but also applies within a
 
139
  function or block or structure definition.
 
140
 
 
141
* Use a newline after a block of variable declarations.
 
142
 
 
143
* Use a single space before a left parenthesis, except where the
 
144
  standard will not allow it, (eg. when defining a parameterized macro).
 
145
 
 
146
* Don't eliminate newlines just because things would still fit on one
 
147
  line. This breaks the expected visual structure of the code making
 
148
  it much harder to read and understand:
 
149
 
 
150
        if (condition) foo (); else bar ();     /* Yuck! */
 
151
 
 
152
 
 
153
Function Definitions
 
154
====================
 
155
 
 
156
Function definitions should take the following form:
 
157
 
 
158
        void
 
159
        my_function (int argument)
 
160
        {
 
161
            do_my_things ();
 
162
        }
 
163
 
 
164
If all the parameters to a function fit naturally on one line, format
 
165
them that way. Otherwise, put one argument on each line, adding
 
166
whitespace so that the parameter names are aligned with each other.
 
167
 
 
168
I.e., do either this:
 
169
 
 
170
        void
 
171
        short_arguments (const char *str, int x, int y, int z)
 
172
        {
 
173
        }
 
174
 
 
175
or this:
 
176
 
 
177
        void
 
178
        long_arguments (const char *char_star_arg,
 
179
                        int         int_arg,
 
180
                        double     *double_star_arg,
 
181
                        double      double_arg)
 
182
        {
 
183
        }
 
184
 
 
185
 
 
186
Mode lines
 
187
==========
 
188
 
 
189
Given the rules above, what is the best way to simplify one's life as
 
190
a code monkey? Get your editor to do most of the tedious work of
 
191
beautifying your code!
 
192
 
 
193
As a reward for reading this far, here are some mode lines for the more
 
194
popular editors:
 
195
/*
 
196
 * vim:sw=4:sts=4:ts=8:tw=78:fo=tcroq:cindent:cino=\:0,(0
 
197
 * vim:isk=a-z,A-Z,48-57,_,.,-,>
 
198
 */
 
199