Remove 'level' argument of evalf().
[ginac.git] / doc / CodingStyle
index fc70d3ef3dcee7f50c4c922f4dfc382cbcb5abf0..b537f19b3bab5182612860666d571527f9217112 100644 (file)
@@ -9,7 +9,7 @@ This document attempts to describe the preferred coding style for GiNaC.
 
 Different people have different ideas of how source code should be formatted
 to be most beautiful and/or useful to work with. GiNaC itself was developed
-by a group of people whose ideas on these matters differred in some details.
+by a group of people whose ideas on these matters differed in some details.
 It also evolved over the course of the years, and received contributions
 from outside. As a result, the GiNaC source is not in all places 100%
 consistent with the rules laid out in this document. Old code will
@@ -27,7 +27,7 @@ please try to follow these rules. It will make our (and your) lives easier. :-)
 ----------------------
 
 Any code in GiNaC should comply to the C++ standard, as defined by ISO/IEC
-14882:1998(E). Don't use compiler-specific language extensions unless they
+14882:2011(E). Don't use compiler-specific language extensions unless they
 are surrounded by appropriate "#ifdef"s, and you also provide a compliant
 version of the code in question for other compilers.
 
@@ -63,8 +63,7 @@ same column on the screen, to make it look more tidy and clear.
 
 Here is an example that features both indentation and alignment:
 
-class person
-{
+class person {
        string name;  // person's full name
        int age;      // age in years
 };
@@ -90,12 +89,11 @@ exact same value the author of the code used.
 
 Take the "person" class definition from above as an example (here and in
 the following, ':' represents a Tab, while '.' represents a Space). Assume
-that we had done both intendation and alignment with Tabs, with a tab-size
+that we had done both indentation and alignment with Tabs, with a tab-size
 of 8:
 
 |-------|-------|-------|-------|-------|-------|------- <- tab stops
-class person
-{
+class person {
 ::::::::string name;::::// person's full name
 ::::::::int age;::::::::// age in years
 };
@@ -103,8 +101,7 @@ class person
 Now somebody who prefers a tab-size of 4 looks at the code:
 
 |---|---|---|---|---|---|---|---|---|---|---|---|---|--- <- tab stops
-class person
-{
+class person {
 ::::string name;::::// person's full name
 ::::int age;::::// age in years
 };
@@ -132,8 +129,7 @@ This is how our class definition should be entered using this scheme
 (remember, ':' are Tabs, '.' are Spaces):
 
 |-------|-------|-------|-------|-------|-------|------- <- tab stops
-class person
-{
+class person {
 ::::::::string name;..// person's full name
 ::::::::int age;......// age in years
 };
@@ -142,8 +138,7 @@ class person
 tab-size, and it still looks good:
 
 |---|---|---|---|---|---|---|---|---|---|---|---|---|--- <- tab stops
-class person
-{
+class person {
 ::::string name;..// person's full name
 ::::int age;......// age in years
 };
@@ -213,12 +208,10 @@ after (or before, in the case of postfix '++' and '--') unary operators:
        x = -(y + z) / 2;
 
 There are no spaces around the '<' and '>' used to designate template
-parameters. Unfortunately, a design flaw in C++ requires putting a space
-between two consecutive closing '>'s. We suggest that in this case you also
-put a space after the opening '<':
+parameters:
 
        vector<int> vi;
-       vector< list<int> > vli;
+       vector<list<int>> vli;
 
 '*' and '&' in the declaration of pointer-to and reference-to variables
 have a space before, but not after them:
@@ -238,7 +231,7 @@ whitespace.
 
 One word: K&R, also known as "One True Brace Style", suitably extended for
 C++. The opening brace goes at the end of the line, except for function
-bodies and classes. Really short functions can be written in one single line.
+bodies. Really short functions can be written in one single line.
 
        if (a == b) {
                // do something
@@ -284,8 +277,7 @@ bodies and classes. Really short functions can be written in one single line.
                // catchall
        }
 
-       class foo
-       {
+       class foo {
        public:
                foo(int i) : x(i)
                {
@@ -301,6 +293,10 @@ bodies and classes. Really short functions can be written in one single line.
                int x;
        };
 
+       namespace bar {
+               // a foo by any other name...
+       }
+
        void foo::schwupp(char c)
        {
                // diwupp
@@ -336,7 +332,7 @@ Names of header files end in ".h" (not ".hpp", ".H", ".hh", or ".hxx").
 Don't place "using namespace std;", "using std::vector;" or anything like this
 into public library header files. Doing so would force the import of all or
 parts of the "std" namespace upon all users of the library, even if they don't
-want it. Always fully qualify indentifiers in the headers.
+want it. Always fully qualify identifiers in the headers.
 
 Definitions that are only used internally within the library but have to be
 placed in a public header file for one reason or another should be put into