Tools for handling dynamic code compilation. More...

Public Member Functions | |
| dynamicCode (const dynamicCode &)=delete | |
| No copy construct. More... | |
| void | operator= (const dynamicCode &)=delete |
| No copy assignment. More... | |
| dynamicCode (const word &codeName, const word &codeDirName="") | |
| Construct for a specified code name and code directory name. More... | |
| const word & | codeName () const noexcept |
| Return the code-name. More... | |
| const word & | codeDirName () const noexcept |
| Return the code-dirname. More... | |
| const fileName & | codeRoot () const noexcept |
| Root for dynamic code compilation. More... | |
| const fileName & | libSubDir () const noexcept |
| Subdirectory name for loading libraries. More... | |
| fileName | codePath () const |
| Path for specified code name. More... | |
| fileName | codeRelPath () const |
| Path for specified code name relative to <case> More... | |
| fileName | libPath () const |
| Library path for specified code name. More... | |
| fileName | libRelPath () const |
| Library path for specified code name relative to <case> More... | |
| fileName | digestFile () const |
| Path for SHA1Digest. More... | |
| void | clear () |
| Clear files and variables. More... | |
| void | reset (const dynamicCodeContext &) |
| Clear files and reset variables to specified context. More... | |
| void | addCompileFile (const fileName &name) |
| Add a file template name, which will be found and filtered. More... | |
| void | addCopyFile (const fileName &name) |
| Add a file template name, which will be found and filtered. More... | |
| void | addCreateFile (const fileName &name, const std::string &contents) |
| Add a file to create with its contents. Will not be filtered. More... | |
| void | setFilterContext (const dynamicCodeContext &) |
| Define filter variables for code, codeInclude, SHA1sum. More... | |
| void | setFilterVariable (const word &key, const std::string &value) |
| Define a filter variable. More... | |
| void | setMakeOptions (const std::string &content) |
| Define contents for Make/options. More... | |
| bool | upToDate (const dynamicCodeContext &context) const |
| Verify if the copied code is up-to-date, based on Make/SHA1Digest. More... | |
| bool | upToDate (const SHA1Digest &sha1) const |
| Verify if the copied code is up-to-date, based on Make/SHA1Digest. More... | |
| bool | copyOrCreateFiles (const bool verbose=false) const |
| Copy/create files prior to compilation. More... | |
| bool | wmakeLibso () const |
| Compile a libso. More... | |
| template<class Type > | |
| void | setFieldTemplates () |
| Define a filter variables TemplateType and FieldType. More... | |
Static Public Member Functions | |
| static void | checkSecurity (const char *title, const dictionary &) |
| Check security for creating dynamic code. More... | |
| static void | waitForFile (const fileName &file, const dictionary &contextDict) |
| Wait for libPath() file to appear on sub-ranks. More... | |
Static Public Attributes | |
| static const word | codeTemplateEnvName = "FOAM_CODE_TEMPLATES" |
| Name of the code template environment variable. More... | |
| static const fileName | codeTemplateDirName = "codeTemplates/dynamicCode" |
| Name of the code template sub-directory. More... | |
| static int | allowSystemOperations |
| Flag if system operations are allowed. More... | |
Protected Member Functions | |
| bool | writeCommentSHA1 (Ostream &) const |
| Write SHA1 value as C-comment. More... | |
| bool | createMakeFiles () const |
| Copy/create Make/files prior to compilation. More... | |
| bool | createMakeOptions () const |
| Copy/create Make/options prior to compilation. More... | |
| bool | writeDigest (const SHA1Digest &) const |
| Write digest to Make/SHA1Digest. More... | |
| bool | writeDigest (const std::string &) const |
| Write digest to Make/SHA1Digest. More... | |
Static Protected Member Functions | |
| static void | copyAndFilter (ISstream &, OSstream &, const HashTable< string > &mapping) |
| Copy lines while expanding variables. More... | |
| static bool | resolveTemplates (const UList< fileName > &templateNames, DynamicList< fileName > &resolvedFiles, DynamicList< fileName > &badFiles) |
| Resolve code-templates via the codeTemplateEnvName. More... | |
Static Protected Attributes | |
| static const char *const | targetLibDir = "LIB = $(PWD)/../platforms/$(WM_OPTIONS)/lib" |
| Directory for library targets for Make/files. More... | |
| static const char *const | topDirName = "dynamicCode" |
| Top-level directory name for copy/compiling. More... | |
Tools for handling dynamic code compilation.
Definition at line 56 of file dynamicCode.H.
|
delete |
No copy construct.
|
explicit |
Construct for a specified code name and code directory name.
Defaults to using the code name for the code directory name
Definition at line 284 of file dynamicCode.C.
References dynamicCode::clear().

|
staticprotected |
Copy lines while expanding variables.
Definition at line 96 of file dynamicCode.C.
References Foam::exit(), Foam::FatalError, FatalErrorInFunction, ISstream::getLine(), IOstream::good(), Foam::stringOps::inplaceExpand(), OSstream::name(), ISstream::name(), Foam::nl, and OSstream::writeQuoted().

|
staticprotected |
Resolve code-templates via the codeTemplateEnvName.
alternatively in the codeTemplateDirName via Foam::findEtcFile
Definition at line 133 of file dynamicCode.C.
References Foam::findEtcFile(), Foam::getEnv(), Foam::isDir(), Foam::isFile(), and DynamicList< T, SizeMin >::push_back().

|
protected |
Write SHA1 value as C-comment.
Definition at line 176 of file dynamicCode.C.
References IOstream::good(), and Ostream::writeQuoted().

|
protected |
Copy/create Make/files prior to compilation.
Definition at line 190 of file dynamicCode.C.
References Foam::exit(), Foam::FatalError, FatalErrorInFunction, Foam::mkDir(), Foam::nl, and fileName::path().

|
protected |
Copy/create Make/options prior to compilation.
Definition at line 228 of file dynamicCode.C.
References Foam::exit(), Foam::FatalError, FatalErrorInFunction, Foam::mkDir(), Foam::nl, and fileName::path().

|
protected |
Write digest to Make/SHA1Digest.
Definition at line 257 of file dynamicCode.C.
References Foam::mkDir(), Foam::nl, fileName::path(), and SHA1Digest::write().

|
protected |
Write digest to Make/SHA1Digest.
Definition at line 269 of file dynamicCode.C.
References Foam::mkDir(), Foam::nl, and fileName::path().

|
static |
Check security for creating dynamic code.
Definition at line 59 of file dynamicCode.C.
References Foam::foamVersion::api, dict, Foam::endl(), Foam::exit(), Foam::FatalIOError, FatalIOErrorInFunction, Foam::isAdministrator(), and Foam::nl.
Referenced by codedBase::updateLibrary().


|
delete |
No copy assignment.
|
inlinenoexcept |
Return the code-name.
Definition at line 236 of file dynamicCode.H.
|
inlinenoexcept |
Return the code-dirname.
Definition at line 241 of file dynamicCode.H.
|
inlinenoexcept |
Root for dynamic code compilation.
Expanded from <case>/dynamicCode
Definition at line 248 of file dynamicCode.H.
|
inlinenoexcept |
Subdirectory name for loading libraries.
Expanded from platforms/$WM_OPTIONS/lib
Definition at line 255 of file dynamicCode.H.
|
inline |
Path for specified code name.
Corresponds to codeRoot()/codeDirName()
Definition at line 262 of file dynamicCode.H.
| Foam::fileName codeRelPath | ( | ) | const |
Path for specified code name relative to <case>
Corresponds to topDirName/codeDirName()
Definition at line 302 of file dynamicCode.C.
| Foam::fileName libPath | ( | ) | const |
Library path for specified code name.
Corresponds to codeRoot()/libSubDir()/lib<codeName>.so
Definition at line 308 of file dynamicCode.C.
References dlLibraryTable::fullname().

| Foam::fileName libRelPath | ( | ) | const |
Library path for specified code name relative to <case>
Corresponds to dynamicCode/codeDirName()/libSubDir()/lib<codeName>.so
Definition at line 314 of file dynamicCode.C.
References dlLibraryTable::fullname().

|
inline |
Path for SHA1Digest.
Corresponds to codePath()/Make/SHA1Digest
Definition at line 295 of file dynamicCode.H.
| void clear | ( | ) |
Clear files and variables.
Definition at line 320 of file dynamicCode.C.
Referenced by dynamicCode::dynamicCode().

| void reset | ( | const dynamicCodeContext & | context | ) |
Clear files and reset variables to specified context.
Definition at line 337 of file dynamicCode.C.
References clear().

| void addCompileFile | ( | const fileName & | name | ) |
Add a file template name, which will be found and filtered.
Definition at line 346 of file dynamicCode.C.
References Foam::name().
Referenced by codedPoints0MotionSolver::prepare(), CodedFunction1< Type >::prepare(), CodedField< Type >::prepare(), CodedSource< Type >::prepare(), and codedFunctionObject::prepare().


| void addCopyFile | ( | const fileName & | name | ) |
Add a file template name, which will be found and filtered.
Definition at line 352 of file dynamicCode.C.
References Foam::name().
Referenced by codedPoints0MotionSolver::prepare(), CodedFunction1< Type >::prepare(), CodedField< Type >::prepare(), CodedSource< Type >::prepare(), and codedFunctionObject::prepare().


| void addCreateFile | ( | const fileName & | name, |
| const std::string & | contents | ||
| ) |
Add a file to create with its contents. Will not be filtered.
Definition at line 359 of file dynamicCode.C.
References Foam::name().

| void setFilterContext | ( | const dynamicCodeContext & | context | ) |
Define filter variables for code, codeInclude, SHA1sum.
Definition at line 369 of file dynamicCode.C.
References dynamicCodeContext::code(), dynamicCodeContext::include(), dynamicCodeContext::localCode(), dynamicCodeContext::sha1(), and SHA1::str().

| void setFilterVariable | ( | const word & | key, |
| const std::string & | value | ||
| ) |
Define a filter variable.
Definition at line 381 of file dynamicCode.C.
References Foam::glTF::key().
Referenced by codedPoints0MotionSolver::prepare(), CodedField< Type >::prepare(), CodedFunction1< Type >::prepare(), CodedSource< Type >::prepare(), codedFunctionObject::prepare(), and dynamicCode::setFieldTemplates().


| void setMakeOptions | ( | const std::string & | content | ) |
Define contents for Make/options.
Definition at line 390 of file dynamicCode.C.
Referenced by codedPoints0MotionSolver::prepare(), CodedFunction1< Type >::prepare(), CodedField< Type >::prepare(), CodedSource< Type >::prepare(), and codedFunctionObject::prepare().

| bool upToDate | ( | const dynamicCodeContext & | context | ) | const |
Verify if the copied code is up-to-date, based on Make/SHA1Digest.
Definition at line 523 of file dynamicCode.C.
References dynamicCodeContext::sha1().

| bool upToDate | ( | const SHA1Digest & | sha1 | ) | const |
Verify if the copied code is up-to-date, based on Make/SHA1Digest.
Definition at line 510 of file dynamicCode.C.
References Foam::exists().

| bool copyOrCreateFiles | ( | const bool | verbose = false | ) | const |
Copy/create files prior to compilation.
Definition at line 396 of file dynamicCode.C.
References DetailInfo, UList< T >::empty(), Foam::endl(), Foam::exit(), Foam::stringOps::expand(), Foam::FatalError, FatalErrorInFunction, IOstream::good(), Foam::mkDir(), fileName::name(), Foam::nl, and fileName::path().

| bool wmakeLibso | ( | ) | const |
Compile a libso.
Definition at line 488 of file dynamicCode.C.
References Foam::endl(), Foam::Info, Foam::infoDetailLevel, Foam::InfoErr, and Foam::system().

|
static |
Wait for libPath() file to appear on sub-ranks.
Returns immediately if non-parallel or IOobject::fileModificationSkew is not set
Definition at line 532 of file dynamicCode.C.
References Pstream::broadcast(), Foam::ensightOutput::debug, DebugPout, Foam::endl(), Foam::exit(), Foam::FatalIOError, FatalIOErrorInFunction, IOobject::fileModificationSkew, Foam::fileSize(), IOobject::maxFileModificationPolls, UPstream::myProcNo(), Foam::nl, UPstream::parRun(), and Foam::sleep().

|
inline |
Define a filter variables TemplateType and FieldType.
Definition at line 385 of file dynamicCode.H.
References dynamicCode::setFilterVariable().
Referenced by CodedField< Type >::prepare(), and CodedFunction1< Type >::prepare().


|
staticprotected |
Directory for library targets for Make/files.
Definition at line 113 of file dynamicCode.H.
|
staticprotected |
Top-level directory name for copy/compiling.
Definition at line 118 of file dynamicCode.H.
|
static |
Name of the code template environment variable.
Used to located the codeTemplateName
Definition at line 181 of file dynamicCode.H.
|
static |
Name of the code template sub-directory.
Used when locating the codeTemplateName via Foam::findEtcFile
Definition at line 188 of file dynamicCode.H.
|
static |
Flag if system operations are allowed.
Definition at line 193 of file dynamicCode.H.
Referenced by argList::parse(), and systemCall::read().