xref: /aoo4110/main/soltools/cpp/Test.txt (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski/**************************************************************
2*b1cdbd2cSJim Jagielski *
3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski *
11*b1cdbd2cSJim Jagielski *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski *
13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski * under the License.
19*b1cdbd2cSJim Jagielski *
20*b1cdbd2cSJim Jagielski *************************************************************/
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski#define ABC \
24*b1cdbd2cSJim Jagielski		ggg
25*b1cdbd2cSJim Jagielski
26*b1cdbd2cSJim JagielskiABC
27*b1cdbd2cSJim Jagielski
28*b1cdbd2cSJim Jagielski/* Standards --------------------------------------------------------------- */
29*b1cdbd2cSJim Jagielski
30*b1cdbd2cSJim Jagielski#define NOTHING
31*b1cdbd2cSJim JagielskiNOTHING
32*b1cdbd2cSJim Jagielski
33*b1cdbd2cSJim Jagielski#define SYMBOL symbol
34*b1cdbd2cSJim Jagielski#undef SYMBOL
35*b1cdbd2cSJim Jagielski#define SYMBOL _symbol_
36*b1cdbd2cSJim Jagielski
37*b1cdbd2cSJim Jagielski< SYMBOL >                      // < _symbol_ >
38*b1cdbd2cSJim JagielskixSYMBOLx                        // xSYMBOLx
39*b1cdbd2cSJim Jagielski+SYMBOL-                        // +_symbol_-
40*b1cdbd2cSJim Jagielski>SYMBOL<                        // >_symbol_<
41*b1cdbd2cSJim Jagielski<SYMBOL>                        // <_symbol_>
42*b1cdbd2cSJim Jagielski
43*b1cdbd2cSJim Jagielski#define FALSE 0
44*b1cdbd2cSJim Jagielski#define TRUE  !FALSE
45*b1cdbd2cSJim Jagielskia = x > 0 ? TRUE : FALSE        // a = x > 0 ? !0 : 0
46*b1cdbd2cSJim Jagielski
47*b1cdbd2cSJim Jagielski#define A x
48*b1cdbd2cSJim Jagielski#define B y
49*b1cdbd2cSJim Jagielski#define MAC(a, b) \
50*b1cdbd2cSJim Jagielski	T() { a(); return b; }      // T() { x(); return y; }
51*b1cdbd2cSJim JagielskiMAC(A,B);
52*b1cdbd2cSJim Jagielski
53*b1cdbd2cSJim Jagielski#ifdef MAC
54*b1cdbd2cSJim JagielskiMAC(X,Y)
55*b1cdbd2cSJim Jagielski#endif // MAC
56*b1cdbd2cSJim Jagielski
57*b1cdbd2cSJim Jagielski/* Recursions -------------------------------------------------------------- */
58*b1cdbd2cSJim Jagielski
59*b1cdbd2cSJim Jagielski#define y x
60*b1cdbd2cSJim Jagielski#define x y
61*b1cdbd2cSJim Jagielskix                               // x
62*b1cdbd2cSJim Jagielski
63*b1cdbd2cSJim Jagielski#define Test(a) a
64*b1cdbd2cSJim Jagielski#define b Test(b)
65*b1cdbd2cSJim Jagielskia = b;                          // a = b;
66*b1cdbd2cSJim Jagielski
67*b1cdbd2cSJim Jagielski#define func abc(func)
68*b1cdbd2cSJim Jagielskia = func                        // a = abc(func)
69*b1cdbd2cSJim Jagielski
70*b1cdbd2cSJim Jagielski#define func1 func(abc)
71*b1cdbd2cSJim Jagielskia = func1                       // a = abc(func)(abc)
72*b1cdbd2cSJim Jagielski
73*b1cdbd2cSJim Jagielski#define args(func, args) func args
74*b1cdbd2cSJim Jagielskiargs(t1, (args(t2, (x, y))))    // t1 (t2 (x, y))
75*b1cdbd2cSJim Jagielski
76*b1cdbd2cSJim Jagielski#define ARGS(a) a
77*b1cdbd2cSJim Jagielski#define __ ARGS
78*b1cdbd2cSJim Jagielskiint foo __((int x));            // int foo (int x);
79*b1cdbd2cSJim Jagielski
80*b1cdbd2cSJim Jagielski/* Concatinations ---------------------------------------------------------- */
81*b1cdbd2cSJim Jagielski
82*b1cdbd2cSJim Jagielski#define tail _Test
83*b1cdbd2cSJim Jagielski// Txt_##tail                      // Txt_##_Test
84*b1cdbd2cSJim Jagielski
85*b1cdbd2cSJim Jagielski#define z(e,f) e##_##f
86*b1cdbd2cSJim Jagielskiz ( abc, xyz )                  // abc_xyz
87*b1cdbd2cSJim Jagielski
88*b1cdbd2cSJim Jagielski
89*b1cdbd2cSJim Jagielski#define CAT( var ) fix##.var
90*b1cdbd2cSJim JagielskiCAT( a )                        // fix.a
91*b1cdbd2cSJim Jagielski
92*b1cdbd2cSJim Jagielski#define CAT3( class, ref ) class##ref::class##ref
93*b1cdbd2cSJim JagielskiCAT3( a, b )                    // ab::ab
94*b1cdbd2cSJim Jagielski
95*b1cdbd2cSJim Jagielski#define CAT2( var ) fix##var::fix##var
96*b1cdbd2cSJim JagielskiCAT2( a )                       // fixa::fixa
97*b1cdbd2cSJim Jagielski
98*b1cdbd2cSJim Jagielski/* Extrems ----------------------------------------------------------------- */
99*b1cdbd2cSJim Jagielski
100*b1cdbd2cSJim Jagielski#define MAKE_X( name )  name##_Test
101*b1cdbd2cSJim Jagielski#define MAKE_Y( name )  MAKE_X( name##_Sym )
102*b1cdbd2cSJim JagielskiMAKE_Y( Txt );                  // Txt_Sym_Test;
103*b1cdbd2cSJim Jagielski
104*b1cdbd2cSJim Jagielski
105*b1cdbd2cSJim Jagielski/* Extensions -------------------------------------------------------------- */
106*b1cdbd2cSJim Jagielski
107*b1cdbd2cSJim Jagielski/*
108*b1cdbd2cSJim Jagielski#ident "(c)# Test.txt"
109*b1cdbd2cSJim Jagielski
110*b1cdbd2cSJim Jagielski#if #machine(i386)
111*b1cdbd2cSJim Jagielski#   error illegal machine
112*b1cdbd2cSJim Jagielski#endif
113*b1cdbd2cSJim Jagielskichar machine[6];
114*b1cdbd2cSJim Jagielski*/
115*b1cdbd2cSJim Jagielski
116*b1cdbd2cSJim Jagielski/* Last bug ----------------------------------------------------------------- */
117*b1cdbd2cSJim Jagielski#define Cfstrcpy		Cstrcpy
118*b1cdbd2cSJim Jagielski#define Cstrcpy( s1, s2 )	strcpy( s1, s2 )
119*b1cdbd2cSJim Jagielski
120*b1cdbd2cSJim JagielskiCfstrcpy(Par1,Par2 )   		// blub( Par1, Par2 )
121*b1cdbd2cSJim Jagielski
122*b1cdbd2cSJim Jagielski/* ---------------------------------------------------------------------- */
123