/*description:
{
    Leader script that drives the intrusion of profiling code in C++ source files. This
    is called a \textit{raw profiling}, because it doesn't pretend to offer a smart and
    efficient profiling mechanism. It is more like an illustration of what is possible as
    a program transformation.

    Two properties must be passed on the command line:
    \begin{itemize}
        \item \textbf{SOURCES} gives the file masks of C++ bodies to select for the
            transformation. If more than one mask, one cancatenates them, separated by a
            semi-comma.
        \item \textbf{RAW_PROFILING_DIR} provides the directory where to generate the
            \textit{profiling module}. The \textit{profiling module} manages the time spent
            in each profiled function and how many times they have been called.
    \end{itemize}

    The \textit{profiling module} is implemented in files \samp{"RawProfiling.h"} and
    \samp{"RawProfiling.cpp"}.
}
*/

if !getProperty("SOURCES") error("property 'SOURCES' must contain the file masks of C++ bodies, separated by semi commas.");
if !getProperty("RAW_PROFILING_DIR") error("property 'RAW_PROFILING_DIR' must contain the directory where to generate the profiling module.");

local listOfMasks;
cutString(getProperty("SOURCES"), ";", listOfMasks);

local sProfilingDir = canonizePath(getProperty("RAW_PROFILING_DIR"));
if !endString(sProfilingDir, "/") set sProfilingDir += "/";

foreach i in listOfMasks {
    forfile j in i {
        translate("RawProfilingCppTransformation.cwp", project, j, j);
    }
}

expand("RawProfilingHpp.cwt", project, sProfilingDir + "RawProfiling.h");
generate("RawProfilingCpp.cwt", project, sProfilingDir + "RawProfiling.cpp");

Generated by v4.5.3 from CWscript2HTML.cwp.