codedBase Class Referenceabstract

Base class for function objects and boundary conditions using dynamic code that provides methods for managing loading/unloading/updating of a dynamic library. For these purposes, it uses a dynamicCodeContext object to maintain information about the state. More...

Inheritance diagram for codedBase:
[legend]

Public Member Functions

 ClassName ("codedBase")
 Runtime type information. More...
 
 codedBase ()=default
 Default construct. More...
 
virtual ~codedBase ()=default
 Destructor. More...
 

Protected Member Functions

dynamicCodeContextcodeContext ()
 Access to the dynamic code context. More...
 
void setCodeContext (const dictionary &dict)
 Set code context from a dictionary. More...
 
void append (const std::string &str)
 Add content to SHA1 hashing. More...
 
void updateLibrary (const word &name, const dynamicCodeContext &context) const
 Update library as required, using the given context. More...
 
void updateLibrary (const word &name, const dictionary &dict) const
 
void updateLibrary (const word &name) const
 
virtual dlLibraryTablelibs () const =0
 Mutable access to the loaded dynamic libraries. More...
 
virtual string description () const =0
 
virtual void clearRedirect () const =0
 
virtual const dictionarycodeDict () const =0
 
virtual void prepare (dynamicCode &dynCode, const dynamicCodeContext &context) const =0
 Adapt the context for the current object. More...
 
 codedBase (const codedBase &)=delete
 No copy construct. More...
 
void operator= (const codedBase &)=delete
 No copy assignment. More...
 

Static Protected Member Functions

static void writeCodeDict (Ostream &os, const dictionary &dict)
 Write code-dictionary contents. More...
 
static const dictionarycodeDict (const objectRegistry &obr, const word &dictName="codeDict")
 Return "codeDict" from objectRegistry or read from disk. More...
 

Detailed Description

Base class for function objects and boundary conditions using dynamic code that provides methods for managing loading/unloading/updating of a dynamic library. For these purposes, it uses a dynamicCodeContext object to maintain information about the state.

For simple coded objects, the default state management is sufficient. When there are more complicated code segments (eg, functionObjects::codedFunctionObject), the state management must also register these elements as well, starting with an initial setCodeContext() call and followed by append() to register each element.

Source files

Definition at line 66 of file codedBase.H.

Constructor & Destructor Documentation

◆ codedBase() [1/2]

codedBase ( const codedBase )
protecteddelete

No copy construct.

◆ codedBase() [2/2]

codedBase ( )
default

Default construct.

◆ ~codedBase()

virtual ~codedBase ( )
virtualdefault

Destructor.

Member Function Documentation

◆ writeCodeDict()

void writeCodeDict ( Ostream os,
const dictionary dict 
)
staticprotected

Write code-dictionary contents.

Definition at line 88 of file codedBase.C.

References dict, os(), and Foam::writeEntryIfPresent().

Here is the call graph for this function:

◆ codeDict() [1/2]

const Foam::dictionary & codeDict ( const objectRegistry obr,
const word dictName = "codeDict" 
)
staticprotected

Return "codeDict" from objectRegistry or read from disk.

Definition at line 101 of file codedBase.C.

References dictName(), objectRegistry::getObjectPtr(), IOobject::MUST_READ_IF_MODIFIED, IOobject::NO_WRITE, regIOobject::store(), TimePaths::system(), and objectRegistry::time().

Here is the call graph for this function:

◆ codeContext()

dynamicCodeContext& codeContext ( )
inlineprotected

Access to the dynamic code context.

Definition at line 119 of file codedBase.H.

Referenced by codedFunctionObject::read().

Here is the caller graph for this function:

◆ setCodeContext()

void setCodeContext ( const dictionary dict)
protected

Set code context from a dictionary.

Definition at line 341 of file codedBase.C.

References dict.

Referenced by codedFunctionObject::read().

Here is the caller graph for this function:

◆ append()

void append ( const std::string &  str)
protected

Add content to SHA1 hashing.

Definition at line 347 of file codedBase.C.

◆ updateLibrary() [1/3]

void updateLibrary ( const word name,
const dynamicCodeContext context 
) const
protected

Update library as required, using the given context.

Definition at line 354 of file codedBase.C.

References dlLibraryTable::basename(), dynamicCode::checkSecurity(), DetailInfo, dynamicCodeContext::dict(), Foam::endl(), Foam::name(), dictionary::name(), dynamicCodeContext::sha1(), dictionary::startLineNumber(), and SHA1::str().

Here is the call graph for this function:

◆ updateLibrary() [2/3]

void updateLibrary ( const word name,
const dictionary dict 
) const
protected

Update library as required, using the given code dictionary to use for the context

Definition at line 413 of file codedBase.C.

References dict, and Foam::name().

Here is the call graph for this function:

◆ updateLibrary() [3/3]

void updateLibrary ( const word name) const
protected

Update library as required, using the predefined context or use the codeDict() to generate one

Definition at line 422 of file codedBase.C.

References Foam::name().

Here is the call graph for this function:

◆ libs()

virtual dlLibraryTable& libs ( ) const
protectedpure virtual

◆ description()

◆ clearRedirect()

virtual void clearRedirect ( ) const
protectedpure virtual

◆ codeDict() [2/2]

◆ prepare()

virtual void prepare ( dynamicCode dynCode,
const dynamicCodeContext context 
) const
protectedpure virtual

◆ operator=()

void operator= ( const codedBase )
protecteddelete

No copy assignment.

◆ ClassName()

ClassName ( "codedBase"  )

Runtime type information.


The documentation for this class was generated from the following files: