Compare commits
145 Commits
develop.me
...
feature-he
| Author | SHA1 | Date | |
|---|---|---|---|
| d53b990518 | |||
| f2793f2ac8 | |||
| 013dbb8248 | |||
| e9fcd75ec4 | |||
| ac34d9fd29 | |||
| 14bece937b | |||
| 2396828a60 | |||
| 9223d238bd | |||
| 4b92bb6533 | |||
| 55c81bce1b | |||
| 1cb0b7b6c9 | |||
| 7f939f6d2d | |||
| cbb66f7bc7 | |||
| 5d7bd9c497 | |||
| 601239f59a | |||
| b25147a4f8 | |||
| 19628b9576 | |||
| b913463d95 | |||
| 3ae725592d | |||
| d6081a18f6 | |||
| e46cc77a5b | |||
| 5321c92e3d | |||
| 97cbe9c54e | |||
| 06b3e9bd0b | |||
| a6c924cf8f | |||
| e5848196ef | |||
| aa96119de2 | |||
| 11166821f1 | |||
| 77b2687503 | |||
| 52c55543b5 | |||
| 41231028da | |||
| 35615174a3 | |||
| b9fecc3898 | |||
| c78b510928 | |||
| a91587e36a | |||
| 9c4d0cdeef | |||
| 7a266b566f | |||
| 278ad6fb44 | |||
| b0d29ba8d6 | |||
| a42fa7949b | |||
| c6fc90b629 | |||
| 1d1e0c5f13 | |||
| 462d04dcd4 | |||
| d39b8a5c94 | |||
| b30d42c391 | |||
| f3998b8833 | |||
| 1fa20428a8 | |||
| ac1c41a51b | |||
| c378893bcb | |||
| d4019e497d | |||
| 8be698528a | |||
| 2d522e921f | |||
| f7fd9f8186 | |||
| 1e715d3847 | |||
| f4b50daa3c | |||
| 6d2a6a5ef9 | |||
| d6e75fb289 | |||
| 63ef1f20e8 | |||
| b9d8f99bc2 | |||
| ec2b71f324 | |||
| 52f2c42e54 | |||
| aee63e7418 | |||
| a26f7c243a | |||
| 88ff32b713 | |||
| 4c13fd8658 | |||
| bd57627955 | |||
| 19caabbd56 | |||
| d8250512f6 | |||
| 7fa861f09b | |||
| 202b448b8f | |||
| 4cc8423c94 | |||
| f96c5fafb0 | |||
| 376674d568 | |||
| b2135600a8 | |||
| 697b8a1436 | |||
| a85b0f0736 | |||
| 3ad17ddf5e | |||
| 2446f3f0c7 | |||
| f3c97d41bd | |||
| 8aa69ad976 | |||
| 9c13057b80 | |||
| 8357b7e28b | |||
| 828693bc90 | |||
| 1f5eb55eeb | |||
| 3a78203863 | |||
| 14b68a7f05 | |||
| 45f34f558b | |||
| f000a8e43d | |||
| 24b79d3469 | |||
| 821cdf6681 | |||
| eaf17337aa | |||
| 1642841868 | |||
| 891ac808de | |||
| fe7006acd7 | |||
| 0483e4826a | |||
| 6a72b0e607 | |||
| fcc8e62e47 | |||
| 631b6e5111 | |||
| 83107a192c | |||
| 233da9adaa | |||
| 954a54ea73 | |||
| 9cbf544ecd | |||
| 1bcad518c6 | |||
| a32493778a | |||
| e4c1a252c6 | |||
| c108153d06 | |||
| 53af711c6a | |||
| a68ed1371f | |||
| 6ac50a3307 | |||
| 0a421c99ab | |||
| 20e04a88f7 | |||
| 9629ae8aa9 | |||
| 7a8089e076 | |||
| 4cd1912e4c | |||
| 9eede215b0 | |||
| d37c685523 | |||
| bbef1bc289 | |||
| 615aae61d7 | |||
| fabb1c2ce5 | |||
| 9f47957df5 | |||
| 50b1c0be53 | |||
| 2e475793bc | |||
| b46b3356bc | |||
| 453efa7ca8 | |||
| 4d702d25a6 | |||
| bf0eb9bede | |||
| 1cdf7d0b00 | |||
| 053f895b2e | |||
| ec7ab996c5 | |||
| 5f580f547f | |||
| 36d1d9b79d | |||
| 9e9c90ddb2 | |||
| 45f8d847b0 | |||
| 1078234f18 | |||
| 3c4e226130 | |||
| 7021b073cf | |||
| cdd1e19f68 | |||
| 09beb5571a | |||
| 0bb0c1db74 | |||
| 535a4fccb4 | |||
| e1b04cb6a7 | |||
| b7ce6bf69d | |||
| 0a53013499 | |||
| 47f2ff618d | |||
| 47575aabf2 |
3
.gitignore
vendored
3
.gitignore
vendored
@ -11,6 +11,7 @@
|
|||||||
|
|
||||||
# File-browser settings - anywhere
|
# File-browser settings - anywhere
|
||||||
.directory
|
.directory
|
||||||
|
.DS_Store # OSX app store
|
||||||
|
|
||||||
# Backup/recovery versions - anywhere
|
# Backup/recovery versions - anywhere
|
||||||
.#*
|
.#*
|
||||||
@ -38,6 +39,8 @@ linux*Gcc*/
|
|||||||
linux*Icc*/
|
linux*Icc*/
|
||||||
solaris*Gcc*/
|
solaris*Gcc*/
|
||||||
SunOS*Gcc*/
|
SunOS*Gcc*/
|
||||||
|
darwin*Clang*/
|
||||||
|
darwin*Gcc*/
|
||||||
platforms/
|
platforms/
|
||||||
|
|
||||||
# Top-level build directories
|
# Top-level build directories
|
||||||
|
|||||||
@ -49,7 +49,7 @@
|
|||||||
|
|
||||||
<!--
|
<!--
|
||||||
Providing details of your set-up can help us identify any issues, e.g.
|
Providing details of your set-up can help us identify any issues, e.g.
|
||||||
OpenFOAM version : v2412|v2406|v2312|v2306|v2212 etc
|
OpenFOAM version : v2506|v2412|v2406|v2312|v2306 etc
|
||||||
Operating system : ubuntu|openSUSE|RedHat etc
|
Operating system : ubuntu|openSUSE|RedHat etc
|
||||||
Hardware info : any info that may help?
|
Hardware info : any info that may help?
|
||||||
Compiler : gcc|clang etc
|
Compiler : gcc|clang etc
|
||||||
|
|||||||
@ -1,13 +1,15 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
cd "${0%/*}" || exit # Run from this directory
|
||||||
|
set -- -all="${0##*/}" "$@" # Execute this instead of ./Allwmake
|
||||||
|
|
||||||
# Run from OPENFOAM top-level directory only
|
# Run from OPENFOAM top-level directory only
|
||||||
cd "${0%/*}" || exit
|
|
||||||
wmake -check-dir "$WM_PROJECT_DIR" 2>/dev/null || {
|
wmake -check-dir "$WM_PROJECT_DIR" 2>/dev/null || {
|
||||||
echo "Error (${0##*/}) : not located in \$WM_PROJECT_DIR"
|
echo "Error (${0##*/}) : not located in \$WM_PROJECT_DIR"
|
||||||
echo " Check your OpenFOAM environment and installation"
|
echo " Check your OpenFOAM environment and installation"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
if [ -f "$WM_PROJECT_DIR"/wmake/scripts/AllwmakeParseArguments ]
|
if [ -f "$WM_PROJECT_DIR"/wmake/scripts/AllwmakeParseArguments ]
|
||||||
then . "$WM_PROJECT_DIR"/wmake/scripts/AllwmakeParseArguments -no-recursion "$@" || \
|
then . "$WM_PROJECT_DIR"/wmake/scripts/AllwmakeParseArguments || \
|
||||||
echo "Argument parse error"
|
echo "Argument parse error"
|
||||||
else
|
else
|
||||||
echo "Error (${0##*/}) : WM_PROJECT_DIR appears to be incorrect"
|
echo "Error (${0##*/}) : WM_PROJECT_DIR appears to be incorrect"
|
||||||
@ -31,7 +33,7 @@ case "$FOAM_MODULE_PREFIX" in
|
|||||||
;;
|
;;
|
||||||
(*)
|
(*)
|
||||||
# Use wmake -all instead of Allwmake to allow for overrides
|
# Use wmake -all instead of Allwmake to allow for overrides
|
||||||
( cd "$WM_PROJECT_DIR/modules" 2>/dev/null && wmake -all )
|
( cd "$WM_PROJECT_DIR/modules" 2>/dev/null && wmake -all $* )
|
||||||
esac
|
esac
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|||||||
@ -1,13 +1,15 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
cd "${0%/*}" || exit # Run from this directory
|
||||||
|
set -- -all="${0##*/}" "$@" # Execute this instead of ./Allwmake
|
||||||
|
|
||||||
# Run from OPENFOAM top-level directory only
|
# Run from OPENFOAM top-level directory only
|
||||||
cd "${0%/*}" || exit
|
|
||||||
wmake -check-dir "$WM_PROJECT_DIR" 2>/dev/null || {
|
wmake -check-dir "$WM_PROJECT_DIR" 2>/dev/null || {
|
||||||
echo "Error (${0##*/}) : not located in \$WM_PROJECT_DIR"
|
echo "Error (${0##*/}) : not located in \$WM_PROJECT_DIR"
|
||||||
echo " Check your OpenFOAM environment and installation"
|
echo " Check your OpenFOAM environment and installation"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
if [ -f "$WM_PROJECT_DIR"/wmake/scripts/AllwmakeParseArguments ]
|
if [ -f "$WM_PROJECT_DIR"/wmake/scripts/AllwmakeParseArguments ]
|
||||||
then . "$WM_PROJECT_DIR"/wmake/scripts/AllwmakeParseArguments -no-recursion "$@" || \
|
then . "$WM_PROJECT_DIR"/wmake/scripts/AllwmakeParseArguments || \
|
||||||
echo "Argument parse error"
|
echo "Argument parse error"
|
||||||
else
|
else
|
||||||
echo "Error (${0##*/}) : WM_PROJECT_DIR appears to be incorrect"
|
echo "Error (${0##*/}) : WM_PROJECT_DIR appears to be incorrect"
|
||||||
@ -31,7 +33,7 @@ case "$FOAM_MODULE_PREFIX" in
|
|||||||
;;
|
;;
|
||||||
(*)
|
(*)
|
||||||
# Use wmake -all instead of Allwmake to allow for overrides
|
# Use wmake -all instead of Allwmake to allow for overrides
|
||||||
( cd "$WM_PROJECT_DIR/plugins" 2>/dev/null && wmake -all )
|
( cd "$WM_PROJECT_DIR/plugins" 2>/dev/null && wmake -all $* )
|
||||||
esac
|
esac
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|||||||
@ -1,2 +1,2 @@
|
|||||||
api=2502
|
api=2507
|
||||||
patch=0
|
patch=0
|
||||||
|
|||||||
12
README.md
12
README.md
@ -40,9 +40,9 @@ Violations of the Trademark are monitored, and will be duly prosecuted.
|
|||||||
|
|
||||||
If OpenFOAM has already been compiled on your system, simply source
|
If OpenFOAM has already been compiled on your system, simply source
|
||||||
the appropriate `etc/bashrc` or `etc/cshrc` file and get started.
|
the appropriate `etc/bashrc` or `etc/cshrc` file and get started.
|
||||||
For example, for the OpenFOAM-v2412 version:
|
For example, for the OpenFOAM-v2506 version:
|
||||||
```
|
```
|
||||||
source /installation/path/OpenFOAM-v2412/etc/bashrc
|
source /installation/path/OpenFOAM-v2506/etc/bashrc
|
||||||
```
|
```
|
||||||
|
|
||||||
## Compiling OpenFOAM
|
## Compiling OpenFOAM
|
||||||
@ -127,8 +127,8 @@ These 3rd-party sources are normally located in a directory parallel
|
|||||||
to the OpenFOAM directory. For example,
|
to the OpenFOAM directory. For example,
|
||||||
```
|
```
|
||||||
/path/parent
|
/path/parent
|
||||||
|-- OpenFOAM-v2412
|
|-- OpenFOAM-v2506
|
||||||
\-- ThirdParty-v2412
|
\-- ThirdParty-v2506
|
||||||
```
|
```
|
||||||
There are, however, many cases where this simple convention is inadequate:
|
There are, however, many cases where this simple convention is inadequate:
|
||||||
|
|
||||||
@ -156,9 +156,9 @@ when locating the ThirdParty directory with the following precedence:
|
|||||||
2. PREFIX/ThirdParty-VERSION
|
2. PREFIX/ThirdParty-VERSION
|
||||||
* this corresponds to the traditional approach
|
* this corresponds to the traditional approach
|
||||||
3. PREFIX/ThirdParty-vAPI
|
3. PREFIX/ThirdParty-vAPI
|
||||||
* allows for an updated value of VERSION, *eg*, `v2412-myCustom`,
|
* allows for an updated value of VERSION, *eg*, `v2506-myCustom`,
|
||||||
without requiring a renamed ThirdParty. The API value would still
|
without requiring a renamed ThirdParty. The API value would still
|
||||||
be `2412` and the original `ThirdParty-v2412/` would be found.
|
be `2412` and the original `ThirdParty-v2506/` would be found.
|
||||||
4. PREFIX/ThirdParty-API
|
4. PREFIX/ThirdParty-API
|
||||||
* same as the previous example, but using an unadorned API value.
|
* same as the previous example, but using an unadorned API value.
|
||||||
5. PREFIX/ThirdParty-common
|
5. PREFIX/ThirdParty-common
|
||||||
|
|||||||
@ -15,11 +15,10 @@ volVectorField U
|
|||||||
// Initialise the velocity internal field to zero
|
// Initialise the velocity internal field to zero
|
||||||
// Note: explicitly bypass evaluation of contraint patch overrides
|
// Note: explicitly bypass evaluation of contraint patch overrides
|
||||||
// (e.g. swirlFanVelocity might lookup phi,rho)
|
// (e.g. swirlFanVelocity might lookup phi,rho)
|
||||||
//U = dimensionedVector(U.dimensions(), Zero);
|
//U = Zero;
|
||||||
{
|
{
|
||||||
const dimensionedVector dt(U.dimensions(), Zero);
|
U.internalFieldRef() = Zero;
|
||||||
U.internalFieldRef() = dt;
|
U.boundaryFieldRef() = Zero;
|
||||||
U.boundaryFieldRef() = dt.value();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
surfaceScalarField phi
|
surfaceScalarField phi
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
+ MRF.DDt(U)
|
+ MRF.DDt(U)
|
||||||
+ turbulence->divDevReff(U)
|
+ turbulence->divDevReff(U)
|
||||||
==
|
==
|
||||||
parcels.SU(U, true)
|
invRhoInf*parcels.SU(U)
|
||||||
+ fvOptions(U)
|
+ fvOptions(U)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@ -39,6 +39,11 @@ dimensionedScalar rhoInfValue
|
|||||||
laminarTransport
|
laminarTransport
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const dimensionedScalar invRhoInf
|
||||||
|
(
|
||||||
|
dimless/dimDensity, scalar(1)/rhoInfValue.value()
|
||||||
|
);
|
||||||
|
|
||||||
volScalarField rhoInf
|
volScalarField rhoInf
|
||||||
(
|
(
|
||||||
IOobject
|
IOobject
|
||||||
|
|||||||
@ -1086,7 +1086,7 @@ void Foam::multiphaseMixtureThermo::solveAlphas
|
|||||||
|
|
||||||
MULES::limitSum(alphaPhiCorrs);
|
MULES::limitSum(alphaPhiCorrs);
|
||||||
|
|
||||||
rhoPhi_ = dimensionedScalar(dimensionSet(1, 0, -1, 0, 0), Zero);
|
rhoPhi_ = Zero;
|
||||||
|
|
||||||
volScalarField sumAlpha
|
volScalarField sumAlpha
|
||||||
(
|
(
|
||||||
|
|||||||
@ -63,23 +63,11 @@ Foam::DTRMParticle::DTRMParticle
|
|||||||
{
|
{
|
||||||
is >> p0_ >> p1_ >> I0_ >> I_ >> dA_ >> transmissiveId_;
|
is >> p0_ >> p1_ >> I0_ >> I_ >> dA_ >> transmissiveId_;
|
||||||
}
|
}
|
||||||
else if (!is.checkLabelSize<>() || !is.checkScalarSize<>())
|
|
||||||
{
|
|
||||||
// Non-native label or scalar size
|
|
||||||
|
|
||||||
is.beginRawRead();
|
|
||||||
|
|
||||||
readRawScalar(is, p0_.data(), vector::nComponents);
|
|
||||||
readRawScalar(is, p1_.data(), vector::nComponents);
|
|
||||||
readRawScalar(is, &I0_);
|
|
||||||
readRawScalar(is, &I_);
|
|
||||||
readRawScalar(is, &dA_);
|
|
||||||
readRawLabel(is, &transmissiveId_);
|
|
||||||
|
|
||||||
is.endRawRead();
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
// No non-native streaming
|
||||||
|
is.fatalCheckNativeSizes(FUNCTION_NAME);
|
||||||
|
|
||||||
is.read(reinterpret_cast<char*>(&p0_), sizeofFields_);
|
is.read(reinterpret_cast<char*>(&p0_), sizeofFields_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -557,7 +557,7 @@ void Foam::radiation::laserDTRM::calculate()
|
|||||||
|
|
||||||
|
|
||||||
// Reset the field
|
// Reset the field
|
||||||
Q_ == dimensionedScalar(Q_.dimensions(), Zero);
|
Q_ == Zero;
|
||||||
|
|
||||||
a_ = absorptionEmission_->a();
|
a_ = absorptionEmission_->a();
|
||||||
e_ = absorptionEmission_->e();
|
e_ = absorptionEmission_->e();
|
||||||
|
|||||||
@ -232,7 +232,7 @@
|
|||||||
surfaceScalarField mSfGradp("mSfGradp", pEqnIncomp.flux()/rAUf);
|
surfaceScalarField mSfGradp("mSfGradp", pEqnIncomp.flux()/rAUf);
|
||||||
|
|
||||||
phasei = 0;
|
phasei = 0;
|
||||||
phi = dimensionedScalar("phi", phi.dimensions(), Zero);
|
phi = Zero;
|
||||||
|
|
||||||
for (phaseModel& phase : fluid.phases())
|
for (phaseModel& phase : fluid.phases())
|
||||||
{
|
{
|
||||||
@ -261,7 +261,7 @@
|
|||||||
|
|
||||||
mSfGradp = pEqnIncomp.flux()/rAUf;
|
mSfGradp = pEqnIncomp.flux()/rAUf;
|
||||||
|
|
||||||
U = dimensionedVector("U", dimVelocity, Zero);
|
U = Zero;
|
||||||
|
|
||||||
phasei = 0;
|
phasei = 0;
|
||||||
for (phaseModel& phase : fluid.phases())
|
for (phaseModel& phase : fluid.phases())
|
||||||
|
|||||||
@ -626,7 +626,7 @@ void Foam::multiphaseMixture::solveAlphas
|
|||||||
|
|
||||||
MULES::limitSum(alphaPhiCorrs);
|
MULES::limitSum(alphaPhiCorrs);
|
||||||
|
|
||||||
rhoPhi_ = dimensionedScalar(dimMass/dimTime, Zero);
|
rhoPhi_ = Zero;
|
||||||
|
|
||||||
volScalarField sumAlpha
|
volScalarField sumAlpha
|
||||||
(
|
(
|
||||||
|
|||||||
@ -14,6 +14,6 @@ if (!(runTime.timeIndex() % 5))
|
|||||||
if (smi < -SMALL)
|
if (smi < -SMALL)
|
||||||
{
|
{
|
||||||
Info<< "Resetting Dcorr to 0" << endl;
|
Info<< "Resetting Dcorr to 0" << endl;
|
||||||
Dcorr == dimensionedVector(Dcorr.dimensions(), Zero);
|
Dcorr == Zero;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
cd "${0%/*}" || exit # Run from this directory
|
cd "${0%/*}" || exit # Run from this directory
|
||||||
. ${WM_PROJECT_DIR:?}/wmake/scripts/wmakeFunctions # Require wmake functions
|
. "${WM_PROJECT_DIR:?}"/wmake/scripts/wmakeFunctions # Need wmake functions
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,9 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
cd "${0%/*}" || exit # Run from this directory
|
cd "${0%/*}" || exit # Run from this directory
|
||||||
. ${WM_PROJECT_DIR:?}/wmake/scripts/AllwmakeParseArguments -no-recursion "$@"
|
set -- -all="${0##*/}" "$@" # Execute this instead of ./Allwmake
|
||||||
. ${WM_PROJECT_DIR:?}/wmake/scripts/wmakeFunctions # Require wmake functions
|
|
||||||
|
. "${WM_PROJECT_DIR:?}"/wmake/scripts/AllwmakeParseArguments
|
||||||
|
. "${WM_PROJECT_DIR:?}"/wmake/scripts/wmakeFunctions # Need wmake functions
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
# Environment
|
# Environment
|
||||||
|
|||||||
@ -1,3 +1,3 @@
|
|||||||
Test-CompactIOList.C
|
Test-CompactIOList.cxx
|
||||||
|
|
||||||
EXE = $(FOAM_USER_APPBIN)/Test-CompactIOList
|
EXE = $(FOAM_USER_APPBIN)/Test-CompactIOList
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011-2017 OpenFOAM Foundation
|
Copyright (C) 2011-2017 OpenFOAM Foundation
|
||||||
Copyright (C) 2020-2022 OpenCFD Ltd.
|
Copyright (C) 2020-2025 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -25,7 +25,7 @@ License
|
|||||||
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
Application
|
Application
|
||||||
testCompactIOList
|
Test-CompactIOList
|
||||||
|
|
||||||
Description
|
Description
|
||||||
Simple demonstration and test application for the CompactIOList container
|
Simple demonstration and test application for the CompactIOList container
|
||||||
@ -46,13 +46,20 @@ using namespace Foam;
|
|||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
|
argList::addBoolOption("ascii", "use ascii format");
|
||||||
|
argList::addOption("count", "number of faces");
|
||||||
|
|
||||||
#include "setRootCase.H"
|
#include "setRootCase.H"
|
||||||
#include "createTime.H"
|
#include "createTime.H"
|
||||||
|
|
||||||
IOstreamOption streamOpt(IOstreamOption::BINARY);
|
IOstreamOption streamOpt(IOstreamOption::BINARY);
|
||||||
// IOstreamOption streamOpt(IOstreamOption::ASCII);
|
|
||||||
|
|
||||||
const label size = 20000000;
|
if (args.found("ascii"))
|
||||||
|
{
|
||||||
|
streamOpt.format(IOstreamOption::ASCII);
|
||||||
|
}
|
||||||
|
|
||||||
|
const label size = args.getOrDefault<label>("count", 20000000);
|
||||||
|
|
||||||
// Old format
|
// Old format
|
||||||
// ~~~~~~~~~~
|
// ~~~~~~~~~~
|
||||||
@ -63,39 +70,50 @@ int main(int argc, char *argv[])
|
|||||||
(
|
(
|
||||||
IOobject
|
IOobject
|
||||||
(
|
(
|
||||||
"faces2",
|
"faces2-plain",
|
||||||
runTime.constant(),
|
runTime.constant(),
|
||||||
polyMesh::meshSubDir,
|
polyMesh::meshSubDir,
|
||||||
runTime,
|
runTime,
|
||||||
IOobject::NO_READ,
|
IOobject::NO_READ,
|
||||||
IOobject::NO_WRITE,
|
IOobject::NO_WRITE,
|
||||||
IOobject::NO_REGISTER
|
IOobject::NO_REGISTER
|
||||||
),
|
)
|
||||||
size
|
|
||||||
);
|
);
|
||||||
|
|
||||||
const face f(identity(4));
|
faces2.resize(size, face(identity(4)));
|
||||||
|
|
||||||
forAll(faces2, i)
|
Info<< "Plain format faceList " << faces2.objectRelPath() << nl;
|
||||||
{
|
Info<< " constructed in = " << runTime.cpuTimeIncrement()
|
||||||
faces2[i] = f;
|
<< " s" << endl;
|
||||||
}
|
|
||||||
|
|
||||||
Info<< "Constructed faceList in = "
|
|
||||||
<< runTime.cpuTimeIncrement() << " s" << nl << endl;
|
|
||||||
|
|
||||||
|
|
||||||
faces2.writeObject(streamOpt, true);
|
faces2.writeObject(streamOpt, true);
|
||||||
|
|
||||||
Info<< "Written old format faceList in = "
|
Info<< " wrote in = "
|
||||||
<< runTime.cpuTimeIncrement() << " s" << nl << endl;
|
<< runTime.cpuTimeIncrement() << " s" << endl;
|
||||||
|
|
||||||
// Read
|
// Read (size only)
|
||||||
faceIOList faces3
|
label count = faceIOList::readContentsSize
|
||||||
(
|
(
|
||||||
IOobject
|
IOobject
|
||||||
(
|
(
|
||||||
"faces2",
|
"faces2-plain",
|
||||||
|
runTime.constant(),
|
||||||
|
polyMesh::meshSubDir,
|
||||||
|
runTime,
|
||||||
|
IOobject::MUST_READ
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
Info<< " counted " << count << " faces on disk in = "
|
||||||
|
<< runTime.cpuTimeIncrement() << " s" << endl;
|
||||||
|
|
||||||
|
// Read
|
||||||
|
faceIOList faces2b
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
"faces2-plain",
|
||||||
runTime.constant(),
|
runTime.constant(),
|
||||||
polyMesh::meshSubDir,
|
polyMesh::meshSubDir,
|
||||||
runTime,
|
runTime,
|
||||||
@ -105,7 +123,7 @@ int main(int argc, char *argv[])
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
Info<< "Read old format " << faces3.size() << " faceList in = "
|
Info<< " read " << faces2b.size() << " faces in = "
|
||||||
<< runTime.cpuTimeIncrement() << " s" << nl << endl;
|
<< runTime.cpuTimeIncrement() << " s" << nl << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,44 +132,54 @@ int main(int argc, char *argv[])
|
|||||||
// ~~~~~~~~~~
|
// ~~~~~~~~~~
|
||||||
|
|
||||||
{
|
{
|
||||||
// Construct big faceList in new format
|
// Construct big faceList in compact format
|
||||||
faceCompactIOList faces2
|
faceCompactIOList faces2
|
||||||
(
|
(
|
||||||
IOobject
|
IOobject
|
||||||
(
|
(
|
||||||
"faces2",
|
"faces2-compact",
|
||||||
runTime.constant(),
|
runTime.constant(),
|
||||||
polyMesh::meshSubDir,
|
polyMesh::meshSubDir,
|
||||||
runTime,
|
runTime,
|
||||||
IOobject::NO_READ,
|
IOobject::NO_READ,
|
||||||
IOobject::NO_WRITE,
|
IOobject::NO_WRITE,
|
||||||
IOobject::NO_REGISTER
|
IOobject::NO_REGISTER
|
||||||
),
|
)
|
||||||
size
|
|
||||||
);
|
);
|
||||||
|
|
||||||
const face f(identity(4));
|
faces2.resize(size, face(identity(4)));
|
||||||
|
|
||||||
forAll(faces2, i)
|
Info<< "Compact format faceList" << faces2.objectRelPath() << nl;
|
||||||
{
|
Info<< " constructed in = "
|
||||||
faces2[i] = f;
|
<< runTime.cpuTimeIncrement() << " s" << endl;
|
||||||
}
|
|
||||||
|
|
||||||
Info<< "Constructed new format faceList in = "
|
|
||||||
<< runTime.cpuTimeIncrement() << " s" << nl << endl;
|
|
||||||
|
|
||||||
|
|
||||||
faces2.writeObject(streamOpt, true);
|
faces2.writeObject(streamOpt, true);
|
||||||
|
|
||||||
Info<< "Written new format faceList in = "
|
Info<< " wrote in = "
|
||||||
<< runTime.cpuTimeIncrement() << " s" << nl << endl;
|
<< runTime.cpuTimeIncrement() << " s" << endl;
|
||||||
|
|
||||||
// Read
|
// Read (size only)
|
||||||
faceCompactIOList faces3
|
label count = faceCompactIOList::readContentsSize
|
||||||
(
|
(
|
||||||
IOobject
|
IOobject
|
||||||
(
|
(
|
||||||
"faces2",
|
"faces2-compact",
|
||||||
|
runTime.constant(),
|
||||||
|
polyMesh::meshSubDir,
|
||||||
|
runTime,
|
||||||
|
IOobject::MUST_READ
|
||||||
|
)
|
||||||
|
);
|
||||||
|
Info<< " counted " << count << " faces on disk in = "
|
||||||
|
<< runTime.cpuTimeIncrement() << " s" << endl;
|
||||||
|
|
||||||
|
// Read
|
||||||
|
faceCompactIOList faces2b
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
"faces2-compact",
|
||||||
runTime.constant(),
|
runTime.constant(),
|
||||||
polyMesh::meshSubDir,
|
polyMesh::meshSubDir,
|
||||||
runTime,
|
runTime,
|
||||||
@ -161,7 +189,7 @@ int main(int argc, char *argv[])
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
Info<< "Read new format " << faces3.size() << " faceList in = "
|
Info<< " read " << faces2b.size() << " faces in = "
|
||||||
<< runTime.cpuTimeIncrement() << " s" << nl << endl;
|
<< runTime.cpuTimeIncrement() << " s" << nl << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: v2412 |
|
| \\ / O peration | Version: v2506 |
|
||||||
| \\ / A nd | Website: www.openfoam.com |
|
| \\ / A nd | Website: www.openfoam.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: v2412 |
|
| \\ / O peration | Version: v2506 |
|
||||||
| \\ / A nd | Website: www.openfoam.com |
|
| \\ / A nd | Website: www.openfoam.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -1,3 +1,3 @@
|
|||||||
Test-HashPtrTable.C
|
Test-HashPtrTable.cxx
|
||||||
|
|
||||||
EXE = $(FOAM_USER_APPBIN)/Test-HashPtrTable
|
EXE = $(FOAM_USER_APPBIN)/Test-HashPtrTable
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011 OpenFOAM Foundation
|
Copyright (C) 2011 OpenFOAM Foundation
|
||||||
Copyright (C) 2017-2022 OpenCFD Ltd.
|
Copyright (C) 2017-2025 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -42,33 +42,55 @@ Description
|
|||||||
|
|
||||||
using namespace Foam;
|
using namespace Foam;
|
||||||
|
|
||||||
class Scalar
|
bool verbosity = true;
|
||||||
|
|
||||||
|
// Gratuitous class inheritance
|
||||||
|
template<class T>
|
||||||
|
class BoxedType
|
||||||
{
|
{
|
||||||
scalar data_;
|
T data_;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
static bool verbose;
|
static bool verbose;
|
||||||
|
|
||||||
constexpr Scalar() noexcept : data_(0) {}
|
constexpr BoxedType() noexcept : data_(0) {}
|
||||||
Scalar(scalar val) noexcept : data_(val) {}
|
BoxedType(T val) noexcept : data_(val) {}
|
||||||
|
|
||||||
|
~BoxedType()
|
||||||
|
{
|
||||||
|
if (verbosity) Info<< " [delete BoxedType: " << value() << ']' << nl;
|
||||||
|
}
|
||||||
|
|
||||||
|
T value() const noexcept { return data_; }
|
||||||
|
T& value() noexcept { return data_; }
|
||||||
|
|
||||||
|
auto clone() const { return autoPtr<BoxedType<T>>::New(*this); }
|
||||||
|
};
|
||||||
|
|
||||||
|
template<class T> Ostream& operator<<(Ostream& os, const BoxedType<T>& item)
|
||||||
|
{
|
||||||
|
return (os << " -> " << item.value());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class Scalar : public BoxedType<scalar>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
using BoxedType<scalar>::BoxedType;
|
||||||
|
|
||||||
~Scalar()
|
~Scalar()
|
||||||
{
|
{
|
||||||
if (verbose) Info<< "delete Scalar: " << data_ << endl;
|
if (verbosity) Info<< "delete Scalar: " << value() << nl;
|
||||||
}
|
|
||||||
|
|
||||||
const scalar& value() const noexcept { return data_; }
|
|
||||||
scalar& value() noexcept { return data_; }
|
|
||||||
|
|
||||||
friend Ostream& operator<<(Ostream& os, const Scalar& item)
|
|
||||||
{
|
|
||||||
os << item.value();
|
|
||||||
return os;
|
|
||||||
}
|
}
|
||||||
|
auto clone() const { return autoPtr<Scalar>::New(*this); }
|
||||||
};
|
};
|
||||||
|
|
||||||
bool Scalar::verbose = true;
|
Ostream& operator<<(Ostream& os, const Scalar& item)
|
||||||
|
{
|
||||||
|
return (os << item.value());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
template<class T>
|
template<class T>
|
||||||
@ -1,3 +1,3 @@
|
|||||||
Test-HashTable2.C
|
Test-HashTable2.cxx
|
||||||
|
|
||||||
EXE = $(FOAM_USER_APPBIN)/Test-HashTable2
|
EXE = $(FOAM_USER_APPBIN)/Test-HashTable2
|
||||||
|
|||||||
@ -1,3 +1,3 @@
|
|||||||
Test-HashTable3.C
|
Test-HashTable3.cxx
|
||||||
|
|
||||||
EXE = $(FOAM_USER_APPBIN)/Test-HashTable3
|
EXE = $(FOAM_USER_APPBIN)/Test-HashTable3
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: v2412 |
|
| \\ / O peration | Version: v2506 |
|
||||||
| \\ / A nd | Website: www.openfoam.com |
|
| \\ / A nd | Website: www.openfoam.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -89,12 +89,6 @@ Ostream& printView(Ostream& os, std::string_view s)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Ostream& printView(Ostream& os, stdFoam::span<char> s)
|
|
||||||
{
|
|
||||||
return printView(os, s.begin(), s.end());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Ostream& printView(Ostream& os, const UList<char>& list)
|
Ostream& printView(Ostream& os, const UList<char>& list)
|
||||||
{
|
{
|
||||||
return printView(os, list.begin(), list.end());
|
return printView(os, list.begin(), list.end());
|
||||||
|
|||||||
@ -1,3 +1,3 @@
|
|||||||
Test-IOobjectList.C
|
Test-IOobjectList.cxx
|
||||||
|
|
||||||
EXE = $(FOAM_USER_APPBIN)/Test-IOobjectList
|
EXE = $(FOAM_USER_APPBIN)/Test-IOobjectList
|
||||||
|
|||||||
@ -1,3 +1,3 @@
|
|||||||
Test-ISLList.C
|
Test-ISLList.cxx
|
||||||
|
|
||||||
EXE = $(FOAM_USER_APPBIN)/Test-ISLList
|
EXE = $(FOAM_USER_APPBIN)/Test-ISLList
|
||||||
|
|||||||
@ -1,3 +1,3 @@
|
|||||||
Test-IStringStream.C
|
Test-IStringStream.cxx
|
||||||
|
|
||||||
EXE = $(FOAM_USER_APPBIN)/Test-IStringStream
|
EXE = $(FOAM_USER_APPBIN)/Test-IStringStream
|
||||||
|
|||||||
@ -106,7 +106,7 @@ void printMyString(const UList<string>& lst)
|
|||||||
{
|
{
|
||||||
MyStrings slist2(lst);
|
MyStrings slist2(lst);
|
||||||
|
|
||||||
Info<<slist2 << nl;
|
Info<< slist2 << nl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -204,16 +204,6 @@ int main(int argc, char *argv[])
|
|||||||
Info<<" " << *iter;
|
Info<<" " << *iter;
|
||||||
}
|
}
|
||||||
Info<< nl;
|
Info<< nl;
|
||||||
|
|
||||||
Info<< "data:" << Foam::name(ident.cdata())
|
|
||||||
<< " size:" << ident.size() << nl;
|
|
||||||
|
|
||||||
|
|
||||||
Info<< "resize_unsafe(10)" << nl;
|
|
||||||
ident.resize_unsafe(10);
|
|
||||||
|
|
||||||
Info<< "data:" << Foam::name(ident.cdata())
|
|
||||||
<< " size:" << ident.size() << nl;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (false)
|
if (false)
|
||||||
@ -370,7 +360,7 @@ int main(int argc, char *argv[])
|
|||||||
auto shrtList = ListOps::create<short>
|
auto shrtList = ListOps::create<short>
|
||||||
(
|
(
|
||||||
longLabelList,
|
longLabelList,
|
||||||
[](const label& val){ return val; }
|
[](label val){ return val; }
|
||||||
);
|
);
|
||||||
|
|
||||||
printListOutputType<short>("short") << nl;
|
printListOutputType<short>("short") << nl;
|
||||||
@ -567,7 +557,7 @@ int main(int argc, char *argv[])
|
|||||||
auto scalars = ListOps::create<scalar>
|
auto scalars = ListOps::create<scalar>
|
||||||
(
|
(
|
||||||
labels,
|
labels,
|
||||||
[](const label& val){ return scalar(1.5*val); }
|
[](label val){ return scalar(1.5*val); }
|
||||||
);
|
);
|
||||||
Info<< "scalars: " << flatOutput(scalars) << endl;
|
Info<< "scalars: " << flatOutput(scalars) << endl;
|
||||||
}
|
}
|
||||||
@ -576,7 +566,7 @@ int main(int argc, char *argv[])
|
|||||||
auto vectors = ListOps::create<vector>
|
auto vectors = ListOps::create<vector>
|
||||||
(
|
(
|
||||||
labels,
|
labels,
|
||||||
[](const label& val){ return vector(1.2*val, -1.2*val, 0); }
|
[](label val){ return vector(1.2*val, -1.2*val, 0); }
|
||||||
);
|
);
|
||||||
Info<< "vectors: " << flatOutput(vectors) << endl;
|
Info<< "vectors: " << flatOutput(vectors) << endl;
|
||||||
}
|
}
|
||||||
@ -585,7 +575,7 @@ int main(int argc, char *argv[])
|
|||||||
auto longs = ListOps::create<long>
|
auto longs = ListOps::create<long>
|
||||||
(
|
(
|
||||||
labels,
|
labels,
|
||||||
[](const label& val){ return val; }
|
[](label val){ return val; }
|
||||||
);
|
);
|
||||||
Info<< "longs: " << flatOutput(longs) << endl;
|
Info<< "longs: " << flatOutput(longs) << endl;
|
||||||
}
|
}
|
||||||
@ -603,7 +593,7 @@ int main(int argc, char *argv[])
|
|||||||
(
|
(
|
||||||
labelRange().cbegin(),
|
labelRange().cbegin(),
|
||||||
labelRange(15).cend(),
|
labelRange(15).cend(),
|
||||||
[](const label& val){ return scalar(-1.125*val); }
|
[](label val){ return scalar(-1.125*val); }
|
||||||
);
|
);
|
||||||
Info<< "scalars: " << flatOutput(scalars) << endl;
|
Info<< "scalars: " << flatOutput(scalars) << endl;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -89,12 +89,6 @@ Ostream& printView(Ostream& os, std::string_view s)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Ostream& printView(Ostream& os, stdFoam::span<char> s)
|
|
||||||
{
|
|
||||||
return printView(os, s.begin(), s.end());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Ostream& printView(Ostream& os, const UList<char>& list)
|
Ostream& printView(Ostream& os, const UList<char>& list)
|
||||||
{
|
{
|
||||||
return printView(os, list.begin(), list.end());
|
return printView(os, list.begin(), list.end());
|
||||||
@ -189,12 +183,25 @@ int main(int argc, char *argv[])
|
|||||||
printInfo(obuf);
|
printInfo(obuf);
|
||||||
|
|
||||||
// Overwrite at some position
|
// Overwrite at some position
|
||||||
obuf.stdStream().rdbuf()->pubseekpos(0.60 * obuf.size());
|
if (auto i = obuf.view().find("item5"); i != std::string::npos)
|
||||||
obuf << "<" << nl << "OVERWRITE" << nl;
|
{
|
||||||
|
// obuf.seek(0.60 * obuf.size());
|
||||||
|
obuf.seek(i);
|
||||||
|
obuf << "<OVERWRITE>" << nl;
|
||||||
|
}
|
||||||
|
|
||||||
Info<<"after overwrite" << nl;
|
Info<<"after overwrite" << nl;
|
||||||
printInfo(obuf);
|
printInfo(obuf);
|
||||||
|
|
||||||
|
// Truncate
|
||||||
|
{
|
||||||
|
constexpr float fraction = 0.90;
|
||||||
|
Info<<"truncated at " << (100*fraction) << "% ["
|
||||||
|
<< int(fraction*obuf.size()) << " chars]" << nl;
|
||||||
|
obuf.seek(fraction*obuf.size());
|
||||||
|
printInfo(obuf);
|
||||||
|
}
|
||||||
|
|
||||||
Info<< "transfer contents to a List or ICharStream" << nl;
|
Info<< "transfer contents to a List or ICharStream" << nl;
|
||||||
|
|
||||||
// Reclaim data storage from OCharStream -> ICharStream
|
// Reclaim data storage from OCharStream -> ICharStream
|
||||||
|
|||||||
3
applications/test/OCharStream2/Make/files
Normal file
3
applications/test/OCharStream2/Make/files
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
Test-OCharStream2.cxx
|
||||||
|
|
||||||
|
EXE = $(FOAM_USER_APPBIN)/Test-OCharStream2
|
||||||
2
applications/test/OCharStream2/Make/options
Normal file
2
applications/test/OCharStream2/Make/options
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
/* EXE_INC = */
|
||||||
|
/* EXE_LIBS = */
|
||||||
473
applications/test/OCharStream2/Test-OCharStream2.cxx
Normal file
473
applications/test/OCharStream2/Test-OCharStream2.cxx
Normal file
@ -0,0 +1,473 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | www.openfoam.com
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
Copyright (C) 2025 OpenCFD Ltd.
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
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/>.
|
||||||
|
|
||||||
|
Description
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "SpanStream.H"
|
||||||
|
#include "wordList.H"
|
||||||
|
#include "IOstreams.H"
|
||||||
|
#include "argList.H"
|
||||||
|
|
||||||
|
#include <charconv>
|
||||||
|
#include <cctype>
|
||||||
|
#include <cstdio>
|
||||||
|
#include <limits>
|
||||||
|
#include <iomanip>
|
||||||
|
|
||||||
|
using namespace Foam;
|
||||||
|
|
||||||
|
Ostream& printString(Ostream& os, const char* first, const char* last)
|
||||||
|
{
|
||||||
|
os << '"';
|
||||||
|
for (; first != last; (void)++first)
|
||||||
|
{
|
||||||
|
os << *first;
|
||||||
|
}
|
||||||
|
os << '"';
|
||||||
|
|
||||||
|
return os;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Ostream& printView(Ostream& os, const char* first, const char* last)
|
||||||
|
{
|
||||||
|
char buf[4];
|
||||||
|
os << label(last-first) << '(';
|
||||||
|
|
||||||
|
for (; first != last; (void)++first)
|
||||||
|
{
|
||||||
|
const char c = *first;
|
||||||
|
|
||||||
|
if (isprint(c))
|
||||||
|
{
|
||||||
|
os << c;
|
||||||
|
}
|
||||||
|
else if (c == '\t')
|
||||||
|
{
|
||||||
|
os << "\\t";
|
||||||
|
}
|
||||||
|
else if (c == '\n')
|
||||||
|
{
|
||||||
|
os << "\\n";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
::snprintf(buf, 4, "%02X", c);
|
||||||
|
os << "\\x" << buf;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
os << ')';
|
||||||
|
|
||||||
|
return os;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Ostream& printView(Ostream& os, std::string_view s)
|
||||||
|
{
|
||||||
|
return printView(os, s.begin(), s.end());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Ostream& printView(Ostream& os, const UList<char>& list)
|
||||||
|
{
|
||||||
|
return printView(os, list.begin(), list.end());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Ostream& writeList(Ostream& os, const UList<char>& list)
|
||||||
|
{
|
||||||
|
return printView(os, list);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Ostream& toString(Ostream& os, const UList<char>& list)
|
||||||
|
{
|
||||||
|
return printString(os, list.begin(), list.end());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Ostream& toString(Ostream& os, std::string_view s)
|
||||||
|
{
|
||||||
|
return printString(os, s.begin(), s.end());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class BufType>
|
||||||
|
void printInfo(const BufType& buf)
|
||||||
|
{
|
||||||
|
Info<< nl << "=========================" << endl;
|
||||||
|
buf.print(Info);
|
||||||
|
Info<< "addr: " << Foam::name(buf.view().data()) << nl;
|
||||||
|
toString(Info, buf.view());
|
||||||
|
Info<< nl << "=========================" << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Return a left-padded integer as "word"
|
||||||
|
template<class IntType>
|
||||||
|
std::string leftpadded(IntType val, char fillch = ' ')
|
||||||
|
{
|
||||||
|
std::string buf;
|
||||||
|
buf.resize((std::numeric_limits<IntType>::digits10+1), fillch);
|
||||||
|
|
||||||
|
auto first = (buf.data());
|
||||||
|
auto last = (buf.data() + buf.size());
|
||||||
|
|
||||||
|
auto result = std::to_chars(first, last, val);
|
||||||
|
|
||||||
|
if (result.ec == std::errc{})
|
||||||
|
{
|
||||||
|
auto* iter = result.ptr;
|
||||||
|
int count = std::distance(iter, last);
|
||||||
|
|
||||||
|
std::cout << "did not fill: " << count << " chars\n";
|
||||||
|
|
||||||
|
// With two spaces before comments
|
||||||
|
if (count > 0) { *iter++ = ' '; --count; }
|
||||||
|
if (count > 0) { *iter++ = ' '; --count; }
|
||||||
|
for (char c = (count >= 2 ? '/' : ' '); count > 0; --count)
|
||||||
|
{
|
||||||
|
*iter++ = c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class IntType>
|
||||||
|
void leftpad(std::ostream& os, IntType val, char fillch = ' ')
|
||||||
|
{
|
||||||
|
// set fill char and width
|
||||||
|
os.setf(std::ios_base::left, std::ios_base::adjustfield);
|
||||||
|
fillch = os.fill(fillch);
|
||||||
|
os.width(std::numeric_limits<IntType>::digits10+1);
|
||||||
|
os << val;
|
||||||
|
// restore fill char
|
||||||
|
os.fill(fillch);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class IntType>
|
||||||
|
void rightpad(std::ostream& os, IntType val, char fillch = ' ')
|
||||||
|
{
|
||||||
|
// set fill char and width
|
||||||
|
os.setf(std::ios_base::right, std::ios_base::adjustfield);
|
||||||
|
fillch = os.fill(fillch);
|
||||||
|
os.width(std::numeric_limits<IntType>::digits10+1);
|
||||||
|
os << val;
|
||||||
|
// restore fill char
|
||||||
|
os.fill(fillch);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Left-padded value with trailing comment slashes
|
||||||
|
template<class IntType>
|
||||||
|
void leftpad(ocharstream& os, IntType val)
|
||||||
|
{
|
||||||
|
const auto beg = os.tellp();
|
||||||
|
os << val;
|
||||||
|
int count = (std::numeric_limits<IntType>::digits10+1) - (os.tellp() - beg);
|
||||||
|
|
||||||
|
// With two spaces before comments
|
||||||
|
if (count > 0) { os << ' '; --count; }
|
||||||
|
if (count > 0) { os << ' '; --count; }
|
||||||
|
for (const char c = (count >= 2 ? '/' : ' '); count > 0; --count)
|
||||||
|
{
|
||||||
|
os << c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
// Main program:
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
argList::noBanner();
|
||||||
|
argList::noParallel();
|
||||||
|
argList::addBoolOption("fake-zerosize", "Fake overwriting with zero data");
|
||||||
|
argList::addBoolOption("dict-format", "Format as dictionary entry");
|
||||||
|
|
||||||
|
#include "setRootCase.H"
|
||||||
|
|
||||||
|
const bool optFakeZerosize = args.found("fake-zerosize");
|
||||||
|
const bool isDictFormat = args.found("dict-format");
|
||||||
|
|
||||||
|
// const constexpr int width = (std::numeric_limits<label>::digits10+1);
|
||||||
|
|
||||||
|
// experiment with to_chars instead of streaming
|
||||||
|
{
|
||||||
|
// Some value
|
||||||
|
label val(1234);
|
||||||
|
|
||||||
|
auto fixed = leftpadded(val);
|
||||||
|
Info<< "leftpadded " << val << " : " << fixed << nl;
|
||||||
|
}
|
||||||
|
|
||||||
|
ocharstream labelbuf;
|
||||||
|
labelbuf.reserve_exact(32);
|
||||||
|
|
||||||
|
// Some value
|
||||||
|
labelbuf.rewind();
|
||||||
|
rightpad(labelbuf, label(10));
|
||||||
|
|
||||||
|
printInfo(labelbuf);
|
||||||
|
|
||||||
|
OCharStream obuf;
|
||||||
|
obuf.reserve_exact(48);
|
||||||
|
|
||||||
|
printInfo(obuf);
|
||||||
|
|
||||||
|
obuf.push_back('>');
|
||||||
|
obuf.append(" string_view ");
|
||||||
|
obuf.push_back('<');
|
||||||
|
printInfo(obuf);
|
||||||
|
|
||||||
|
obuf.pop_back(8);
|
||||||
|
printInfo(obuf);
|
||||||
|
|
||||||
|
obuf.pop_back(100);
|
||||||
|
printInfo(obuf);
|
||||||
|
|
||||||
|
|
||||||
|
// Fill with some content
|
||||||
|
for (int i = 0; i < 26; ++i)
|
||||||
|
{
|
||||||
|
obuf<< char('A' + i);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Change letter 'O' to '_'
|
||||||
|
if (auto i = obuf.view().find('O'); i != std::string::npos)
|
||||||
|
{
|
||||||
|
obuf.overwrite(i, '_');
|
||||||
|
}
|
||||||
|
|
||||||
|
// append and push_back some content
|
||||||
|
obuf.append(5, '<');
|
||||||
|
obuf.push_back('#');
|
||||||
|
obuf.append(5, '>');
|
||||||
|
|
||||||
|
printInfo(obuf);
|
||||||
|
|
||||||
|
obuf.pop_back(8);
|
||||||
|
printInfo(obuf);
|
||||||
|
|
||||||
|
// Slightly silly test
|
||||||
|
{
|
||||||
|
const auto list = obuf.list();
|
||||||
|
Info<< "list content:" << list << nl;
|
||||||
|
Info<< "view content:" << nl << list.view() << nl;
|
||||||
|
}
|
||||||
|
|
||||||
|
obuf.overwrite(4, labelbuf.view());
|
||||||
|
printInfo(obuf);
|
||||||
|
|
||||||
|
obuf.overwrite(20, "####");
|
||||||
|
printInfo(obuf);
|
||||||
|
|
||||||
|
Info<< "operation Ignored..." << nl;
|
||||||
|
obuf.overwrite(45, "????");
|
||||||
|
printInfo(obuf);
|
||||||
|
|
||||||
|
// Update with new value
|
||||||
|
{
|
||||||
|
labelbuf.rewind();
|
||||||
|
rightpad(labelbuf, label(200), '.');
|
||||||
|
obuf.overwrite(4, labelbuf.view());
|
||||||
|
|
||||||
|
printInfo(obuf);
|
||||||
|
}
|
||||||
|
|
||||||
|
// With yet another value (non-fixed width)
|
||||||
|
{
|
||||||
|
labelbuf.rewind();
|
||||||
|
labelbuf << label(15);
|
||||||
|
obuf.overwrite(4, labelbuf.view());
|
||||||
|
|
||||||
|
printInfo(obuf);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Slightly harder test
|
||||||
|
{
|
||||||
|
std::string chars(26, '?');
|
||||||
|
|
||||||
|
for (int i = 0; i < 26; ++i)
|
||||||
|
{
|
||||||
|
chars[i] = char('A' + i);
|
||||||
|
}
|
||||||
|
|
||||||
|
auto& os = obuf;
|
||||||
|
os.rewind();
|
||||||
|
|
||||||
|
const word procName("processor0");
|
||||||
|
|
||||||
|
// Write as primitiveEntry or commented content
|
||||||
|
// // constexpr bool isDictFormat = true;
|
||||||
|
|
||||||
|
// if constexpr (isDictFormat)
|
||||||
|
if (isDictFormat)
|
||||||
|
{
|
||||||
|
// Like writeKeyword() with compoundToken
|
||||||
|
os << nl << procName << ' ' << word("List<char>") << nl;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Human-readable comments
|
||||||
|
os << nl << "// " << procName << nl;
|
||||||
|
}
|
||||||
|
|
||||||
|
// This is the code we want to have, but assume we don't know
|
||||||
|
// the size or data beforehand.
|
||||||
|
//
|
||||||
|
// if (str && len > 0)
|
||||||
|
// {
|
||||||
|
// // Special treatment for char data (binary I/O only)
|
||||||
|
// const auto oldFmt = os.format(IOstreamOption::BINARY);
|
||||||
|
//
|
||||||
|
// os << label(len) << nl;
|
||||||
|
// os.write(str, len);
|
||||||
|
// os << nl;
|
||||||
|
//
|
||||||
|
// os.format(oldFmt);
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// os << label(0) << nl;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// Position before writing the label
|
||||||
|
const auto labelBegin = os.tellp();
|
||||||
|
|
||||||
|
// Replace: os << label(len) << nl;
|
||||||
|
// with a fixed-length version
|
||||||
|
{
|
||||||
|
labelbuf.rewind();
|
||||||
|
rightpad(labelbuf, 0);
|
||||||
|
|
||||||
|
os.append(labelbuf.view());
|
||||||
|
os << nl;
|
||||||
|
}
|
||||||
|
|
||||||
|
constexpr bool testUnknown = true;
|
||||||
|
|
||||||
|
label dataCount = 0;
|
||||||
|
|
||||||
|
if constexpr (testUnknown)
|
||||||
|
{
|
||||||
|
// Pretend we don't know the number of characters a priori
|
||||||
|
|
||||||
|
const auto oldFmt = os.format(IOstreamOption::BINARY);
|
||||||
|
|
||||||
|
const auto lineNumber = os.lineNumber();
|
||||||
|
|
||||||
|
// count is unknown but irrelevant for serial
|
||||||
|
os.beginRawWrite(0);
|
||||||
|
|
||||||
|
// Position before raw binary data
|
||||||
|
const auto dataBegin = os.tellp();
|
||||||
|
|
||||||
|
// Some type of output, streaming etc
|
||||||
|
os.writeRaw(chars.data(), chars.size());
|
||||||
|
|
||||||
|
// How many chars of binary data written?
|
||||||
|
dataCount = (os.tellp() - dataBegin);
|
||||||
|
|
||||||
|
os.endRawWrite();
|
||||||
|
os.lineNumber() = lineNumber;
|
||||||
|
os << nl;
|
||||||
|
|
||||||
|
os.format(oldFmt);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// If we had all data collected a priori
|
||||||
|
|
||||||
|
dataCount = chars.size();
|
||||||
|
|
||||||
|
const auto oldFmt = os.format(IOstreamOption::BINARY);
|
||||||
|
|
||||||
|
if (dataCount > 0)
|
||||||
|
{
|
||||||
|
os.write(chars.data(), chars.size());
|
||||||
|
os << nl;
|
||||||
|
}
|
||||||
|
os.format(oldFmt);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (optFakeZerosize)
|
||||||
|
{
|
||||||
|
dataCount = 0; // fake zero-size
|
||||||
|
}
|
||||||
|
|
||||||
|
printInfo(os);
|
||||||
|
|
||||||
|
// Update the data count with the correct value
|
||||||
|
|
||||||
|
if (dataCount > 0)
|
||||||
|
{
|
||||||
|
labelbuf.rewind();
|
||||||
|
leftpad(labelbuf, label(dataCount));
|
||||||
|
|
||||||
|
os.overwrite(labelBegin, labelbuf.view());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
os.seek(int64_t(labelBegin)-1);
|
||||||
|
|
||||||
|
// if constexpr (isDictFormat)
|
||||||
|
if (isDictFormat)
|
||||||
|
{
|
||||||
|
os << ' ' << label(0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
os << nl << label(0) << nl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// if constexpr (isDictFormat)
|
||||||
|
if (isDictFormat)
|
||||||
|
{
|
||||||
|
os.endEntry();
|
||||||
|
}
|
||||||
|
|
||||||
|
printInfo(os);
|
||||||
|
|
||||||
|
Info<< "view: " << os.view(4, 8) << nl;
|
||||||
|
Info<< "view: " << os.view(32) << nl;
|
||||||
|
// Ignores out-of-range
|
||||||
|
Info<< "view: " << os.view(1000) << nl;
|
||||||
|
}
|
||||||
|
|
||||||
|
Info<< "\nEnd\n" << endl;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -5,7 +5,7 @@
|
|||||||
\\ / A nd | www.openfoam.com
|
\\ / A nd | www.openfoam.com
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2017-2023 OpenCFD Ltd.
|
Copyright (C) 2017-2025 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -65,7 +65,6 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
OCountStream cnt;
|
OCountStream cnt;
|
||||||
OCharStream cstr;
|
OCharStream cstr;
|
||||||
OStringStream sstr;
|
|
||||||
ocountstream plain;
|
ocountstream plain;
|
||||||
|
|
||||||
generateOutput(cstr);
|
generateOutput(cstr);
|
||||||
@ -77,7 +76,6 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
Info<< "counter state: " << (cnt.stdStream().rdstate()) << nl
|
Info<< "counter state: " << (cnt.stdStream().rdstate()) << nl
|
||||||
<< "via char-stream: " << label(cstr.view().size()) << " chars" << nl
|
<< "via char-stream: " << label(cstr.view().size()) << " chars" << nl
|
||||||
<< "via string-stream: " << label(sstr.count()) << " chars" << nl
|
|
||||||
<< "via ocountstream: " << plain.count() << " chars" << endl;
|
<< "via ocountstream: " << plain.count() << " chars" << endl;
|
||||||
|
|
||||||
fileName outputName;
|
fileName outputName;
|
||||||
|
|||||||
@ -1,3 +1,3 @@
|
|||||||
Test-OStringStream.C
|
Test-OStringStream.cxx
|
||||||
|
|
||||||
EXE = $(FOAM_USER_APPBIN)/Test-OStringStream
|
EXE = $(FOAM_USER_APPBIN)/Test-OStringStream
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: v2412 |
|
| \\ / O peration | Version: v2506 |
|
||||||
| \\ / A nd | Website: www.openfoam.com |
|
| \\ / A nd | Website: www.openfoam.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: v2412 |
|
| \\ / O peration | Version: v2506 |
|
||||||
| \\ / A nd | Website: www.openfoam.com |
|
| \\ / A nd | Website: www.openfoam.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: v2412 |
|
| \\ / O peration | Version: v2506 |
|
||||||
| \\ / A nd | Website: www.openfoam.com |
|
| \\ / A nd | Website: www.openfoam.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: v2412 |
|
| \\ / O peration | Version: v2506 |
|
||||||
| \\ / A nd | Website: www.openfoam.com |
|
| \\ / A nd | Website: www.openfoam.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -1,3 +1,3 @@
|
|||||||
Test-PackedList.C
|
Test-PackedList.cxx
|
||||||
|
|
||||||
EXE = $(FOAM_USER_APPBIN)/Test-PackedList
|
EXE = $(FOAM_USER_APPBIN)/Test-PackedList
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: v2412 |
|
| \\ / O peration | Version: v2506 |
|
||||||
| \\ / A nd | Website: www.openfoam.com |
|
| \\ / A nd | Website: www.openfoam.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -1,3 +1,3 @@
|
|||||||
Test-PtrDictionary1.C
|
Test-PtrDictionary1.cxx
|
||||||
|
|
||||||
EXE = $(FOAM_USER_APPBIN)/Test-PtrDictionary1
|
EXE = $(FOAM_USER_APPBIN)/Test-PtrDictionary1
|
||||||
|
|||||||
@ -42,6 +42,8 @@ Description
|
|||||||
|
|
||||||
using namespace Foam;
|
using namespace Foam;
|
||||||
|
|
||||||
|
bool verbosity = true;
|
||||||
|
|
||||||
class ent
|
class ent
|
||||||
:
|
:
|
||||||
public Dictionary<ent>::link
|
public Dictionary<ent>::link
|
||||||
@ -73,14 +75,12 @@ class Scalar
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
static bool verbose;
|
|
||||||
|
|
||||||
constexpr Scalar() noexcept : data_(0) {}
|
constexpr Scalar() noexcept : data_(0) {}
|
||||||
Scalar(scalar val) noexcept : data_(val) {}
|
Scalar(scalar val) noexcept : data_(val) {}
|
||||||
|
|
||||||
~Scalar()
|
~Scalar()
|
||||||
{
|
{
|
||||||
if (verbose) Info<< "delete Scalar: " << data_ << endl;
|
if (verbosity) Info<< "delete Scalar: " << data_ << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
scalar value() const noexcept { return data_; }
|
scalar value() const noexcept { return data_; }
|
||||||
@ -93,8 +93,6 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
bool Scalar::verbose = true;
|
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
// Main program:
|
// Main program:
|
||||||
@ -1,3 +1,3 @@
|
|||||||
Test-PtrList.C
|
Test-PtrList.cxx
|
||||||
|
|
||||||
EXE = $(FOAM_USER_APPBIN)/Test-PtrList
|
EXE = $(FOAM_USER_APPBIN)/Test-PtrList
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011 OpenFOAM Foundation
|
Copyright (C) 2011 OpenFOAM Foundation
|
||||||
Copyright (C) 2018-2023 OpenCFD Ltd.
|
Copyright (C) 2018-2025 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -41,35 +41,85 @@ Description
|
|||||||
|
|
||||||
using namespace Foam;
|
using namespace Foam;
|
||||||
|
|
||||||
class Scalar
|
bool verbosity = true;
|
||||||
|
|
||||||
|
// Gratuitous class inheritance
|
||||||
|
template<class T>
|
||||||
|
class BoxedType
|
||||||
{
|
{
|
||||||
scalar data_;
|
T data_;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
static bool verbose;
|
static bool verbose;
|
||||||
|
|
||||||
constexpr Scalar() noexcept : data_(0) {}
|
constexpr BoxedType() noexcept : data_(0) {}
|
||||||
Scalar(scalar val) noexcept : data_(val) {}
|
BoxedType(T val) noexcept : data_(val) {}
|
||||||
|
|
||||||
|
~BoxedType()
|
||||||
|
{
|
||||||
|
if (verbosity) Info<< " [delete BoxedType: " << value() << ']' << nl;
|
||||||
|
}
|
||||||
|
|
||||||
|
T value() const noexcept { return data_; }
|
||||||
|
T& value() noexcept { return data_; }
|
||||||
|
|
||||||
|
auto clone() const { return autoPtr<BoxedType<T>>::New(*this); }
|
||||||
|
};
|
||||||
|
|
||||||
|
template<class T> Ostream& operator<<(Ostream& os, const BoxedType<T>& item)
|
||||||
|
{
|
||||||
|
return (os << " -> " << item.value());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class Scalar : public BoxedType<scalar>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
using BoxedType<scalar>::BoxedType;
|
||||||
|
|
||||||
~Scalar()
|
~Scalar()
|
||||||
{
|
{
|
||||||
if (verbose) Info<< "delete Scalar: " << data_ << endl;
|
if (verbosity) Info<< "delete Scalar: " << value() << nl;
|
||||||
}
|
|
||||||
|
|
||||||
scalar value() const noexcept { return data_; }
|
|
||||||
scalar& value() noexcept { return data_; }
|
|
||||||
|
|
||||||
autoPtr<Scalar> clone() const { return autoPtr<Scalar>::New(data_); }
|
|
||||||
|
|
||||||
friend Ostream& operator<<(Ostream& os, const Scalar& item)
|
|
||||||
{
|
|
||||||
os << item.value();
|
|
||||||
return os;
|
|
||||||
}
|
}
|
||||||
|
auto clone() const { return autoPtr<Scalar>::New(*this); }
|
||||||
};
|
};
|
||||||
|
|
||||||
bool Scalar::verbose = true;
|
Ostream& operator<<(Ostream& os, const Scalar& item)
|
||||||
|
{
|
||||||
|
return (os << item.value());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class Integer : public BoxedType<label>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
using BoxedType<label>::BoxedType;
|
||||||
|
|
||||||
|
~Integer()
|
||||||
|
{
|
||||||
|
if (verbosity) Info<< "delete Integer: " << value() << nl;
|
||||||
|
}
|
||||||
|
auto clone() const { return autoPtr<Integer>::New(*this); }
|
||||||
|
};
|
||||||
|
|
||||||
|
Ostream& operator<<(Ostream& os, const Integer& item)
|
||||||
|
{
|
||||||
|
return (os << item.value());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//- Permit up-casting to the base class (eg, fvMesh to polyMesh).
|
||||||
|
// Usually only for holding (const) references.
|
||||||
|
// Exercise caution with the
|
||||||
|
template<class Base, class Derived>
|
||||||
|
std::enable_if_t<std::is_base_of_v<Base, Derived>, const UPtrList<Base>&>
|
||||||
|
upcast(const UPtrList<Derived>& This)
|
||||||
|
{
|
||||||
|
return *reinterpret_cast<const UPtrList<Base>*>(&This);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// As per
|
// As per
|
||||||
@ -86,20 +136,7 @@ Ostream& printAddr
|
|||||||
const UPtrList<T>& list
|
const UPtrList<T>& list
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
const label len = list.size();
|
return list.printAddresses(os);
|
||||||
|
|
||||||
// Size and start delimiter
|
|
||||||
os << nl << indent << len << nl
|
|
||||||
<< indent << token::BEGIN_LIST << incrIndent << nl;
|
|
||||||
|
|
||||||
for (label i=0; i < len; ++i)
|
|
||||||
{
|
|
||||||
os << "addr=" << Foam::name(list.get(i)) << nl;
|
|
||||||
}
|
|
||||||
|
|
||||||
// End delimiter
|
|
||||||
os << decrIndent << indent << token::END_LIST << nl;
|
|
||||||
return os;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -176,11 +213,11 @@ Ostream& print
|
|||||||
{
|
{
|
||||||
const label cap = list.capacity();
|
const label cap = list.capacity();
|
||||||
|
|
||||||
for (label i=len; i < cap; ++i)
|
for (label i = len; i < cap; ++i)
|
||||||
{
|
{
|
||||||
const T* ptr = list.get(i);
|
const T* ptr = list.get(i);
|
||||||
|
|
||||||
os << "unused " << name(ptr) << nl;
|
os << "unused " << Foam::name(ptr) << nl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -264,9 +301,9 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
Info<< "DLPtrList: " << llist1 << endl;
|
Info<< "DLPtrList: " << llist1 << endl;
|
||||||
|
|
||||||
Scalar::verbose = false;
|
verbosity = false;
|
||||||
llist1.clear();
|
llist1.clear();
|
||||||
Scalar::verbose = true;
|
verbosity = true;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -344,6 +381,44 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Test upcasting - dangerous
|
||||||
|
{
|
||||||
|
const auto& base =
|
||||||
|
*reinterpret_cast<UPtrList<BoxedType<scalar>>*>(&list1);
|
||||||
|
|
||||||
|
Info<< "list :" << list1 << nl;
|
||||||
|
Info<< "base :" << base << nl;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Expect bad things to happen!!
|
||||||
|
{
|
||||||
|
const auto& base =
|
||||||
|
*reinterpret_cast<UPtrList<BoxedType<label>>*>(&list1);
|
||||||
|
|
||||||
|
Info<< "list :" << list1 << nl;
|
||||||
|
Info<< "base :" << base << nl;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Test upcasting - compile safer (make as member function?)
|
||||||
|
{
|
||||||
|
// const auto& base = list1.upcast<BoxedType<scalar>>();
|
||||||
|
const auto& base = upcast<BoxedType<scalar>>(list1);
|
||||||
|
|
||||||
|
Info<< "list :" << list1 << nl;
|
||||||
|
Info<< "base :" << base << nl;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Refuse to compile (good!)
|
||||||
|
#if 0
|
||||||
|
{
|
||||||
|
// const auto& base = list1.upcast<BoxedType<label>>();
|
||||||
|
const auto& base = upcast<BoxedType<label>>(list1);
|
||||||
|
|
||||||
|
Info<< "list :" << list1 << nl;
|
||||||
|
Info<< "base :" << base << nl;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
PtrList<Scalar> list2(15);
|
PtrList<Scalar> list2(15);
|
||||||
Info<< "Emplace set " << list2.size() << " values" << nl;
|
Info<< "Emplace set " << list2.size() << " values" << nl;
|
||||||
forAll(list2, i)
|
forAll(list2, i)
|
||||||
@ -518,6 +593,7 @@ int main(int argc, char *argv[])
|
|||||||
print(Info, dynlist1d);
|
print(Info, dynlist1d);
|
||||||
|
|
||||||
Info<< "addresses:" << nl;
|
Info<< "addresses:" << nl;
|
||||||
|
dynlist1d.printAddresses(Info, true);
|
||||||
printAddr(Info, dynlist1d);
|
printAddr(Info, dynlist1d);
|
||||||
|
|
||||||
PtrList<Scalar> list1d;
|
PtrList<Scalar> list1d;
|
||||||
@ -1,3 +1,3 @@
|
|||||||
Test-PtrListDictionary.C
|
Test-PtrListDictionary.cxx
|
||||||
|
|
||||||
EXE = $(FOAM_USER_APPBIN)/Test-PtrListDictionary
|
EXE = $(FOAM_USER_APPBIN)/Test-PtrListDictionary
|
||||||
|
|||||||
@ -39,26 +39,26 @@ Description
|
|||||||
|
|
||||||
using namespace Foam;
|
using namespace Foam;
|
||||||
|
|
||||||
|
bool verbosity = true;
|
||||||
|
|
||||||
class Scalar
|
class Scalar
|
||||||
{
|
{
|
||||||
scalar data_;
|
scalar data_;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
static bool verbose;
|
|
||||||
|
|
||||||
constexpr Scalar() noexcept : data_(0) {}
|
constexpr Scalar() noexcept : data_(0) {}
|
||||||
Scalar(scalar val) noexcept : data_(val) {}
|
Scalar(scalar val) noexcept : data_(val) {}
|
||||||
|
|
||||||
~Scalar()
|
~Scalar()
|
||||||
{
|
{
|
||||||
if (verbose) Info<< "delete Scalar: " << data_ << endl;
|
if (verbosity) Info<< "delete Scalar: " << value() << nl;
|
||||||
}
|
}
|
||||||
|
|
||||||
const scalar& value() const noexcept { return data_; }
|
scalar value() const noexcept { return data_; }
|
||||||
scalar& value() noexcept { return data_; }
|
scalar& value() noexcept { return data_; }
|
||||||
|
|
||||||
autoPtr<Scalar> clone() const { return autoPtr<Scalar>::New(data_); }
|
auto clone() const { return autoPtr<Scalar>::New(*this); }
|
||||||
|
|
||||||
friend Ostream& operator<<(Ostream& os, const Scalar& item)
|
friend Ostream& operator<<(Ostream& os, const Scalar& item)
|
||||||
{
|
{
|
||||||
@ -67,8 +67,6 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
bool Scalar::verbose = true;
|
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
// Main program:
|
// Main program:
|
||||||
@ -91,12 +91,6 @@ Ostream& printView(Ostream& os, std::string_view s)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Ostream& printView(Ostream& os, stdFoam::span<char> s)
|
|
||||||
{
|
|
||||||
return printView(os, s.begin(), s.end());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Ostream& printView(Ostream& os, const UList<char>& list)
|
Ostream& printView(Ostream& os, const UList<char>& list)
|
||||||
{
|
{
|
||||||
return printView(os, list.begin(), list.end());
|
return printView(os, list.begin(), list.end());
|
||||||
|
|||||||
@ -200,7 +200,7 @@ void printTypeName()
|
|||||||
|
|
||||||
|
|
||||||
template<class Type, bool UseTypeName = true>
|
template<class Type, bool UseTypeName = true>
|
||||||
void printPstreamTraits(const std::string_view name = std::string_view())
|
void printPstreamTraits(std::string_view name = std::string_view())
|
||||||
{
|
{
|
||||||
Info<< "========" << nl;
|
Info<< "========" << nl;
|
||||||
Info<< "type: ";
|
Info<< "type: ";
|
||||||
@ -299,6 +299,9 @@ void printPstreamTraits(const std::string_view name = std::string_view())
|
|||||||
// Use element or component type (or byte-wise) for data type
|
// Use element or component type (or byte-wise) for data type
|
||||||
using base = typename UPstream_dataType<Type>::base;
|
using base = typename UPstream_dataType<Type>::base;
|
||||||
|
|
||||||
|
// The sizing factor is constexpr
|
||||||
|
constexpr std::streamsize count = UPstream_dataType<Type>::size(1);
|
||||||
|
|
||||||
Info<< " : ";
|
Info<< " : ";
|
||||||
if constexpr (UseTypeName)
|
if constexpr (UseTypeName)
|
||||||
{
|
{
|
||||||
@ -311,8 +314,7 @@ void printPstreamTraits(const std::string_view name = std::string_view())
|
|||||||
|
|
||||||
Info<< " cmpt-type=";
|
Info<< " cmpt-type=";
|
||||||
printDataTypeId(UPstream_dataType<Type>::datatype_id);
|
printDataTypeId(UPstream_dataType<Type>::datatype_id);
|
||||||
Info<< " count=" << UPstream_dataType<Type>::size(1);
|
Info<< " count=" << count << nl;
|
||||||
Info<< nl;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -362,6 +364,24 @@ void print_data_opType(BinaryOp bop, std::string_view name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
int check_simple(std::string_view name = std::string_view())
|
||||||
|
{
|
||||||
|
// The sizing factor is constexpr
|
||||||
|
constexpr std::streamsize count = UPstream_dataType<Type>::size(1);
|
||||||
|
|
||||||
|
static_assert
|
||||||
|
(
|
||||||
|
(count == 1),
|
||||||
|
"Code does not (yet) work with aggregate types"
|
||||||
|
);
|
||||||
|
|
||||||
|
Info<< "check_simple: " << name << ": " << count << nl;
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
// Main program:
|
// Main program:
|
||||||
|
|
||||||
@ -389,6 +409,8 @@ int main()
|
|||||||
printPstreamTraits<const float>();
|
printPstreamTraits<const float>();
|
||||||
printPstreamTraits<floatVector>();
|
printPstreamTraits<floatVector>();
|
||||||
|
|
||||||
|
check_simple<floatVector>("vector<float>");
|
||||||
|
|
||||||
printPstreamTraits<scalar>();
|
printPstreamTraits<scalar>();
|
||||||
printPstreamTraits<double>();
|
printPstreamTraits<double>();
|
||||||
printPstreamTraits<doubleVector>();
|
printPstreamTraits<doubleVector>();
|
||||||
|
|||||||
@ -1,3 +1,3 @@
|
|||||||
Test-base64Encoding.C
|
Test-base64Encoding.cxx
|
||||||
|
|
||||||
EXE = $(FOAM_USER_APPBIN)/Test-base64Encoding
|
EXE = $(FOAM_USER_APPBIN)/Test-base64Encoding
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
\\ / A nd | www.openfoam.com
|
\\ / A nd | www.openfoam.com
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2016 OpenCFD Ltd.
|
Copyright (C) 2016-2025 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -35,25 +35,31 @@ Description
|
|||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#include "base64Layer.H"
|
#include "base64Layer.H"
|
||||||
|
#include "SpanStream.H"
|
||||||
#include "List.H"
|
#include "List.H"
|
||||||
#include "Pair.H"
|
#include "Pair.H"
|
||||||
|
|
||||||
#include <sstream>
|
|
||||||
|
|
||||||
using namespace Foam;
|
using namespace Foam;
|
||||||
|
|
||||||
bool test(const Pair<string>& unit)
|
bool test(const Pair<string>& unit)
|
||||||
{
|
{
|
||||||
const string& input = unit.first();
|
const auto& input = unit.first();
|
||||||
const string& expected = unit.second();
|
const auto& expected = unit.second();
|
||||||
|
|
||||||
std::ostringstream os;
|
Foam::ocharstream os;
|
||||||
|
|
||||||
base64Layer b64(os);
|
{
|
||||||
b64.write(input.data(), input.size());
|
base64Layer b64(os);
|
||||||
b64.close();
|
b64.write(input.data(), input.size());
|
||||||
|
|
||||||
const string encoded = os.str();
|
if (b64.close())
|
||||||
|
{
|
||||||
|
// Extra information
|
||||||
|
// std::cerr<< "closed with pending data" << nl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const auto encoded = os.view();
|
||||||
|
|
||||||
Info<< input << nl;
|
Info<< input << nl;
|
||||||
|
|
||||||
@ -78,7 +84,7 @@ bool test(std::initializer_list<Pair<string>> list)
|
|||||||
{
|
{
|
||||||
bool good = true;
|
bool good = true;
|
||||||
|
|
||||||
for (const Pair<string>& t : list)
|
for (const auto& t : list)
|
||||||
{
|
{
|
||||||
good = test(t) && good;
|
good = test(t) && good;
|
||||||
}
|
}
|
||||||
@ -91,7 +97,7 @@ bool test(const UList<Pair<string>>& list)
|
|||||||
{
|
{
|
||||||
bool good = true;
|
bool good = true;
|
||||||
|
|
||||||
for (const Pair<string>& t : list)
|
for (const auto& t : list)
|
||||||
{
|
{
|
||||||
good = test(t) && good;
|
good = test(t) && good;
|
||||||
}
|
}
|
||||||
@ -107,7 +113,7 @@ void testMixed(std::ostream& os, const UList<Pair<string>>& list)
|
|||||||
os << "<test-mixed>" << nl;
|
os << "<test-mixed>" << nl;
|
||||||
|
|
||||||
int i=0;
|
int i=0;
|
||||||
for (const Pair<string>& t : list)
|
for (const auto& t : list)
|
||||||
{
|
{
|
||||||
const string& input = t.first();
|
const string& input = t.first();
|
||||||
|
|
||||||
@ -1,3 +1,3 @@
|
|||||||
Test-bitSet1.C
|
Test-bitSet1.cxx
|
||||||
|
|
||||||
EXE = $(FOAM_USER_APPBIN)/Test-bitSet1
|
EXE = $(FOAM_USER_APPBIN)/Test-bitSet1
|
||||||
|
|||||||
@ -142,6 +142,9 @@ int main(int argc, char *argv[])
|
|||||||
Info<< "got: " << bset1 << nl
|
Info<< "got: " << bset1 << nl
|
||||||
<< "and: " << bset2 << nl
|
<< "and: " << bset2 << nl
|
||||||
<< "and: " << bset3 << nl;
|
<< "and: " << bset3 << nl;
|
||||||
|
|
||||||
|
Info<< "==";
|
||||||
|
bset3.writeList(Info, 10) << nl; // matrix-like output
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5,7 +5,7 @@
|
|||||||
\\ / A nd | www.openfoam.com
|
\\ / A nd | www.openfoam.com
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2018-2021 OpenCFD Ltd.
|
Copyright (C) 2018-2025 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -75,9 +75,9 @@ inline Ostream& info(const UList<bool>& bools)
|
|||||||
Info<< "size=" << bools.size()
|
Info<< "size=" << bools.size()
|
||||||
<< " count=" << BitOps::count(bools)
|
<< " count=" << BitOps::count(bools)
|
||||||
<< " !count=" << BitOps::count(bools, false)
|
<< " !count=" << BitOps::count(bools, false)
|
||||||
<< " all:" << BitOps::all(bools)
|
<< " all:" << bools.all()
|
||||||
<< " any:" << BitOps::any(bools)
|
<< " any:" << bools.any()
|
||||||
<< " none:" << BitOps::none(bools) << nl;
|
<< " none:" << bools.none() << nl;
|
||||||
|
|
||||||
return Info;
|
return Info;
|
||||||
}
|
}
|
||||||
@ -137,11 +137,11 @@ inline bool compare
|
|||||||
const std::string& expected
|
const std::string& expected
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
const List<unsigned int>& store = bitset.storage();
|
const auto& store = bitset.storage();
|
||||||
|
|
||||||
std::string has;
|
std::string has;
|
||||||
|
|
||||||
for (label blocki=0; blocki < bitset.nBlocks(); ++blocki)
|
for (label blocki=0; blocki < bitset.num_blocks(); ++blocki)
|
||||||
{
|
{
|
||||||
has += toString(store[blocki]);
|
has += toString(store[blocki]);
|
||||||
}
|
}
|
||||||
@ -194,8 +194,10 @@ int main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
boolList bools = list1.values();
|
boolList bools = list1.values();
|
||||||
|
|
||||||
Info<<"===============" << nl;
|
Info<< "===============" << nl;
|
||||||
Info<<"bools: " << flatOutput(bools) << nl;
|
Info<< "bools: " << flatOutput(bools) << nl;
|
||||||
|
Info<< " ";
|
||||||
|
info(bools);
|
||||||
|
|
||||||
for (int i : { -10, 0, 8, 15, 32})
|
for (int i : { -10, 0, 8, 15, 32})
|
||||||
{
|
{
|
||||||
@ -238,17 +240,18 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef TEST_SFINAE
|
#ifdef TEST_SFINAE
|
||||||
|
// This should fail to compile:
|
||||||
{
|
{
|
||||||
labelList labels = list1.toc();
|
labelList labels = list1.toc();
|
||||||
if (labels.test(0))
|
if (labels.test(0))
|
||||||
{
|
{
|
||||||
Info<<"no" << endl;
|
Info<< "no" << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<double*> ptrs(10, nullptr);
|
List<double*> ptrs(10, nullptr);
|
||||||
if (ptrs.get(0))
|
if (ptrs.get(0))
|
||||||
{
|
{
|
||||||
Info<<"no" << endl;
|
Info<< "no" << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -1,3 +1,3 @@
|
|||||||
Test-boolList.C
|
Test-boolList.cxx
|
||||||
|
|
||||||
EXE = $(FOAM_USER_APPBIN)/Test-boolList
|
EXE = $(FOAM_USER_APPBIN)/Test-boolList
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
\\ / A nd | www.openfoam.com
|
\\ / A nd | www.openfoam.com
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2020-2022 OpenCFD Ltd.
|
Copyright (C) 2020-2025 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -71,9 +71,9 @@ inline Ostream& info(const UList<bool>& bools)
|
|||||||
Info<< "size=" << bools.size()
|
Info<< "size=" << bools.size()
|
||||||
<< " count=" << BitOps::count(bools)
|
<< " count=" << BitOps::count(bools)
|
||||||
<< " !count=" << BitOps::count(bools, false)
|
<< " !count=" << BitOps::count(bools, false)
|
||||||
<< " all:" << BitOps::all(bools)
|
<< " all:" << bools.all()
|
||||||
<< " any:" << BitOps::any(bools)
|
<< " any:" << bools.any()
|
||||||
<< " none:" << BitOps::none(bools) << nl;
|
<< " none:" << bools.none() << nl;
|
||||||
|
|
||||||
return Info;
|
return Info;
|
||||||
}
|
}
|
||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: v2412 |
|
| \\ / O peration | Version: v2506 |
|
||||||
| \\ / A nd | Website: www.openfoam.com |
|
| \\ / A nd | Website: www.openfoam.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -1,3 +1,3 @@
|
|||||||
Test-compoundToken1.C
|
Test-compoundToken1.cxx
|
||||||
|
|
||||||
EXE = $(FOAM_USER_APPBIN)/Test-compoundToken1
|
EXE = $(FOAM_USER_APPBIN)/Test-compoundToken1
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
\\ / A nd | www.openfoam.com
|
\\ / A nd | www.openfoam.com
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2023 OpenCFD Ltd.
|
Copyright (C) 2023-2025 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -158,7 +158,8 @@ void populateCompound(token::compound& ct, const dictionary& dict)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case token::tokenType::LABEL :
|
case token::tokenType::INTEGER_32 :
|
||||||
|
case token::tokenType::INTEGER_64 :
|
||||||
{
|
{
|
||||||
fillComponents(label, cmpts, 123);
|
fillComponents(label, cmpts, 123);
|
||||||
}
|
}
|
||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: v2412 |
|
| \\ / O peration | Version: v2506 |
|
||||||
| \\ / A nd | Website: www.openfoam.com |
|
| \\ / A nd | Website: www.openfoam.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: v2412 |
|
| \\ / O peration | Version: v2506 |
|
||||||
| \\ / A nd | Website: www.openfoam.com |
|
| \\ / A nd | Website: www.openfoam.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: v2412 |
|
| \\ / O peration | Version: v2506 |
|
||||||
| \\ / A nd | Website: www.openfoam.com |
|
| \\ / A nd | Website: www.openfoam.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: v2412 |
|
| \\ / O peration | Version: v2506 |
|
||||||
| \\ / A nd | Website: www.openfoam.com |
|
| \\ / A nd | Website: www.openfoam.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: v2412 |
|
| \\ / O peration | Version: v2506 |
|
||||||
| \\ / A nd | Website: www.openfoam.com |
|
| \\ / A nd | Website: www.openfoam.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: v2412 |
|
| \\ / O peration | Version: v2506 |
|
||||||
| \\ / A nd | Website: www.openfoam.com |
|
| \\ / A nd | Website: www.openfoam.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: v2412 |
|
| \\ / O peration | Version: v2506 |
|
||||||
| \\ / A nd | Website: www.openfoam.com |
|
| \\ / A nd | Website: www.openfoam.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: v2412 |
|
| \\ / O peration | Version: v2506 |
|
||||||
| \\ / A nd | Website: www.openfoam.com |
|
| \\ / A nd | Website: www.openfoam.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -1,3 +1,3 @@
|
|||||||
Test-dictionary.C
|
Test-dictionary.cxx
|
||||||
|
|
||||||
EXE = $(FOAM_USER_APPBIN)/Test-dictionary
|
EXE = $(FOAM_USER_APPBIN)/Test-dictionary
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: v2412 |
|
| \\ / O peration | Version: v2506 |
|
||||||
| \\ / A nd | Website: www.openfoam.com |
|
| \\ / A nd | Website: www.openfoam.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: v2412 |
|
| \\ / O peration | Version: v2506 |
|
||||||
| \\ / A nd | Website: www.openfoam.com |
|
| \\ / A nd | Website: www.openfoam.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: v2412 |
|
| \\ / O peration | Version: v2506 |
|
||||||
| \\ / A nd | Website: www.openfoam.com |
|
| \\ / A nd | Website: www.openfoam.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: v2412 |
|
| \\ / O peration | Version: v2506 |
|
||||||
| \\ / A nd | Website: www.openfoam.com |
|
| \\ / A nd | Website: www.openfoam.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: v2412 |
|
| \\ / O peration | Version: v2506 |
|
||||||
| \\ / A nd | Website: www.openfoam.com |
|
| \\ / A nd | Website: www.openfoam.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: v2412 |
|
| \\ / O peration | Version: v2506 |
|
||||||
| \\ / A nd | Website: www.openfoam.com |
|
| \\ / A nd | Website: www.openfoam.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: v2412 |
|
| \\ / O peration | Version: v2506 |
|
||||||
| \\ / A nd | Website: www.openfoam.com |
|
| \\ / A nd | Website: www.openfoam.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: v2412 |
|
| \\ / O peration | Version: v2506 |
|
||||||
| \\ / A nd | Website: www.openfoam.com |
|
| \\ / A nd | Website: www.openfoam.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: v2412 |
|
| \\ / O peration | Version: v2506 |
|
||||||
| \\ / A nd | Website: www.openfoam.com |
|
| \\ / A nd | Website: www.openfoam.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: v2412 |
|
| \\ / O peration | Version: v2506 |
|
||||||
| \\ / A nd | Website: www.openfoam.com |
|
| \\ / A nd | Website: www.openfoam.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: v2412 |
|
| \\ / O peration | Version: v2506 |
|
||||||
| \\ / A nd | Website: www.openfoam.com |
|
| \\ / A nd | Website: www.openfoam.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: v2412 |
|
| \\ / O peration | Version: v2506 |
|
||||||
| \\ / A nd | Website: www.openfoam.com |
|
| \\ / A nd | Website: www.openfoam.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: v2412 |
|
| \\ / O peration | Version: v2506 |
|
||||||
| \\ / A nd | Website: www.openfoam.com |
|
| \\ / A nd | Website: www.openfoam.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: v2412 |
|
| \\ / O peration | Version: v2506 |
|
||||||
| \\ / A nd | Website: www.openfoam.com |
|
| \\ / A nd | Website: www.openfoam.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: v2412 |
|
| \\ / O peration | Version: v2506 |
|
||||||
| \\ / A nd | Website: www.openfoam.com |
|
| \\ / A nd | Website: www.openfoam.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -1,3 +1,3 @@
|
|||||||
Test-dictionary2.C
|
Test-dictionary2.cxx
|
||||||
|
|
||||||
EXE = $(FOAM_USER_APPBIN)/Test-dictionary2
|
EXE = $(FOAM_USER_APPBIN)/Test-dictionary2
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
\\ / A nd | www.openfoam.com
|
\\ / A nd | www.openfoam.com
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2017-2023 OpenCFD Ltd.
|
Copyright (C) 2017-2025 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -47,8 +47,18 @@ void entryInfo(entry* e)
|
|||||||
{
|
{
|
||||||
if (e)
|
if (e)
|
||||||
{
|
{
|
||||||
Info<<"added "
|
Info<< "added "
|
||||||
<< e->keyword() << ": " << typeid(e).name() << nl;
|
<< e->keyword() << ": " << typeid(e).name();
|
||||||
|
|
||||||
|
if (auto* stream = e->streamPtr())
|
||||||
|
{
|
||||||
|
Info<< " tokens: "; stream->tokens().writeList(Info);
|
||||||
|
}
|
||||||
|
if (auto* dict = e->dictPtr())
|
||||||
|
{
|
||||||
|
Info<< " dictionary:";
|
||||||
|
}
|
||||||
|
Info<< nl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -200,12 +210,31 @@ int main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
dictionary tmpdict;
|
dictionary tmpdict;
|
||||||
|
|
||||||
|
// Add an empty entry and populate afterwards
|
||||||
|
if (entry* e = dict1.set(word::printf("entry%d", i), nullptr))
|
||||||
{
|
{
|
||||||
entry* e = dict1.add
|
auto& toks = e->stream();
|
||||||
(
|
toks.resize(2);
|
||||||
word::printf("entry%d", i),
|
|
||||||
string("entry" + Foam::name(i))
|
toks[0] = word("value" + Foam::name(i));
|
||||||
);
|
toks[1] = 10*i;
|
||||||
|
entryInfo(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add an entry from given list of tokens
|
||||||
|
{
|
||||||
|
tokenList toks(2);
|
||||||
|
toks[0] = word("value" + Foam::name(i));
|
||||||
|
toks[1] = 10*i;
|
||||||
|
|
||||||
|
Info<< "set token0: " << Foam::name(&(toks[0])) << nl;
|
||||||
|
|
||||||
|
entry* e = dict1.set(word::printf("_entry%d", i), std::move(toks));
|
||||||
|
|
||||||
|
// verify that the address is identical (ie, move semantics worked)
|
||||||
|
auto& newToks = e->stream();
|
||||||
|
Info<< "get token0: " << Foam::name(&(newToks[0])) << nl;
|
||||||
|
|
||||||
entryInfo(e);
|
entryInfo(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1,3 +1,3 @@
|
|||||||
Test-dictionaryCopy.C
|
Test-dictionaryCopy.cxx
|
||||||
|
|
||||||
EXE = $(FOAM_USER_APPBIN)/Test-dictionaryCopy
|
EXE = $(FOAM_USER_APPBIN)/Test-dictionaryCopy
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: v2412 |
|
| \\ / O peration | Version: v2506 |
|
||||||
| \\ / A nd | Website: www.openfoam.com |
|
| \\ / A nd | Website: www.openfoam.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: v2412 |
|
| \\ / O peration | Version: v2506 |
|
||||||
| \\ / A nd | Website: www.openfoam.com |
|
| \\ / A nd | Website: www.openfoam.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: v2412 |
|
| \\ / O peration | Version: v2506 |
|
||||||
| \\ / A nd | Website: www.openfoam.com |
|
| \\ / A nd | Website: www.openfoam.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user