| This document describes some aspects of the coding style of isl, | |
| which is similar to that of the linux kernel and git. | |
| The general rule is to use the same style as that of the surrounding code. | |
| More specific rules: | |
| - every line should have at most 80 columns | |
| - use tabs for indentation, where a tab counts for 8 characters | |
| - use single spaces around binary operators such as '+', '-', '=', '!=' | |
| - no space after unary operators such as '!' | |
| - use a single space after a comma and a semicolon | |
| (except at the end of a line) | |
| - no space between function name and arguments | |
| - use a single space after control keywords such as if, for and while | |
| - use a single space between the type of a cast and the value | |
| that is being cast | |
| - no whitespace at the end of a line | |
| - opening brace of a function is placed on a new line | |
| - opening brace of other blocks stays on the same line | |
| - the body of a control statement is placed on the next line(s) | |
| - an else appears on the same line as the closing brace of | |
| the then branch, if there is such a closing brace | |
| - if either the then or the else branch of an if has braces, | |
| then they both have braces | |
| - no parentheses around argument of return keyword | |
| - use only C style comments (/* ... */) | |
| - no comments inside function bodies; | |
| if some part of a function deserves additional comments, then | |
| extract it out into a separate function first | |
| - no #ifs inside function bodies | |
| - variables are declared at the start of a block, before any | |
| other statements | |
| There are some exceptions to the general rule of using | |
| the same style as the surrounding code, most notably | |
| when the surrounding code is very old. | |
| In particular, an "isl_space" used to be called "isl_dim" and | |
| some variables of this type are still called "dim" or some variant thereof. | |
| New variables of this type should be called "space" or a more specific name. | |
| Some old functions do not have memory management annotations yet. | |
| All new functions should have memory management annotations, | |
| whenever appropriate |