Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Development
openfoam
Commits
14e9ef34
Commit
14e9ef34
authored
May 29, 2018
by
mattijs
Browse files
Merge remote-tracking branch 'origin/develop' into develop
parents
ca6b6cee
7df06083
Changes
20
Hide whitespace changes
Inline
Side-by-side
applications/test/dictionary/testDict
View file @
14e9ef34
...
...
@@ -14,8 +14,8 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#include
IfPresent
"someUnknownFile"
#include
IfPresent
"$FOAM_CASE/someUnknownFile"
#
s
include
"someUnknownFile"
#
s
include
"$FOAM_CASE/someUnknownFile"
#includeIfPresent "$FOAM_CASE/someUnknownFile-$FOAM_CASENAME"
internalField uniform 1;
...
...
applications/utilities/miscellaneous/foamDictionary/foamDictionary.C
View file @
14e9ef34
...
...
@@ -59,7 +59,7 @@ Usage
the resulting dictionary to standard output.
- \par -includes
List the \c \#include and \c \#include
IfPresent
files to standard output
List the \c \#include and \c \#
s
include files to standard output
- \par -disableFunctionEntries
Do not expand macros or directives (\#include etc)
...
...
@@ -307,7 +307,7 @@ int main(int argc, char *argv[])
argList
::
addBoolOption
(
"includes"
,
"List the #include/#include
IfPresent
files to standard output"
"List the #include/#
s
include files to standard output"
);
argList
::
addBoolOption
(
...
...
etc/config.csh/aliases
View file @
14e9ef34
...
...
@@ -49,6 +49,11 @@ alias util 'cd $FOAM_UTILITIES'
alias
tut
'cd $FOAM_TUTORIALS'
alias
run
'cd $FOAM_RUN'
alias
ufoam
'cd $WM_PROJECT_USER_DIR'
alias
uapp
'cd $WM_PROJECT_USER_DIR/applications'
alias
usol
'cd $WM_PROJECT_USER_DIR/applications/solvers'
alias
uutil
'cd $WM_PROJECT_USER_DIR/applications/utilities'
# Refresh the environment
# ~~~~~~~~~~~~~~~~~~~~~~~
...
...
etc/config.csh/unset
View file @
14e9ef34
...
...
@@ -175,6 +175,11 @@ unalias util
unalias
tut
unalias
run
unalias
ufoam
unalias
uapp
unalias
usol
unalias
uutil
unalias
wmRefresh
unalias
foamVersion
unalias
foamPV
...
...
etc/config.sh/aliases
View file @
14e9ef34
...
...
@@ -47,6 +47,11 @@ alias util='cd $FOAM_UTILITIES'
alias
tut
=
'cd $FOAM_TUTORIALS'
alias
run
=
'cd $FOAM_RUN'
alias
ufoam
=
'cd $WM_PROJECT_USER_DIR'
alias
uapp
=
'cd $WM_PROJECT_USER_DIR/applications'
alias
usol
=
'cd $WM_PROJECT_USER_DIR/applications/solvers'
alias
uutil
=
'cd $WM_PROJECT_USER_DIR/applications/utilities'
# Refresh the environment
# ~~~~~~~~~~~~~~~~~~~~~~~
...
...
@@ -106,4 +111,22 @@ foamPV()
}
# OpenFOAM working directory with basic env replacements
# ~~~~~~~~~~~~~~~~~~~~~~~~~~
unset
-f
foamPwd 2>/dev/null
foamPwd
()
{
if
[
-d
"
$WM_PROJECT_DIR
"
]
then
echo
$PWD
|
sed
\
-e
"s#^
${
FOAM_RUN
}
#
\$
FOAM_RUN#;"
\
-e
"s#^
${
WM_PROJECT_DIR
}
#
\$
WM_PROJECT_DIR#;"
\
-e
"s#^
${
WM_PROJECT_USER_DIR
}
#
\$
WM_PROJECT_USER_DIR#;"
\
-e
"s#^
${
HOME
}
#
\$
HOME#"
;
else
echo
$PWD
|
sed
-e
"s#^
${
HOME
}
#
\$
HOME#;"
fi
}
#------------------------------------------------------------------------------
etc/config.sh/unset
View file @
14e9ef34
...
...
@@ -170,10 +170,19 @@ unalias util 2>/dev/null
unalias
tut 2>/dev/null
unalias
run 2>/dev/null
unalias
ufoam 2>/dev/null
unalias
uapp 2>/dev/null
unalias
usol 2>/dev/null
unalias
uutil 2>/dev/null
unset
-f
wmRefresh 2>/dev/null
unset
-f
foamPwd 2>/dev/null
unset
-f
foamVersion 2>/dev/null
unset
-f
foamPV 2>/dev/null
# NB: no good way to remove foamPwd reference in PS1.
# Remove old completions, which look like
# "complete ... -F _of_complete_ APPNAME
# For economy, obtain list first
...
...
src/OSspecific/POSIX/printStack.C
View file @
14e9ef34
...
...
@@ -50,7 +50,7 @@ string pOpen(const string& cmd, label line=0)
char
*
buf
=
nullptr
;
// Read line number of lines
for
(
label
cnt
=
0
;
cnt
<=
line
;
cnt
++
)
for
(
label
cnt
=
0
;
cnt
<=
line
;
++
cnt
)
{
size_t
linecap
=
0
;
ssize_t
linelen
=
::
getline
(
&
buf
,
&
linecap
,
cmdPipe
);
...
...
@@ -96,6 +96,14 @@ inline word addressToWord(const uintptr_t addr)
}
inline
string
&
shorterPath
(
string
&
s
)
{
s
.
replace
(
cwd
()
+
'/'
,
""
);
s
.
replace
(
home
(),
"~"
);
return
s
;
}
void
printSourceFileAndLine
(
Ostream
&
os
,
...
...
@@ -132,14 +140,12 @@ void printSourceFileAndLine
}
else
if
(
line
==
"??:0"
)
{
os
<<
" in "
<<
filename
;
line
=
filename
;
os
<<
" in "
<<
shorterPath
(
line
).
c_str
();
}
else
{
string
cwdLine
(
line
.
replaceAll
(
cwd
()
+
'/'
,
""
));
string
homeLine
(
cwdLine
.
replaceAll
(
home
(),
"~"
));
os
<<
" at "
<<
homeLine
.
c_str
();
os
<<
" at "
<<
shorterPath
(
line
).
c_str
();
}
}
}
...
...
@@ -202,7 +208,7 @@ void Foam::error::safePrintStack(std::ostream& os)
// See if they contain function between () e.g. "(__libc_start_main+0xd0)"
// and see if cplus_demangle can make sense of part before +
for
(
size_t
i
=
0
;
i
<
size
;
i
++
)
for
(
size_t
i
=
0
;
i
<
size
;
++
i
)
{
string
msg
(
strings
[
i
]);
fileName
programFile
;
...
...
@@ -226,7 +232,7 @@ void Foam::error::printStack(Ostream& os)
fileName
fname
=
"???"
;
word
address
;
for
(
size_t
i
=
0
;
i
<
size
;
i
++
)
for
(
size_t
i
=
0
;
i
<
size
;
++
i
)
{
int
st
=
dladdr
(
callstack
[
i
],
info
);
...
...
src/OpenFOAM/Make/files
View file @
14e9ef34
...
...
@@ -231,7 +231,6 @@ $(functionEntries)/functionEntry/functionEntry.C
$(functionEntries)/includeEntry/includeEntry.C
$(functionEntries)/includeEtcEntry/includeEtcEntry.C
$(functionEntries)/includeFuncEntry/includeFuncEntry.C
$(functionEntries)/includeIfPresentEntry/includeIfPresentEntry.C
$(functionEntries)/inputMode/inputMode.C
$(functionEntries)/removeEntry/removeEntry.C
...
...
src/OpenFOAM/db/dictionary/functionEntries/README
View file @
14e9ef34
...
...
@@ -10,8 +10,9 @@
#remove | dict | keyType or List<keyType>
| |
#include | dict/primitive | string
#include
Etc
| dict/primitive | string
#
s
include
| dict/primitive | string
#includeIfPresent | dict/primitive | string
#includeEtc | dict/primitive | string
#includeFunc | dict | word
| |
#calc | dict/primitive | string
...
...
@@ -27,4 +28,4 @@ Pending future extensions
#undef | dict | keyType or List<keyType>
201
7-11
-2
6
201
8-05
-2
8
src/OpenFOAM/db/dictionary/functionEntries/includeEntry/includeEntry.C
View file @
14e9ef34
...
...
@@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
\\/ M anipulation |
Copyright (C) 2018 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
...
...
@@ -57,9 +57,47 @@ namespace functionEntries
primitiveEntryIstream
,
include
);
addNamedToMemberFunctionSelectionTable
(
functionEntry
,
sincludeEntry
,
execute
,
dictionaryIstream
,
sinclude
);
addNamedToMemberFunctionSelectionTable
(
functionEntry
,
sincludeEntry
,
execute
,
primitiveEntryIstream
,
sinclude
);
// Compat 1712 and earlier
addNamedToMemberFunctionSelectionTable
(
functionEntry
,
sincludeEntry
,
execute
,
dictionaryIstream
,
includeIfPresent
);
addNamedToMemberFunctionSelectionTable
(
functionEntry
,
sincludeEntry
,
execute
,
primitiveEntryIstream
,
includeIfPresent
);
}
}
// * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * * //
Foam
::
fileName
Foam
::
functionEntries
::
includeEntry
::
resolveFile
...
...
@@ -97,7 +135,7 @@ bool Foam::functionEntries::includeEntry::execute
const
fileName
fName
(
resolveFile
(
is
.
name
().
path
(),
rawName
,
parentDict
));
autoPtr
<
ISstream
>
ifsPtr
(
fileHandler
().
NewIFstream
(
fName
));
ISstream
&
ifs
=
ifsPtr
()
;
auto
&
ifs
=
*
ifsPtr
;
if
(
ifs
)
{
...
...
@@ -144,7 +182,7 @@ bool Foam::functionEntries::includeEntry::execute
const
fileName
fName
(
resolveFile
(
is
.
name
().
path
(),
rawName
,
parentDict
));
autoPtr
<
ISstream
>
ifsPtr
(
fileHandler
().
NewIFstream
(
fName
));
ISstream
&
ifs
=
ifsPtr
()
;
auto
&
ifs
=
*
ifsPtr
;
if
(
ifs
)
{
...
...
@@ -180,4 +218,79 @@ bool Foam::functionEntries::includeEntry::execute
}
bool
Foam
::
functionEntries
::
sincludeEntry
::
execute
(
dictionary
&
parentDict
,
Istream
&
is
)
{
const
fileName
rawName
(
is
);
const
fileName
fName
(
resolveFile
(
is
.
name
().
path
(),
rawName
,
parentDict
));
autoPtr
<
ISstream
>
ifsPtr
(
fileHandler
().
NewIFstream
(
fName
));
auto
&
ifs
=
*
ifsPtr
;
if
(
ifs
)
{
if
(
Foam
::
functionEntries
::
includeEntry
::
log
)
{
Info
<<
fName
<<
endl
;
}
// Add watch on included file
const
dictionary
&
top
=
parentDict
.
topDict
();
if
(
isA
<
regIOobject
>
(
top
))
{
regIOobject
&
rio
=
const_cast
<
regIOobject
&>
(
dynamic_cast
<
const
regIOobject
&>
(
top
)
);
rio
.
addWatch
(
fName
);
}
parentDict
.
read
(
ifs
);
}
return
true
;
// Never fails
}
bool
Foam
::
functionEntries
::
sincludeEntry
::
execute
(
const
dictionary
&
parentDict
,
primitiveEntry
&
entry
,
Istream
&
is
)
{
const
fileName
rawName
(
is
);
const
fileName
fName
(
resolveFile
(
is
.
name
().
path
(),
rawName
,
parentDict
));
autoPtr
<
ISstream
>
ifsPtr
(
fileHandler
().
NewIFstream
(
fName
));
auto
&
ifs
=
*
ifsPtr
;
if
(
ifs
)
{
if
(
Foam
::
functionEntries
::
includeEntry
::
log
)
{
Info
<<
fName
<<
endl
;
}
// Add watch on included file
const
dictionary
&
top
=
parentDict
.
topDict
();
if
(
isA
<
regIOobject
>
(
top
))
{
regIOobject
&
rio
=
const_cast
<
regIOobject
&>
(
dynamic_cast
<
const
regIOobject
&>
(
top
)
);
rio
.
addWatch
(
fName
);
}
entry
.
read
(
parentDict
,
ifs
);
}
return
true
;
// Never fails
}
// ************************************************************************* //
src/OpenFOAM/db/dictionary/functionEntries/includeEntry/includeEntry.H
View file @
14e9ef34
...
...
@@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\/ M anipulation |
\\/ M anipulation |
Copyright (C) 2018 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
...
...
@@ -25,19 +25,25 @@ Class
Foam::functionEntries::includeEntry
Description
Specify an include file when reading dictionaries, expects a
single string
to follow.
A dictionary directive for including a file, expects a single string
to follow.
An example of the \c \#include directive:
An example of the \c \#include directive
to include a file
:
\verbatim
#include "includeFile"
#include "includeFile
MustExist
"
\endverbatim
The usual expansion of environment variables and other constructs
(eg, the \c ~OpenFOAM/ expansion) is retained.
An example of the \c \#sinclude directive to conditionally include a file
when it exists.
\verbatim
#sinclude "includeFileCanBeMissing"
\endverbatim
The usual expansion of environment variables and other expansions
(eg, a leading "<case>/", "<system>/", "<etc>/", ...) are retained.
See also
fileName, string::expand()
fileName, string::expand()
, functionEntries::sincludeEntry
SourceFiles
includeEntry.C
...
...
@@ -97,7 +103,35 @@ public:
primitiveEntry
&
entry
,
Istream
&
is
);
};
/*---------------------------------------------------------------------------*\
Class sincludeEntry Declaration
\*---------------------------------------------------------------------------*/
//- A dictionary directive for conditionally including a file,
//- expects a single string to follow.
//
// The \c \#sinclude directive (and the \c \#includeIfPresent alias) behaves
// identically to the \c \#include directive, but does not generate an error
// if the file does not exist.
class
sincludeEntry
:
public
includeEntry
{
public:
//- Include file (if it exists) in a sub-dict context
static
bool
execute
(
dictionary
&
parentDict
,
Istream
&
is
);
//- Include file (if it exists) in a primitiveEntry context
static
bool
execute
(
const
dictionary
&
parentDict
,
primitiveEntry
&
entry
,
Istream
&
is
);
};
...
...
src/OpenFOAM/db/dictionary/functionEntries/includeEtcEntry/includeEtcEntry.C
View file @
14e9ef34
...
...
@@ -96,7 +96,7 @@ bool Foam::functionEntries::includeEtcEntry::execute
const
fileName
fName
(
resolveEtcFile
(
rawName
,
parentDict
));
autoPtr
<
ISstream
>
ifsPtr
(
fileHandler
().
NewIFstream
(
fName
));
ISstream
&
ifs
=
ifsPtr
()
;
auto
&
ifs
=
*
ifsPtr
;
if
(
ifs
)
{
...
...
@@ -131,7 +131,7 @@ bool Foam::functionEntries::includeEtcEntry::execute
const
fileName
fName
(
resolveEtcFile
(
rawName
,
parentDict
));
autoPtr
<
ISstream
>
ifsPtr
(
fileHandler
().
NewIFstream
(
fName
));
ISstream
&
ifs
=
ifsPtr
()
;
auto
&
ifs
=
*
ifsPtr
;
if
(
ifs
)
{
...
...
src/OpenFOAM/db/dictionary/functionEntries/includeEtcEntry/includeEtcEntry.H
View file @
14e9ef34
...
...
@@ -25,6 +25,9 @@ Class
Foam::functionEntries::includeEtcEntry
Description
A dictionary directive for including a file found using the findEtcFile()
mechanism.
Specify an etc file to include when reading dictionaries, expects a
single string to follow.
...
...
src/OpenFOAM/db/dictionary/functionEntries/includeIfPresentEntry/includeIfPresentEntry.C
deleted
100644 → 0
View file @
ca6b6cee
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ 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 3 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, see <http://www.gnu.org/licenses/>.
\*---------------------------------------------------------------------------*/
#include
"includeIfPresentEntry.H"
#include
"dictionary.H"
#include
"IFstream.H"
#include
"regIOobject.H"
#include
"addToMemberFunctionSelectionTable.H"
#include
"fileOperation.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
namespace
Foam
{
namespace
functionEntries
{
addNamedToMemberFunctionSelectionTable
(
functionEntry
,
includeIfPresentEntry
,
execute
,
dictionaryIstream
,
includeIfPresent
);
addNamedToMemberFunctionSelectionTable
(
functionEntry
,
includeIfPresentEntry
,
execute
,
primitiveEntryIstream
,
includeIfPresent
);
}
}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
bool
Foam
::
functionEntries
::
includeIfPresentEntry
::
execute
(
dictionary
&
parentDict
,
Istream
&
is
)
{
const
fileName
rawName
(
is
);
const
fileName
fName
(
resolveFile
(
is
.
name
().
path
(),
rawName
,
parentDict
));
autoPtr
<
ISstream
>
ifsPtr
(
fileHandler
().
NewIFstream
(
fName
));
ISstream
&
ifs
=
ifsPtr
();
if
(
ifs
)
{
if
(
Foam
::
functionEntries
::
includeEntry
::
log
)
{
Info
<<
fName
<<
endl
;
}
// Add watch on included file
const
dictionary
&
top
=
parentDict
.
topDict
();
if
(
isA
<
regIOobject
>
(
top
))
{
regIOobject
&
rio
=
const_cast
<
regIOobject
&>
(
dynamic_cast
<
const
regIOobject
&>
(
top
)
);
rio
.
addWatch
(
fName
);
}
parentDict
.
read
(
ifs
);
}
return
true
;
}
bool
Foam
::
functionEntries
::
includeIfPresentEntry
::
execute
(
const
dictionary
&
parentDict
,
primitiveEntry
&
entry
,
Istream
&
is
)
{
const
fileName
rawName
(
is
);
const
fileName
fName
(
resolveFile
(
is
.
name
().
path
(),
rawName
,
parentDict
));
autoPtr
<
ISstream
>
ifsPtr
(
fileHandler
().
NewIFstream
(
fName
));
ISstream
&
ifs
=
ifsPtr
();
if
(
ifs
)
{
if
(
Foam
::
functionEntries
::
includeEntry
::
log
)
{
Info
<<
fName
<<
endl
;
}
// Add watch on included file
const
dictionary
&
top
=
parentDict
.
topDict
();
if
(
isA
<
regIOobject
>
(
top
))
{
regIOobject
&
rio
=
const_cast
<
regIOobject
&>
(
dynamic_cast
<
const
regIOobject
&>
(
top
)
);
rio
.
addWatch
(
fName
);
}
entry
.
read
(
parentDict
,
ifs
);
}
return
true
;
}
// ************************************************************************* //
src/OpenFOAM/db/dictionary/functionEntries/includeIfPresentEntry/includeIfPresentEntry.H
deleted
100644 → 0
View file @
ca6b6cee
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.