==========================================================================

           #if         #elseif         #else         #endif

The above statements are all called "preprocessor statements".  They are
used when you COMPILE or update your files and not at runtime like a
normal statement ( if, else, else if, etc ).
The affect of this is that some sections of code can be compiled into
the object but not others. Oviously this may or may not be desirable
depending on the application. I will get into more detail on when to and
NOT to use these statements later in this tutorial after i explain their
syntaxes and use.

%^CYAN%^%^BOLD%^-----< The #if and #endif statements >-----

#if %^MAGENTA%^%^BOLD%^<test>%^RESET%^

     %^BLACK%^%^BOLD%^<block of statements to be run if the test is true>%^RESET%^

#endif

Please notice that the preprocessor commands lack a set of {} around
their code. The block of statements set in motion by the #if doesn't
stop until it hits another # command or the #endif statement. The {}
hold no meaning to the #if statement but you can use them if it's easier
for you to keep track of the code.

What happens in the #if statement is the compiler hits the #if statement
. When it does the <test> is ran, If it is true then the block of
statements that follow are included in the compiled object.

%^CYAN%^%^BOLD%^-----< The #elseif and #else statements >-----

#if %^MAGENTA%^%^BOLD%^<test>%^RESET%^

     %^BLACK%^%^BOLD%^<block of statements to be run if the test is true>%^RESET%^

#elseif %^MAGENTA%^%^BOLD%^<test>%^RESET%^

     %^BLACK%^%^BOLD%^<block of statements to be run if the test is true>%^RESET%^

#else

     %^BLACK%^%^BOLD%^<block of statements to be run if the test is true>%^RESET%^

#endif

In the above syntax, we have two tests and three blocks of statements.
What happens here when the object is compiled is the following;

    1) The #if's test is run. If it is true, then it's block of
       statements are compiled into the object.

    2) If the #if statement's test was false, then the #elseif's
       test is run. If the second test is true, then the block of
       code between the #elseif and #else statements are compiled
       into the object.

    3) If BOTH tests are false, the compiler comes down to the
       #else statement and includes the block of code that comes
       between the #else and #endif statements.

Please take notice that only ONE of the three blocks of statements
are compiled into the object when your using these four preprocessor
statements. The other two %^RED%^%^BOLD%^will not exist%^RESET%^ in the object.
You may not call any functions or use varaibles that are not
compiled into the object.
Yes. You may also use several #elseif statements in a chain just
like you would with a normal if and else set.

======================================================================

Now to discuss when to and not to use # tests.

The main difference between these statements and their normal versions
of if and else is when they are used. The # statements are used at the
time the object is compiled. The normal ones are used when the object's
function's are called. As i stated above, The # tests let you include
code in or exclude code from your objects. I therefore recommend only
using these statements when you wish to include/exclude code based on
conditions you can test.

If you need your object to react on the fly, then use normal if and
else statements. Reason being that once the object is compiled, the
blocks of code for only #if, #else or #elseif will exist in your
object...... The other blocks of code WILL NOT exist and will not
be present for further tests.

The # statements are also NEVER ran during runtime. They are ONLY used
when the object is compiled. Once compiled, the # statements are ignored.

======================================================================

Ironman

