Let's say you have project file in <UTDir>/system called RUI.upc with content:
Code: Select all
[project]
path=../RComputerUI/
debug=true
make=true
make_ini=make.ini
clean=true
output=classes
input=classes_ucp
whe you'll call uenginepp.exe RUI.upc parser will process all files in classes_ucp, and generates output code in classes, which will be striped out (or not) from preprocessor directives. Let's say you have class:
Code: Select all
`process
`define int1=120
`define int2=123
`define nc=var() class<actor> NewActor;
class PreProcessorTest extends Actor;
`check int1>int2
var() int test1;
`else
var() int test2;
`write nc
`endif
You run preprocessor and:
1. `process directive is found, so preprocessor knows that this class has to be parsed
2. it sets
int1 variable as
1203. it sets
int2 variable as
1234. it sets
nc variable as
var() class<actor> NewActor;5. it detects `check directive and compare int1 and int2. because int1 is smaller then int2, expression evaluates to false and all next lines are skipped and deleted
6. it detects `else directive. preprocessor stops deleting lines and searches for next directives
7. var() int test2; is not detected as directive so it's left alone
8. directive `write is detected. preprocessor searches for variable named nc and (if found) writes it in .uc file
9. directive `endif stops conditional expression
output .uc file in classes will look like:
Code: Select all
class PreProcessorTest extends Actor;
var() int test2;
var() class<actor> NewActor;
Of course input file can look different, but most important thing is to write
`process in first line.
EDIT:
Now same output code with
clean turned off:
Code: Select all
////`process
//`define int1=120
//`define int2=123
//`define nc=var() class<actor> NewActor;
class PreProcessorTest extends Actor;
////`check int1>int2
//var() int test1;
//`else
var() int test2;
var() class<actor> NewActor; //`write nc
//`endif