64d624b651
Change-Id: I9a5940027423ff0791fa7da0b79b617412ce6b86 Reviewed-on: https://gerrit.libreoffice.org/21209 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
116 lines
2.6 KiB
Text
116 lines
2.6 KiB
Text
/*
|
|
* This file is part of the LibreOffice project.
|
|
*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
*
|
|
* This file incorporates work covered by the following license notice:
|
|
*
|
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
|
* contributor license agreements. See the NOTICE file distributed
|
|
* with this work for additional information regarding copyright
|
|
* ownership. The ASF licenses this file to you under the Apache
|
|
* License, Version 2.0 (the "License"); you may not use this file
|
|
* except in compliance with the License. You may obtain a copy of
|
|
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
|
*/
|
|
|
|
#define ABC \
|
|
ggg
|
|
|
|
ABC
|
|
|
|
/* Standards */
|
|
|
|
#define NOTHING
|
|
NOTHING
|
|
|
|
#define SYMBOL symbol
|
|
#undef SYMBOL
|
|
#define SYMBOL _symbol_
|
|
|
|
< SYMBOL > // < _symbol_ >
|
|
xSYMBOLx // xSYMBOLx
|
|
+SYMBOL- // +_symbol_-
|
|
>SYMBOL< // >_symbol_<
|
|
<SYMBOL> // <_symbol_>
|
|
|
|
#define FALSE 0
|
|
#define TRUE !FALSE
|
|
a = x > 0 ? TRUE : FALSE // a = x > 0 ? !0 : 0
|
|
|
|
#define A x
|
|
#define B y
|
|
#define MAC(a, b) \
|
|
T() { a(); return b; } // T() { x(); return y; }
|
|
MAC(A,B);
|
|
|
|
#ifdef MAC
|
|
MAC(X,Y)
|
|
#endif // MAC
|
|
|
|
/* Recursions */
|
|
|
|
#define y x
|
|
#define x y
|
|
x // x
|
|
|
|
#define Test(a) a
|
|
#define b Test(b)
|
|
a = b; // a = b;
|
|
|
|
#define func abc(func)
|
|
a = func // a = abc(func)
|
|
|
|
#define func1 func(abc)
|
|
a = func1 // a = abc(func)(abc)
|
|
|
|
#define args(func, args) func args
|
|
args(t1, (args(t2, (x, y)))) // t1 (t2 (x, y))
|
|
|
|
#define ARGS(a) a
|
|
#define __ ARGS
|
|
int foo __((int x)); // int foo (int x);
|
|
|
|
/* Concatenations */
|
|
|
|
#define tail _Test
|
|
// Txt_##tail // Txt_##_Test
|
|
|
|
#define z(e,f) e##_##f
|
|
z ( abc, xyz ) // abc_xyz
|
|
|
|
|
|
#define CAT( var ) fix##.var
|
|
CAT( a ) // fix.a
|
|
|
|
#define CAT3( class, ref ) class##ref::class##ref
|
|
CAT3( a, b ) // ab::ab
|
|
|
|
#define CAT2( var ) fix##var::fix##var
|
|
CAT2( a ) // fixa::fixa
|
|
|
|
/* Extremes */
|
|
|
|
#define MAKE_X( name ) name##_Test
|
|
#define MAKE_Y( name ) MAKE_X( name##_Sym )
|
|
MAKE_Y( Txt ); // Txt_Sym_Test;
|
|
|
|
|
|
/* Extensions */
|
|
|
|
/*
|
|
#ident "(c)# Test.txt"
|
|
|
|
#if #machine(i386)
|
|
# error illegal machine
|
|
#endif
|
|
char machine[6];
|
|
*/
|
|
|
|
/* Last bug */
|
|
#define Cfstrcpy Cstrcpy
|
|
#define Cstrcpy( s1, s2 ) strcpy( s1, s2 )
|
|
|
|
Cfstrcpy(Par1,Par2 ) // blub( Par1, Par2 )
|