You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

350 lines
6.3 KiB

#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");