ENH: improve/simplify streaming of exprValue

- ensure that operator<< and operator>> behave symmetrically
This commit is contained in:
Mark Olesen
2023-11-22 14:26:37 +01:00
parent 2ab3490552
commit c5e4b62df7
14 changed files with 739 additions and 42 deletions

View File

@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2021 OpenCFD Ltd.
Copyright (C) 2021-2023 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -61,7 +61,37 @@ Foam::expressions::Detail::nComponents
\
case expressions::valueTypeCode::type_##Type : \
{ \
return pTraits<Type>::nComponents; \
return exprTypeTraits<Type>::nComponents; \
}
FOR_ALL_EXPR_TYPE_CODES(doLocalCode);
#undef doLocalCode
}
return 0;
}
Foam::direction
Foam::expressions::Detail::rank
(
const expressions::valueTypeCode typeCode
) noexcept
{
switch (typeCode)
{
case expressions::valueTypeCode::NONE :
case expressions::valueTypeCode::INVALID :
{
break;
}
#undef doLocalCode
#define doLocalCode(Type, UnusedParam) \
\
case expressions::valueTypeCode::type_##Type : \
{ \
return exprTypeTraits<Type>::rank; \
}
FOR_ALL_EXPR_TYPE_CODES(doLocalCode);
@ -112,7 +142,7 @@ Foam::word Foam::name(const expressions::valueTypeCode typeCode)
case expressions::valueTypeCode::INVALID :
{
// returns ""
// returns "", could also return "bad"
break;
}