1Qemu Coding Style 2================= 3 41. Whitespace 5 6Of course, the most important aspect in any coding style is whitespace. 7Crusty old coders who have trouble spotting the glasses on their noses 8can tell the difference between a tab and eight spaces from a distance 9of approximately fifteen parsecs. Many a flamewar have been fought and 10lost on this issue. 11 12QEMU indents are four spaces. Tabs are never used, except in Makefiles 13where they have been irreversibly coded into the syntax. 14Spaces of course are superior to tabs because: 15 16 - You have just one way to specify whitespace, not two. Ambiguity breeds 17 mistakes. 18 - The confusion surrounding 'use tabs to indent, spaces to justify' is gone. 19 - Tab indents push your code to the right, making your screen seriously 20 unbalanced. 21 - Tabs will be rendered incorrectly on editors who are misconfigured not 22 to use tab stops of eight positions. 23 - Tabs are rendered badly in patches, causing off-by-one errors in almost 24 every line. 25 - It is the QEMU coding style. 26 27Do not leave whitespace dangling off the ends of lines. 28 292. Line width 30 31Lines are 80 characters; not longer. 32 33Rationale: 34 - Some people like to tile their 24" screens with a 6x4 matrix of 80x24 35 xterms and use vi in all of them. The best way to punish them is to 36 let them keep doing it. 37 - Code and especially patches is much more readable if limited to a sane 38 line length. Eighty is traditional. 39 - It is the QEMU coding style. 40 413. Naming 42 43Variables are lower_case_with_underscores; easy to type and read. Structured 44type names are in CamelCase; harder to type but standing out. Scalar type 45names are lower_case_with_underscores_ending_with_a_t, like the POSIX 46uint64_t and family. Note that this last convention contradicts POSIX 47and is therefore likely to be changed. 48 49Typedefs are used to eliminate the redundant 'struct' keyword. It is the 50QEMU coding style. 51 52When wrapping standard library functions, use the prefix qemu_ to alert 53readers that they are seeing a wrapped version; otherwise avoid this prefix. 54 554. Block structure 56 57Every indented statement is braced; even if the block contains just one 58statement. The opening brace is on the line that contains the control 59flow statement that introduces the new block; the closing brace is on the 60same line as the else keyword, or on a line by itself if there is no else 61keyword. Example: 62 63 if (a == 5) { 64 printf("a was 5.\n"); 65 } else if (a == 6) { 66 printf("a was 6.\n"); 67 } else { 68 printf("a was something else entirely.\n"); 69 } 70 71An exception is the opening brace for a function; for reasons of tradition 72and clarity it comes on a line by itself: 73 74 void a_function(void) 75 { 76 do_something(); 77 } 78 79Rationale: a consistent (except for functions...) bracing style reduces 80ambiguity and avoids needless churn when lines are added or removed. 81Furthermore, it is the QEMU coding style. 82