ENH: support file-scope 'localCode' in dynamicCode

This commit is contained in:
Mark Olesen
2011-03-08 11:08:42 +01:00
parent 8c3a8fcd21
commit e8a3587df4
6 changed files with 58 additions and 8 deletions

View File

@ -373,6 +373,7 @@ void Foam::dynamicCode::setFilterContext
const dynamicCodeContext& context
)
{
filterVars_.set("localCode", context.localCode());
filterVars_.set("code", context.code());
filterVars_.set("codeInclude", context.include());
filterVars_.set("SHA1sum", context.sha1().str());

View File

@ -35,6 +35,7 @@ Foam::dynamicCodeContext::dynamicCodeContext(const dictionary& dict)
:
dict_(dict),
code_(stringOps::trim(dict["code"])),
localCode_(),
include_(),
options_()
{
@ -45,6 +46,13 @@ Foam::dynamicCodeContext::dynamicCodeContext(const dictionary& dict)
// - necessary for compilation options, convenient for includes
// and body.
// optional
if (dict.found("localCode"))
{
localCode_ = stringOps::trim(dict["localCode"]);
stringOps::inplaceExpand(localCode_, dict);
}
// optional
if (dict.found("codeInclude"))
{
@ -59,9 +67,9 @@ Foam::dynamicCodeContext::dynamicCodeContext(const dictionary& dict)
stringOps::inplaceExpand(options_, dict);
}
// calculate SHA1 digest from include, options, code
// calculate SHA1 digest from include, options, localCode, code
OSHA1stream os;
os << include_ << options_ << code_;
os << include_ << options_ << localCode_ << code_;
sha1_ = os.digest();
}

View File

@ -57,6 +57,9 @@ class dynamicCodeContext
//- Mandatory "code" entry
string code_;
//- Optional "localCode" entry
string localCode_;
//- Optional "codeInclude" entry
string include_;
@ -99,6 +102,12 @@ public:
return code_;
}
//- Return the local (file-scope) code
const string& localCode() const
{
return localCode_;
}
//- Return SHA1 digest calculated from include, options, code
const SHA1Digest& sha1() const
{