Any string stored in a variable can serve as a macro, so there is no need to have a macro-definition operator. The pure strings using the ${: }-operator come handy, though, since they allow to define dollar bracket expressions that are not directly parsed. Strings are parsed with the ${! }-operator. Defining
x2 = ${: ${* ${x} ${x}}}
x4 = ${: ${* ${!x2} ${!x2}}}
x6 = ${: ${* ${!x4} ${!x2}}}
sin = ${: ${* ${x}
${+ 1
${/ ${!x2} -6}
${/ ${!x4} 120}
${/ ${!x6} -5040}
}
}
}
makes it possible to compute sinuses inside a GetPot file, for example
x = 0.212
info = ${!sin}
will assign something that is close to the sinus of 0.212 to the variable info. Keep in mind, that through the huge amount of float-string
conversions, back and forth, a lot of precision is lost. Don't consider this
as a disadvantage ! As said before, configuration files are not there to write
programs. A configuration file language, therefore, has to be a bit cumbersome,
in order to prevent mayhem.