/**
 * Expands to an in-line if statement with a log if debug is defined;
 * it expands to nothing if debug is not defined. The debug macro takes
 * its value from the -debug flag on the script compilation command line.
 *
 * Also demonstrates how to use backslashes to declare a multi-line macro.
 *
 * @param	msg		the string that should be logged
 * @param	cond	[opt] the condition that is used to evaluate whether the message should be written
 * @param	tag		[opt] the tag for the log statement
 */
`if(`isdefined(debug))
`define logd(msg,cond,tag)\
  `if(`cond)\
	if (`cond)\
  `{endif}\
	log(`msg`if(`tag),`tag`endif)
`else
`define logd
`endif

/**
 * Expands to an in-line if statement with a log unless FINAL_RELEASE is defined;
 *
 *
 * @param	msg		the string that should be logged
 * @param	cond	[opt] the condition that is used to evaluate whether the message should be written
 * @param	tag		[opt] the tag for the log statement
 */
`if(`isdefined(FINAL_RELEASE))
`define	log(msg,cond,tag)
`else
`define	log(msg,cond,tag)	`if(`cond)if(`cond)`{endif}log(`msg`if(`tag),`tag`endif)
`endif

`if(`isdefined(FINAL_RELEASE))
`define	warn(msg,cond)
`else
`define	warn(msg,cond)	`if(`cond)if(`cond)`{endif}warn(`msg)
`endif

`if(`isdefined(FINAL_RELEASE))
`define	assert(cond)
`else
`define	assert(cond)	Assert(`cond)
`endif

`define ConditionalExtends(x)

