dictionary functionEntries cleanup

* added '#remove' function
  * changed insert() method name to more general execute()
  * using #inputMode or #remove within a primitiveEntry now provokes an error
  * adjusted the dictionaryTest accordingly
This commit is contained in:
Mark Olesen
2008-06-13 10:43:31 +02:00
parent 64d00dc22b
commit 1e8d4b2a82
16 changed files with 432 additions and 207 deletions

View File

@ -42,24 +42,17 @@ namespace functionEntries
( (
functionEntry, functionEntry,
calcEntry, calcEntry,
insert, execute,
primitiveEntryIstream primitiveEntryIstream
); );
addToMemberFunctionSelectionTable
(
functionEntry,
calcEntry,
insert,
dictionaryIstream
);
} }
} }
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
bool Foam::functionEntries::calcEntry::insert bool Foam::functionEntries::calcEntry::execute
( (
const dictionary& parentDict, const dictionary& parentDict,
primitiveEntry& entry, primitiveEntry& entry,
@ -75,14 +68,4 @@ bool Foam::functionEntries::calcEntry::insert
} }
bool Foam::functionEntries::calcEntry::insert
(
dictionary& parentDict,
Istream& is
)
{
return true;
}
// ************************************************************************* // // ************************************************************************* //

View File

@ -69,18 +69,13 @@ public:
// Member Functions // Member Functions
static bool insert static bool execute
( (
const dictionary& parentDict, const dictionary& parentDict,
primitiveEntry& entry, primitiveEntry& entry,
Istream& is Istream& is
); );
static bool insert
(
dictionary& parentDict,
Istream& is
);
}; };

View File

@ -1,17 +1,19 @@
/*-------------------------------*- C++ -*---------------------------------*\
| ========= |
| \\ / OpenFOAM |
| \\ / |
| \\ / The Open Source CFD Toolbox |
| \\/ http://www.OpenFOAM.org |
\*-------------------------------------------------------------------------*/
FoamFile FoamFile
{ {
version 2.0; version 2.0;
format ascii; format ascii;
root "";
case "";
instance "";
local "";
class dictionary; class dictionary;
object testDict; object testDict;
} }
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#inputMode merge
dimensions [ 0 2 -2 0 0 0 0 ]; dimensions [ 0 2 -2 0 0 0 0 ];
internalField uniform 1; internalField uniform 1;
@ -29,7 +31,6 @@ inactive
type zeroGradient; type zeroGradient;
} }
boundaryField boundaryField
{ {
Default_Boundary_Region Default_Boundary_Region
@ -40,6 +41,12 @@ boundaryField
inlet_1 { $active } inlet_1 { $active }
inlet_2 { $inactive } inlet_2 { $inactive }
inlet_3 { $inactive } inlet_3 { $inactive }
inlet_4 { $inactive }
inlet_5 "a primitiveEntry is squashed by a directory entry";
inlet_5 { $inactive }
inlet_6 { $inactive }
inlet_7 { $inactive }
inlet_8 { $inactive }
#include "testDictInc" #include "testDictInc"
@ -48,8 +55,44 @@ boundaryField
type inletOutlet; type inletOutlet;
inletValue $internalField; inletValue $internalField;
value #include "value"; value #include "value";
// error #remove self;
x 5; x 5;
y 6; y 6;
another #calc{x $x; y $y;}; another #calc{x $x; y $y;};
} }
// this should have no effect
#remove inactive
inlet_7 { $active }
#inputMode overwrite
inlet_8 { $active }
} }
// NB: the inputMode has a global scope
#inputMode merge
#include "testDict2"
foo
{
$active
}
bar
{
$active
}
baz
{
$active
}
// this should work
#remove active
// this should work too
#remove ( bar baz )
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View File

@ -0,0 +1,30 @@
/*-------------------------------*- C++ -*---------------------------------*\
| ========= |
| \\ / OpenFOAM |
| \\ / |
| \\ / The Open Source CFD Toolbox |
| \\/ http://www.OpenFOAM.org |
\*-------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object testDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
boundaryField
{
Default_Boundary_Region
{
value $internalField;
note "actually a noslip wall";
}
inlet_3 "a primitiveEntry squashes directory entry";
}
#inputMode overwrite
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View File

@ -1 +1,2 @@
uniform 2 // the trailing ';' shouldn't actually be there, but shouldn't cause problems
uniform 2;

View File

@ -122,6 +122,7 @@ functionEntries = $(dictionary)/functionEntries
$(functionEntries)/functionEntry/functionEntry.C $(functionEntries)/functionEntry/functionEntry.C
$(functionEntries)/includeEntry/includeEntry.C $(functionEntries)/includeEntry/includeEntry.C
$(functionEntries)/inputModeEntry/inputModeEntry.C $(functionEntries)/inputModeEntry/inputModeEntry.C
$(functionEntries)/removeEntry/removeEntry.C
IOdictionary = db/IOobjects/IOdictionary IOdictionary = db/IOobjects/IOdictionary
$(IOdictionary)/IOdictionary.C $(IOdictionary)/IOdictionary.C

View File

@ -96,7 +96,7 @@ bool Foam::entry::New(dictionary& parentDict, Istream& is)
if (keyword[0] == '#') // ... Function entry if (keyword[0] == '#') // ... Function entry
{ {
word functionName = keyword(1, keyword.size()-1); word functionName = keyword(1, keyword.size()-1);
return functionEntry::insert(functionName, parentDict, is); return functionEntry::execute(functionName, parentDict, is);
} }
else if (keyword[0] == '$') // ... Substitution entry else if (keyword[0] == '$') // ... Substitution entry
{ {
@ -105,7 +105,7 @@ bool Foam::entry::New(dictionary& parentDict, Istream& is)
} }
else if (keyword == "include") // ... For backward compatibility else if (keyword == "include") // ... For backward compatibility
{ {
return functionEntries::includeEntry::insert(parentDict, is); return functionEntries::includeEntry::execute(parentDict, is);
} }
else // ... Data entries else // ... Data entries
{ {
@ -114,12 +114,18 @@ bool Foam::entry::New(dictionary& parentDict, Istream& is)
// Deal with duplicate entries // Deal with duplicate entries
bool mergeEntry = false; bool mergeEntry = false;
if (parentDict.found(keyword))
entry* existingPtr = parentDict.lookupEntryPtr(keyword);
if (existingPtr)
{ {
if (functionEntries::inputModeEntry::overwrite()) if (functionEntries::inputModeEntry::overwrite())
{ {
// silently drop previous entries // clear dictionary so merge acts like overwrite
parentDict.remove(keyword); if (existingPtr->isDict())
{
existingPtr->dict().clear();
}
mergeEntry = true;
} }
else if (functionEntries::inputModeEntry::merge()) else if (functionEntries::inputModeEntry::merge())
{ {

View File

@ -33,22 +33,66 @@ namespace Foam
defineMemberFunctionSelectionTable defineMemberFunctionSelectionTable
( (
functionEntry, functionEntry,
insert, execute,
primitiveEntryIstream dictionaryIstream
); );
defineMemberFunctionSelectionTable defineMemberFunctionSelectionTable
( (
functionEntry, functionEntry,
insert, execute,
dictionaryIstream primitiveEntryIstream
); );
} }
// * * * * * * * * * * * * Member Function Selectors * * * * * * * * * * * * // // * * * * * * * * * * * * Member Function Selectors * * * * * * * * * * * * //
bool Foam::functionEntry::insert bool Foam::functionEntry::execute
(
const word& functionName,
dictionary& parentDict,
Istream& is
)
{
is.fatalCheck
(
"functionEntry::execute"
"(const word& functionName, dictionary& parentDict, Istream& is)"
);
if (!executedictionaryIstreamMemberFunctionTablePtr_)
{
cerr<<"functionEntry::execute"
<< "(const word&, dictionary&, Istream&)"
<< " not yet initialized, function = "
<< functionName.c_str() << std::endl;
// Return true to keep reading
return true;
}
executedictionaryIstreamMemberFunctionTable::iterator mfIter =
executedictionaryIstreamMemberFunctionTablePtr_->find(functionName);
if (mfIter == executedictionaryIstreamMemberFunctionTablePtr_->end())
{
FatalErrorIn
(
"functionEntry::execute"
"(const word& functionName, dictionary& parentDict, Istream&)"
) << "Unknown functionEntry " << functionName
<< endl << endl
<< "Valid functionEntries are :" << endl
<< executedictionaryIstreamMemberFunctionTablePtr_->toc()
<< exit(FatalError);
}
return mfIter()(parentDict, is);
}
bool Foam::functionEntry::execute
( (
const word& functionName, const word& functionName,
const dictionary& parentDict, const dictionary& parentDict,
@ -58,14 +102,14 @@ bool Foam::functionEntry::insert
{ {
is.fatalCheck is.fatalCheck
( (
"functionEntry::insert" "functionEntry::execute"
"(const word& functionName, const dictionary& parentDict, " "(const word& functionName, const dictionary& parentDict, "
"primitiveEntry& entry, Istream& is)" "primitiveEntry&, Istream&)"
); );
if (!insertprimitiveEntryIstreamMemberFunctionTablePtr_) if (!executeprimitiveEntryIstreamMemberFunctionTablePtr_)
{ {
cerr<<"functionEntry::insert" cerr<<"functionEntry::execute"
<< "(const word&, dictionary&, primitiveEntry&, Istream&)" << "(const word&, dictionary&, primitiveEntry&, Istream&)"
<< " not yet initialized, function = " << " not yet initialized, function = "
<< functionName.c_str() << std::endl; << functionName.c_str() << std::endl;
@ -74,69 +118,24 @@ bool Foam::functionEntry::insert
return true; return true;
} }
insertprimitiveEntryIstreamMemberFunctionTable::iterator mfIter = executeprimitiveEntryIstreamMemberFunctionTable::iterator mfIter =
insertprimitiveEntryIstreamMemberFunctionTablePtr_->find(functionName); executeprimitiveEntryIstreamMemberFunctionTablePtr_->find(functionName);
if (mfIter == insertprimitiveEntryIstreamMemberFunctionTablePtr_->end()) if (mfIter == executeprimitiveEntryIstreamMemberFunctionTablePtr_->end())
{ {
FatalErrorIn FatalErrorIn
( (
"functionEntry::insert" "functionEntry::execute"
"(const word& functionName, const dictionary& parentDict, " "(const word& functionName, const dictionary& parentDict, "
"primitiveEntry& entry, Istream& is)" "primitiveEntry&, Istream&)"
) << "Unknown functionEntry " << functionName ) << "Unknown functionEntry " << functionName
<< endl << endl << endl << endl
<< "Valid functionEntries are :" << endl << "Valid functionEntries are :" << endl
<< insertprimitiveEntryIstreamMemberFunctionTablePtr_->toc() << executeprimitiveEntryIstreamMemberFunctionTablePtr_->toc()
<< exit(FatalError); << exit(FatalError);
} }
return mfIter()(parentDict, entry, is); return mfIter()(parentDict, entry, is);
} }
bool Foam::functionEntry::insert
(
const word& functionName,
dictionary& parentDict,
Istream& is
)
{
is.fatalCheck
(
"functionEntry::insert"
"(const word& functionName, dictionary& parentDict, Istream& is)"
);
if (!insertdictionaryIstreamMemberFunctionTablePtr_)
{
cerr<<"functionEntry::insert"
<< "(const word&, dictionary&, Istream&)"
<< " not yet initialized, function = "
<< functionName.c_str() << std::endl;
// Return true to keep reading
return true;
}
insertdictionaryIstreamMemberFunctionTable::iterator mfIter =
insertdictionaryIstreamMemberFunctionTablePtr_->find(functionName);
if (mfIter == insertdictionaryIstreamMemberFunctionTablePtr_->end())
{
FatalErrorIn
(
"functionEntry::insert"
"(const word& functionName, dictionary& parentDict, Istream& is)"
) << "Unknown functionEntry " << functionName
<< endl << endl
<< "Valid functionEntries are :" << endl
<< insertdictionaryIstreamMemberFunctionTablePtr_->toc()
<< exit(FatalError);
}
return mfIter()(parentDict, is);
}
// ************************************************************************* // // ************************************************************************* //

View File

@ -33,13 +33,10 @@ Class
Foam::functionEntry Foam::functionEntry
Description Description
A function entry causes entries to be added/manipulated on the specified A functionEntry causes entries to be added/manipulated on the specified
dictionary given an input stream. dictionary given an input stream.
In dictionaries, a @c \# sigil is typically used for a functionEntry. In dictionaries, a @c '\#' sigil is typically used for a functionEntry.
See Also
functionEntries::includeEntry and functionEntries::inputModeEntry
SourceFiles SourceFiles
functionEntry.C functionEntry.C
@ -84,7 +81,28 @@ public:
( (
bool, bool,
functionEntry, functionEntry,
insert, execute,
dictionaryIstream,
(
dictionary& parentDict,
Istream& is
),
(parentDict, is)
);
//- Execute the functionEntry in a sub-dict context
static bool execute
(
const word& functionName,
dictionary& parentDict,
Istream& is
);
declareMemberFunctionSelectionTable
(
bool,
functionEntry,
execute,
primitiveEntryIstream, primitiveEntryIstream,
( (
const dictionary& parentDict, const dictionary& parentDict,
@ -94,7 +112,8 @@ public:
(parentDict, entry, is) (parentDict, entry, is)
); );
static bool insert //- Execute the functionEntry in a primitiveEntry context
static bool execute
( (
const word& functionName, const word& functionName,
const dictionary& parentDict, const dictionary& parentDict,
@ -103,25 +122,6 @@ public:
); );
declareMemberFunctionSelectionTable
(
bool,
functionEntry,
insert,
dictionaryIstream,
(
dictionary& parentDict,
Istream& is
),
(parentDict, is)
);
static bool insert
(
const word& functionName,
dictionary& parentDict,
Istream& is
);
}; };

View File

@ -48,16 +48,16 @@ namespace functionEntries
( (
functionEntry, functionEntry,
includeEntry, includeEntry,
insert, execute,
primitiveEntryIstream dictionaryIstream
); );
addToMemberFunctionSelectionTable addToMemberFunctionSelectionTable
( (
functionEntry, functionEntry,
includeEntry, includeEntry,
insert, execute,
dictionaryIstream primitiveEntryIstream
); );
} }
} }
@ -82,7 +82,35 @@ Foam::fileName Foam::functionEntries::includeEntry::includeFileName
} }
bool Foam::functionEntries::includeEntry::insert bool Foam::functionEntries::includeEntry::execute
(
dictionary& parentDict,
Istream& is
)
{
IFstream fileStream(includeFileName(is));
if (fileStream)
{
parentDict.read(fileStream);
return true;
}
else
{
FatalIOErrorIn
(
"functionEntries::includeEntry::includeEntry"
"(dictionary& parentDict,Istream& is)",
is
) << "Cannot open include file " << fileStream.name()
<< " while reading dictionary " << parentDict.name()
<< exit(FatalIOError);
return false;
}
}
bool Foam::functionEntries::includeEntry::execute
( (
const dictionary& parentDict, const dictionary& parentDict,
primitiveEntry& entry, primitiveEntry& entry,
@ -111,34 +139,4 @@ bool Foam::functionEntries::includeEntry::insert
} }
} }
bool Foam::functionEntries::includeEntry::insert
(
dictionary& parentDict,
Istream& is
)
{
IFstream fileStream(includeFileName(is));
if (fileStream)
{
parentDict.read(fileStream);
return true;
}
else
{
FatalIOErrorIn
(
"functionEntries::includeEntry::includeEntry"
"(dictionary& parentDict,Istream& is)",
is
) << "Cannot open include file " << fileStream.name()
<< " while reading dictionary " << parentDict.name()
<< exit(FatalIOError);
return false;
}
}
// ************************************************************************* // // ************************************************************************* //

View File

@ -29,9 +29,9 @@ Description
Specify an include file when reading dictionaries, expects a Specify an include file when reading dictionaries, expects a
single string to follow. single string to follow.
An example of @c \#include directive: An example of the @c \#include directive:
@verbatim @verbatim
\#include "includefile" #include "includeFile"
@endverbatim @endverbatim
The usual expansion of environment variables and other constructs (eg, The usual expansion of environment variables and other constructs (eg,
@ -85,18 +85,21 @@ public:
// Member Functions // Member Functions
static bool insert //- Execute the functionEntry in a sub-dict context
static bool execute
(
dictionary& parentDict,
Istream& is
);
//- Execute the functionEntry in a primitiveEntry context
static bool execute
( (
const dictionary& parentDict, const dictionary& parentDict,
primitiveEntry& entry, primitiveEntry& entry,
Istream& is Istream& is
); );
static bool insert
(
dictionary& parentDict,
Istream& is
);
}; };

View File

@ -47,15 +47,7 @@ namespace functionEntries
( (
functionEntry, functionEntry,
inputModeEntry, inputModeEntry,
insert, execute,
primitiveEntryIstream
);
addToMemberFunctionSelectionTable
(
functionEntry,
inputModeEntry,
insert,
dictionaryIstream dictionaryIstream
); );
} }
@ -63,7 +55,7 @@ namespace functionEntries
// * * * * * * * * * * * * * * * * Private Data * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * Private Data * * * * * * * * * * * * * * //
Foam::label Foam::functionEntries::inputModeEntry::inputMode_ = imError; Foam::label Foam::functionEntries::inputModeEntry::mode_ = imError;
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
@ -74,15 +66,15 @@ void Foam::functionEntries::inputModeEntry::setMode(Istream& is)
word mode(is); word mode(is);
if (mode == "merge") if (mode == "merge")
{ {
inputMode_ = imMerge; mode_ = imMerge;
} }
else if (mode == "overwrite") else if (mode == "overwrite")
{ {
inputMode_ = imOverwrite; mode_ = imOverwrite;
} }
else if (mode == "error" || mode == "default") else if (mode == "error" || mode == "default")
{ {
inputMode_ = imError; mode_ = imError;
} }
else else
{ {
@ -95,19 +87,7 @@ void Foam::functionEntries::inputModeEntry::setMode(Istream& is)
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
bool Foam::functionEntries::inputModeEntry::insert bool Foam::functionEntries::inputModeEntry::execute
(
const dictionary& parentDict,
primitiveEntry& entry,
Istream& is
)
{
setMode(is);
return true;
}
bool Foam::functionEntries::inputModeEntry::insert
( (
dictionary& parentDict, dictionary& parentDict,
Istream& is Istream& is
@ -120,13 +100,13 @@ bool Foam::functionEntries::inputModeEntry::insert
void Foam::functionEntries::inputModeEntry::clear() void Foam::functionEntries::inputModeEntry::clear()
{ {
inputMode_ = imError; mode_ = imError;
} }
bool Foam::functionEntries::inputModeEntry::merge() bool Foam::functionEntries::inputModeEntry::merge()
{ {
if (inputMode_ & imMerge) if (mode_ & imMerge)
{ {
return true; return true;
} }
@ -139,7 +119,7 @@ bool Foam::functionEntries::inputModeEntry::merge()
bool Foam::functionEntries::inputModeEntry::overwrite() bool Foam::functionEntries::inputModeEntry::overwrite()
{ {
if (inputMode_ & imOverwrite) if (mode_ & imOverwrite)
{ {
return true; return true;
} }

View File

@ -74,11 +74,12 @@ class inputModeEntry
}; };
//- current input mode //- current input mode
static label inputMode_; static label mode_;
// Private Member Functions // Private Member Functions
//- Read the mode as a word and set enum appropriately
static void setMode(Istream&); static void setMode(Istream&);
//- Disallow default bitwise copy construct //- Disallow default bitwise copy construct
@ -96,23 +97,20 @@ public:
// Member Functions // Member Functions
static bool insert //- Execute the functionEntry in a sub-dict context
( static bool execute
const dictionary& parentDict,
primitiveEntry&,
Istream&
);
static bool insert
( (
dictionary& parentDict, dictionary& parentDict,
Istream& Istream&
); );
//- Reset the inputMode to 'default'
static void clear(); static void clear();
//- Return true if the inputMode is 'merge'
static bool merge(); static bool merge();
//- Return true if the inputMode is 'overwrite'
static bool overwrite(); static bool overwrite();
}; };

View File

@ -0,0 +1,88 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2 of the License, or (at your
option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
\*---------------------------------------------------------------------------*/
#include "removeEntry.H"
#include "dictionary.H"
#include "IStringStream.H"
#include "OStringStream.H"
#include "addToMemberFunctionSelectionTable.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
const Foam::word Foam::functionEntries::removeEntry::typeName
(
Foam::functionEntries::removeEntry::typeName_()
);
// Don't lookup the debug switch here as the debug switch dictionary
// might include removeEntry
int Foam::functionEntries::removeEntry::debug(0);
namespace Foam
{
namespace functionEntries
{
addToMemberFunctionSelectionTable
(
functionEntry,
removeEntry,
execute,
dictionaryIstream
);
}
}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
bool Foam::functionEntries::removeEntry::execute
(
dictionary& parentDict,
Istream& is
)
{
token currToken(is);
is.putBack(currToken);
if (currToken == token::BEGIN_LIST)
{
wordList keys(is);
forAll(keys, keyI)
{
parentDict.remove(keys[keyI]);
}
}
else
{
word key(is);
parentDict.remove(key);
}
return true;
}
// ************************************************************************* //

View File

@ -0,0 +1,100 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2 of the License, or (at your
option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Class
Foam::functionEntries::removeEntry
Description
Remove a dictionary entry.
The @c \#remove directive takes a word or a list of words. For example,
@verbatim
#remove entry0
#remove ( entry1 entry2 entry3 )
@endverbatim
The removable only occurs in the current context.
Removing sub-entries or parent entries is not supported.
SourceFiles
removeEntry.C
\*---------------------------------------------------------------------------*/
#ifndef removeEntry_H
#define removeEntry_H
#include "functionEntry.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
namespace functionEntries
{
/*---------------------------------------------------------------------------*\
Class removeEntry Declaration
\*---------------------------------------------------------------------------*/
class removeEntry
:
public functionEntry
{
// Private Member Functions
//- Disallow default bitwise copy construct
removeEntry(const removeEntry&);
//- Disallow default bitwise assignment
void operator=(const removeEntry&);
public:
//- Runtime type information
TypeName("remove");
// Member Functions
//- Execute the functionEntry in a sub-dict context
static bool execute
(
dictionary& parentDict,
Istream& is
);
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace functionEntries
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //

View File

@ -115,7 +115,7 @@ bool Foam::primitiveEntry::expandFunction
) )
{ {
word functionName = keyword(1, keyword.size()-1); word functionName = keyword(1, keyword.size()-1);
return functionEntry::insert(functionName, parentDict, *this, is); return functionEntry::execute(functionName, parentDict, *this, is);
} }