Skip to content

Commit

Permalink
levelset: explicitly define the return type of lambda functions
Browse files Browse the repository at this point in the history
  • Loading branch information
andrea-iob committed Jun 12, 2024
1 parent bcfe91a commit bc095dd
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 25 deletions.
8 changes: 4 additions & 4 deletions src/levelset/levelSetBooleanObject.tpp
Original file line number Diff line number Diff line change
Expand Up @@ -321,7 +321,7 @@ short LevelSetBooleanBaseObject<SourceLevelSetObject>::_evalCellSign(long id) co
*/
template<typename SourceLevelSetObject>
double LevelSetBooleanBaseObject<SourceLevelSetObject>::_evalCellValue(long id, bool signedLevelSet) const {
return _evalCellFunction<double>(id, signedLevelSet, [] (const LevelSetBooleanResult<SourceLevelSetObject> &result)
return _evalCellFunction<double>(id, signedLevelSet, [] (const LevelSetBooleanResult<SourceLevelSetObject> &result) -> double
{
const LevelSetObject *resultObject = result.getObject();
if ( !resultObject ) {
Expand All @@ -340,7 +340,7 @@ double LevelSetBooleanBaseObject<SourceLevelSetObject>::_evalCellValue(long id,
*/
template<typename SourceLevelSetObject>
std::array<double,3> LevelSetBooleanBaseObject<SourceLevelSetObject>::_evalCellGradient(long id, bool signedLevelSet) const {
return _evalCellFunction<std::array<double,3>>(id, signedLevelSet, [id, signedLevelSet] (const LevelSetBooleanResult<SourceLevelSetObject> &result)
return _evalCellFunction<std::array<double,3>>(id, signedLevelSet, [id, signedLevelSet] (const LevelSetBooleanResult<SourceLevelSetObject> &result) -> std::array<double, 3>
{
const LevelSetObject *resultObject = result.getObject();
if ( !resultObject ) {
Expand All @@ -365,7 +365,7 @@ std::array<double,3> LevelSetBooleanBaseObject<SourceLevelSetObject>::_evalCellG
*/
template<typename SourceLevelSetObject>
double LevelSetBooleanBaseObject<SourceLevelSetObject>::_evalValue(const std::array<double,3> &point, bool signedLevelSet) const {
return _evalFunction<double>(point, signedLevelSet, [] (const LevelSetBooleanResult<SourceLevelSetObject> &result)
return _evalFunction<double>(point, signedLevelSet, [] (const LevelSetBooleanResult<SourceLevelSetObject> &result) -> double
{
const SourceLevelSetObject *resultObject = result.getObject();
if ( !resultObject ) {
Expand All @@ -385,7 +385,7 @@ double LevelSetBooleanBaseObject<SourceLevelSetObject>::_evalValue(const std::ar
*/
template<typename SourceLevelSetObject>
std::array<double,3> LevelSetBooleanBaseObject<SourceLevelSetObject>::_evalGradient(const std::array<double,3> &point, bool signedLevelSet) const {
return _evalFunction<std::array<double,3>>(point, signedLevelSet, [&point, signedLevelSet] (const LevelSetBooleanResult<SourceLevelSetObject> &result)
return _evalFunction<std::array<double,3>>(point, signedLevelSet, [&point, signedLevelSet] (const LevelSetBooleanResult<SourceLevelSetObject> &result) -> std::array<double,3>
{
const LevelSetObject *resultObject = result.getObject();
if ( !resultObject ) {
Expand Down
24 changes: 12 additions & 12 deletions src/levelset/levelSetObject.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1481,7 +1481,7 @@ LevelSetIntersectionStatus LevelSetObject::_intersectSurface(long id, double dis
short LevelSetObject::evalCellSign(long id) const {

// Define sign evaluators
auto evaluator = [this] (long id)
auto evaluator = [this] (long id) -> short
{
// Try fetching the sign from sign propagation
CellCacheCollection::ValueCache<char> *propagatedSignCache = getCellCache<char>(m_cellPropagatedSignCacheId);
Expand Down Expand Up @@ -1511,7 +1511,7 @@ short LevelSetObject::evalCellSign(long id) const {
return _evalCellSign(id);
};

auto fallback = [this] (long id)
auto fallback = [this] (long id) -> short
{
// Try fetching the sign from sign propagation
CellCacheCollection::ValueCache<char> *propagatedSignCache = getCellCache<char>(m_cellPropagatedSignCacheId);
Expand Down Expand Up @@ -1544,12 +1544,12 @@ double LevelSetObject::evalCellValue(long id, bool signedLevelSet) const {
// Evaluate signed value
//
// The value stored in the cache is unsigned.
auto evaluator = [this] (long id)
auto evaluator = [this] (long id) -> double
{
return _evalCellValue(id, false);
};

auto fallback = [] (long id)
auto fallback = [] (long id) -> double
{
BITPIT_UNUSED(id);

Expand Down Expand Up @@ -1577,12 +1577,12 @@ std::array<double,3> LevelSetObject::evalCellGradient(long id, bool signedLevelS
// Evaluate signed gradient
//
// The gradient stored in the cache is unsigned.
auto evaluator = [this] (long id)
auto evaluator = [this] (long id) -> std::array<double, 3>
{
return _evalCellGradient(id, false);
};

auto fallback = [] (long id)
auto fallback = [] (long id) -> const std::array<double, 3> &
{
BITPIT_UNUSED(id);

Expand Down Expand Up @@ -2098,24 +2098,24 @@ void LevelSetObject::flushVTKOutputData(std::fstream &stream, VTKFormat format,

case LevelSetField::VALUE:
{
auto evaluator = [this] (long id) { return evalCellValue(id, true); };
auto fallback = [] (long id) { BITPIT_UNUSED(id); return levelSetDefaults::VALUE; };
auto evaluator = [this] (long id) -> double { return evalCellValue(id, true); };
auto fallback = [] (long id) -> double { BITPIT_UNUSED(id); return levelSetDefaults::VALUE; };
flushVTKOutputData<double>(stream, format, field, evaluator, fallback);
break;
}

case LevelSetField::SIGN:
{
auto evaluator = [this] (long id) { return (short) evalCellSign(id); };
auto fallback = [] (long id) { BITPIT_UNUSED(id); return levelSetDefaults::SIGN; };
auto evaluator = [this] (long id) -> short { return (short) evalCellSign(id); };
auto fallback = [] (long id) -> short { BITPIT_UNUSED(id); return levelSetDefaults::SIGN; };
flushVTKOutputData<short>(stream, format, field, evaluator, fallback);
break;
}

case LevelSetField::GRADIENT:
{
auto evaluator = [this] (long id) { return evalCellGradient(id, true); };
auto fallback = [] (long id) { BITPIT_UNUSED(id); return levelSetDefaults::GRADIENT; };
auto evaluator = [this] (long id) -> std::array<double, 3> { return evalCellGradient(id, true); };
auto fallback = [] (long id) -> const std::array<double, 3> & { BITPIT_UNUSED(id); return levelSetDefaults::GRADIENT; };
flushVTKOutputData<std::array<double, 3>>(stream, format, field, evaluator, fallback);
break;
}
Expand Down
18 changes: 9 additions & 9 deletions src/levelset/levelSetSegmentationObject.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1829,12 +1829,12 @@ std::array<double,3> LevelSetSegmentationBaseObject::evalCellNormal(long id, boo
// Evaluate signed normal
//
// The normal stored in the cache is unsigned.
auto evaluator = [this] (long id)
auto evaluator = [this] (long id) -> std::array<double,3>
{
return _evalCellNormal(id, false);
};

auto fallback = [] (long id)
auto fallback = [] (long id) -> const std::array<double,3> &
{
BITPIT_UNUSED(id);

Expand Down Expand Up @@ -2145,24 +2145,24 @@ void LevelSetSegmentationBaseObject::flushVTKOutputData(std::fstream &stream, VT

case LevelSetField::SUPPORT:
{
auto evaluator = [this] (long id) { return evalCellSupport(id); };
auto fallback = [] (long id) { BITPIT_UNUSED(id); return levelSetDefaults::SUPPORT; };
auto evaluator = [this] (long id) -> long { return evalCellSupport(id); };
auto fallback = [] (long id) -> long { BITPIT_UNUSED(id); return levelSetDefaults::SUPPORT; };
flushVTKOutputData<double>(stream, format, field, evaluator, fallback);
break;
}

case LevelSetField::PART:
{
auto evaluator = [this] (long id) { return evalCellPart(id); };
auto fallback = [] (long id) { BITPIT_UNUSED(id); return levelSetDefaults::PART; };
auto evaluator = [this] (long id) -> int { return evalCellPart(id); };
auto fallback = [] (long id) -> int { BITPIT_UNUSED(id); return levelSetDefaults::PART; };
flushVTKOutputData<double>(stream, format, field, evaluator, fallback);
break;
}

case LevelSetField::NORMAL:
{
auto evaluator = [this] (long id) { return evalCellNormal(id, true); };
auto fallback = [] (long id) { BITPIT_UNUSED(id); return levelSetDefaults::NORMAL; };
auto evaluator = [this] (long id) -> std::array<double,3> { return evalCellNormal(id, true); };
auto fallback = [] (long id) -> const std::array<double,3> & { BITPIT_UNUSED(id); return levelSetDefaults::NORMAL; };
flushVTKOutputData<double>(stream, format, field, evaluator, fallback);
break;
}
Expand Down Expand Up @@ -3276,7 +3276,7 @@ int LevelSetBooleanObject<LevelSetSegmentationBaseObject>::_evalCellPart(long id
*/
std::array<double,3> LevelSetBooleanObject<LevelSetSegmentationBaseObject>::_evalCellNormal(long id, bool signedLevelSet) const
{
return _evalCellFunction<std::array<double,3>>(id, signedLevelSet, [&id, signedLevelSet] (const LevelSetBooleanResult<LevelSetSegmentationBaseObject> &result)
return _evalCellFunction<std::array<double,3>>(id, signedLevelSet, [&id, signedLevelSet] (const LevelSetBooleanResult<LevelSetSegmentationBaseObject> &result) -> std::array<double,3>
{
const LevelSetSegmentationBaseObject *resultObject = result.getObject();
if ( !resultObject ) {
Expand Down

0 comments on commit bc095dd

Please sign in to comment.