Loading...
Searching...
No Matches
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...

#include <codedBase.H>

Inheritance diagram for codedBase:

Public Member Functions

 ClassName ("codedBase")
 Runtime type information.
 codedBase (const codedBase &)=delete
 No copy construct.
void operator= (const codedBase &)=delete
 No copy assignment.
 codedBase ()=default
 Default construct.
virtual ~codedBase ()=default
 Destructor.

Protected Member Functions

dynamicCodeContextcodeContext ()
 Access to the dynamic code context.
void setCodeContext (const dictionary &dict)
 Set code context from a dictionary.
void append (const std::string &str)
 Add content to SHA1 hashing.
void updateLibrary (const word &name, const dynamicCodeContext &context) const
 Update library as required, using the given context.
void updateLibrary (const word &name, const dictionary &dict) const
 Update library as required, using the given code dictionary to use for the context.
void updateLibrary (const word &name) const
 Update library as required, using the predefined context or use the codeDict() to generate one.
virtual dlLibraryTablelibs () const =0
 Mutable access to the loaded dynamic libraries.
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.

Static Protected Member Functions

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

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 62 of file codedBase.H.

Constructor & Destructor Documentation

◆ codedBase() [1/2]

◆ 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 81 of file codedBase.C.

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

Referenced by codedFixedValueFvPatchField< Type >::write(), codedFixedValuePointPatchField< Type >::write(), and codedMixedFvPatchField< Type >::write().

Here is the call graph for this function:
Here is the caller 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 93 of file codedBase.C.

References dictName(), objectRegistry::getObjectPtr(), IOobjectOption::NO_WRITE, IOobjectOption::READ_MODIFIED, IOobjectOption::REGISTER, regIOobject::store(), TimePaths::system(), and objectRegistry::time().

Referenced by codedMixedFvPatchField< Type >::codeDict(), and updateLibrary().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ codeContext()

dynamicCodeContext & codeContext ( )
inlineprotected

Access to the dynamic code context.

Definition at line 131 of file codedBase.H.

Referenced by codedFunctionObject::read(), and CodedSource< Type >::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 270 of file codedBase.C.

References dict.

Referenced by CodedField< Type >::CodedField(), CodedFunction1< Type >::CodedFunction1(), codedFunctionObject::read(), and CodedSource< Type >::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 276 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 282 of file codedBase.C.

References dlLibraryTable::basename(), dynamicCode::checkSecurity(), clearRedirect(), dynamicCode::codeName(), description(), DetailInfo, dynamicCodeContext::dict(), Foam::endl(), dynamicCode::libPath(), libs(), loadLibrary(), dictionary::name(), Foam::name(), Foam::returnReduceOr(), dynamicCodeContext::sha1(), dictionary::startLineNumber(), and SHA1::str().

Referenced by CodedSource< Type >::addSup(), CodedSource< Type >::addSup(), CodedField< Type >::CodedField(), CodedFunction1< Type >::CodedFunction1(), codedFunctionObject::codedFunctionObject(), CodedSource< Type >::constrain(), CodedSource< Type >::correct(), codedPoints0MotionSolver::curPoints(), codedFunctionObject::end(), codedFixedValueFvPatchField< Type >::evaluate(), codedFixedValuePointPatchField< Type >::evaluate(), codedMixedFvPatchField< Type >::evaluate(), codedFunctionObject::execute(), CodedField< Type >::integrate(), codedPoints0MotionSolver::movePoints(), codedFunctionObject::read(), codedPoints0MotionSolver::solve(), codedFixedValueFvPatchField< Type >::updateCoeffs(), codedFixedValuePointPatchField< Type >::updateCoeffs(), codedMixedFvPatchField< Type >::updateCoeffs(), updateLibrary(), updateLibrary(), codedPoints0MotionSolver::updateMesh(), CodedFunction1< Type >::value(), CodedField< Type >::value(), and codedFunctionObject::write().

Here is the call graph for this function:
Here is the caller 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 344 of file codedBase.C.

References dict, Foam::name(), and updateLibrary().

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 354 of file codedBase.C.

References codeDict(), Foam::name(), and updateLibrary().

Here is the call graph for this function:

◆ libs()

virtual dlLibraryTable & libs ( ) const
protectedpure virtual

Mutable access to the loaded dynamic libraries.

Implemented in codedMixedFvPatchField< Type >, codedPoints0MotionSolver, CodedFunction1< Type >, codedFunctionObject, CodedSource< Type >, and CodedField< Type >.

Referenced by updateLibrary().

Here is the caller graph for this function:

◆ description()

virtual string description ( ) const
protectedpure virtual

◆ clearRedirect()

virtual void clearRedirect ( ) const
protectedpure virtual

◆ codeDict() [2/2]

◆ prepare()

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

◆ ClassName()

ClassName ( "codedBase" )

Runtime type information.

◆ operator=()

void operator= ( const codedBase & )
delete

No copy assignment.

References codedBase().

Here is the call graph for this function:

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