|
Packit |
0ec9dd |
Formatting
|
|
Packit |
0ec9dd |
==========
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
The Pango formatting style is basically the GNU style of formatting
|
|
Packit |
0ec9dd |
(see http://www.gnu.org/prep/standards.html), with a few additions.
|
|
Packit |
0ec9dd |
In brief overview:
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
- Two character indents are used; braces go on a separate line, and
|
|
Packit |
0ec9dd |
get a separate indentation level, so the total indent for an
|
|
Packit |
0ec9dd |
enclosed block is 4 characters.
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
if (x < foo (y, z))
|
|
Packit |
0ec9dd |
haha = bar[4] + 5;
|
|
Packit |
0ec9dd |
else
|
|
Packit |
0ec9dd |
{
|
|
Packit |
0ec9dd |
while (z)
|
|
Packit |
0ec9dd |
{
|
|
Packit |
0ec9dd |
haha += foo (z, z);
|
|
Packit |
0ec9dd |
z--;
|
|
Packit |
0ec9dd |
}
|
|
Packit |
0ec9dd |
return abc (haha);
|
|
Packit |
0ec9dd |
}
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
- Spaces should be present between function name and argument block,
|
|
Packit |
0ec9dd |
and after commas.
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
foo (z, z)
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
- In pointer types, the '*' is grouped with the variable name,
|
|
Packit |
0ec9dd |
not with the base type.
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
int *a;
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
NOT: 'int* a'.
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
In cases where there is no variable name, for instance, return
|
|
Packit |
0ec9dd |
values, there should be a single space between the base type
|
|
Packit |
0ec9dd |
and the '*'.
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
- function and variable names are lower_case_with_underscores
|
|
Packit |
0ec9dd |
type names are StudlyCaps, macro names are UPPER_CASE_WITH_UNDERSCORES
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
Documentation comments
|
|
Packit |
0ec9dd |
======================
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
All public API functions should have inline documentation headers
|
|
Packit |
0ec9dd |
in the gtk-doc / gnome-doc style. For instance:
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
/**
|
|
Packit |
0ec9dd |
* pango_layout_get_line:
|
|
Packit |
0ec9dd |
* @layout: a #PangoLayout
|
|
Packit |
0ec9dd |
* @line: the index of a line, which must be between 0 and
|
|
Packit |
0ec9dd |
* pango_layout_get_line_count(layout) - 1, inclusive.
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* Retrieves a particular line from a #PangoLayout (or @layout.)
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* Return value: the requested #PangoLayoutLine, or %NULL if the
|
|
Packit |
0ec9dd |
* index is out of range. This layout line can
|
|
Packit |
0ec9dd |
* be ref'ed and retained, but will become invalid
|
|
Packit |
0ec9dd |
* if changes are made to the #PangoLayout.
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* Since: 1.6
|
|
Packit |
0ec9dd |
**/
|
|
Packit |
0ec9dd |
PangoLayoutLine *
|
|
Packit |
0ec9dd |
pango_layout_get_line (PangoLayout *layout,
|
|
Packit |
0ec9dd |
int line)
|
|
Packit |
0ec9dd |
[...]
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
Choosing Function Names
|
|
Packit |
0ec9dd |
=======================
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
- Don't abbreviate in unexpected ways:
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
pango_layout_get_line_count ()
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
Not:
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
pango_layout_ln_cnt ()
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
- function that retrieve a value in a side-effect free fashion, should
|
|
Packit |
0ec9dd |
include "get" in the name.
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
int pango_layout_get_line_count (PangoLayout *layout)
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
not
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
pango_layout_line_count ()
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
- functions that set a single parameter in a side-effect free fashion
|
|
Packit |
0ec9dd |
should include "set" in the name, for instance:
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
void pango_layout_set_width (PangoLayout *layout,
|
|
Packit |
0ec9dd |
int width);
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
Other comments
|
|
Packit |
0ec9dd |
==============
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
- Avoid unsigned values for all but flags fields. This is because
|
|
Packit |
0ec9dd |
the way C handles unsigned values generates bugs like crazy:
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
If width is unsigned and 10, then:
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
int new_width = MAX (width - 15, 1);
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
produces 4294967291, not 1.
|
|
Packit |
0ec9dd |
|