changeset 254:48432ecfa00b

Added the example.cpp file to the respository because it contains suggestions from users. git-svn-id: svn://svn.code.sf.net/p/universalindent/code/trunk@463 59b1889a-e5ac-428c-b0c7-476e01d41282
author thomas_-_s <thomas_-_s@59b1889a-e5ac-428c-b0c7-476e01d41282>
date Tue, 21 Aug 2007 18:32:43 +0000
parents 3232867f6569
children 9476834349f3
files data/example.cpp
diffstat 1 files changed, 349 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/data/example.cpp	Tue Aug 21 18:32:43 2007 +0000
@@ -0,0 +1,349 @@
+#include <a.h>
+#include <a.h>
+#include <a.h>
+
+using namespace a.b.c a;
+
+PREPROCESSOR()
+
+BEGIN_MESSAGE_MAP()
+    ON_COMMAND()
+END_MESSAGE_MAP()
+
+extern struct x y;
+
+static const class Example :
+    Int1, Int2, Int3
+{
+public:
+    Example::~Example() :
+        S1(),
+        S2(),
+        S3() {
+        // if statements with empty braces
+        if( x ) { }
+        else if( x ) { }
+        else { }
+
+        // if statements with exactly one braced statement
+        if( x ) {
+            statement;
+        }
+        else if( x ) {
+            statement;
+        }
+        else {
+            statement;
+        }
+
+        // special 'if' cases
+        if( x ) {
+            statement;
+        }
+        else {
+            statement;
+        }
+
+        if( x ) {
+            statement;
+
+            statement;
+        }
+        else {
+            statement;
+
+            statement;
+        }
+
+        // if statements with a single implicit substatement
+        if( x )
+            statement;
+
+        else if( x )
+            statement;
+
+        else
+            statement;
+
+        // if statements with multiple statements
+        if( x ) {
+            statement;
+
+            statement;
+        }
+        else if( x ) {
+            statement;
+
+            statement;
+        }
+        else {
+            statement;
+
+            statement;
+        }
+
+        // while statements with a single implicit substatement
+        while( x )
+            statement;
+
+        // while statements with a single implicit 'if' substatement
+        while( x )
+            if( x )
+                statement;
+
+        // while with multiple statements
+        while( x ) {
+            statement;
+
+            statement;
+        }
+
+        // labeled statement
+        label:
+        statement;
+
+        // for statements with a single braced statement
+        for ( x; x; x ) {
+            statement;
+        }
+
+        // do statements with a single braced substatement
+        do {
+            statement;
+        } while ( false );
+
+        // do statement with an empty block
+        do { } while ( x );
+
+        // local blocks
+        {
+        statement;
+        }
+
+        /* Switch blocks:
+         *
+         * You can have case substatements be aligned by giving an example like:
+         *
+         * case 1: statement;
+         * 
+         *         statement;
+         * 
+         *         statement;
+         * 
+         *         etc...
+         */
+        switch( c ) {
+            case 1:
+            case 2:
+            case 3:
+                statement;
+
+                statement;
+
+                statement;
+
+            case 4:
+                break; // case with exactly one substatement
+
+            default:
+                break;
+        }
+    }
+
+    void method( const myClass<item> &x, int [][][] c, ... ) {
+        // try-catch-finally with empty bodies
+        try { }
+        catch(Throwable e) { }
+        finally { }
+
+        // try-catch-finally with exactly one statement
+        try {
+            statement;
+        }
+        catch( Throwable t ) {
+            statement;
+        }
+        finally {
+            statement;
+        }
+
+        // try-catch-finally with multiple statements 
+        try {
+            statement;
+
+            statement;
+        }
+        catch( Throwable e ) {
+            statement;
+
+            statement;
+        }
+        finally {
+            statement;
+
+            statement;
+
+            statement;
+        }
+    }
+};
+
+// enum statement
+static typedef enum x
+{
+x,
+y,
+z,
+};
+
+// simple typedef
+typedef interface static short int x;
+
+namespace x
+{
+// template header
+template <class T>
+x y z v() const;
+
+// pure virtual function, using c-style formal parameters with double parens
+void v(()) = 0;
+
+// function with one single line statement and c-style formal parameters
+void v(( int i )) {
+    statement;
+};
+
+// function with no statements
+myClass<myType>::method() { }
+};
+
+template <T> class x
+{
+public:
+
+    // operator declarations
+    int operator +();
+
+    int operator []();
+
+    // template method
+    static void A<x>::method() [][][] {
+        asm
+            {
+            - Assembler statements -
+            
+            The outside braces are formatted but the asm code is passed through
+            unchanged.
+            }
+
+        asm Single line assembler statements are also just passed through
+    }
+
+    extern void oldStyleFunction()
+        int a;
+        int b;
+        int c; {
+        // various simple statements
+        long int a, b, c;
+
+        long double [] i;
+
+        goto x;
+
+        delete [] x;
+
+        delete [][][] x;
+
+        return x;
+
+        continue label;
+
+        throw e;
+
+        // c-style function calls with double parens
+        b((a, b, c));
+
+        a(());
+
+        // expressions 
+        new Object()->field.method();
+
+        s = "string"
+                "split across lines";
+
+        method(a, B::C, 'd');
+
+        z = j[0][0][0] || k * 3 >> ++i + "0" > i++ & (i) == !j;
+
+        int *v;
+
+        int &v;
+
+        x = x * *x;
+
+        (int *)x;
+
+        int (*functionPointer)( x, y, z );
+
+        h[0] += a ? b : ((int)c).d;
+
+        new Handler();
+    }
+} a, b, c; // struct instances
+
+class Class2
+{
+/* Array creation with multiple non-array elements.
+ * 
+ * If you give this example with the elements on the same line, then 
+ * Polystyle will automatically vertically align them into a grid when it 
+ * fits your code to the page. An alternate style is to have each
+ * element on its own line, like this:
+ * {
+ * x,
+ * y
+ * z
+ * }
+ */
+boolean *bools1 =
+    {
+    x, y, z
+    };
+
+// array creation with a single element
+boolean bools2 = { x };
+
+// array creation with no elements
+boolean bools3 = { };
+
+// multidimensional array creation 
+const int *** array =
+    {
+    { 1, 2, 3 },
+    { 1, 2, 3 },
+    { 1, 2, 3 },
+    };
+};
+
+#if x
+
+#define x
+
+#elif a
+
+#define x
+
+#else
+
+#define x
+
+#define x
+
+#define x
+
+#endif
+
+// see if multi line macros are safely handled:
+#define multilinemacro do { x= x+5; } while (0); \
+printf("a multilinemacro"); \
+printf("a multilinemacro2");