#include "cpp.h" /* #define TEST(x, y) %x%y% #define TESTS(x) #x #define TEST2(x, y) x ## y #define TEST4 alfa x ## y.r #hahaha #define TESTX x\ //h #define TESTY haha // note\ ble #define TESTZ haha \ ble //* TEST('\1', "\2") TEST( 1 +1 , 3 ) TEST( "1" "2" ",", ',') TESTS(a) TESTS(a x y) TESTS("A") TEST2(a, 3) TEST2(3, a) TEST2(a, #) TEST2(a, "X") TEST2("Y", "X") TESTX TESTY TESTZ TEST4 //*/ CONSOLE_APP_MAIN { { CppMacro m; m.body = "a + b * 123 - alfa"; m.param.Add("a"); m.param.Add("b"); Vector x; x.Add("one"); x.Add("two"); DUMP(m.Expand(x)); } /* Cpp x; x.Define("TEST(a, b) |a|b|"); DUMP(x.Expand("This is: TEST(('\\1' , \"2\" \"4\" '4' ',' \",\"), 3)!")); DUMP(x.Expand("This is: TEST(1, 2)!")); DUMP(x.Expand("This is: TEST(1 + a, 2)!")); DUMP(x.Expand("This is: TEST((1 , 2), 3)!")); DUMP(x.Expand("This is: TEST( \"1\" \"2\" \",\", ',')!")); */ Cpp x; FileIn in(GetDataFile("test.h")); while(!in.IsEof()) { String l = in.GetLine(); if(l.StartsWith("#define")) x.Define(~l + strlen("#define")); else LOG(/*l << " -> " << */x.Expand(l)); } } // TEST:a,b:|a|b|\n