X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FFiltersAPI%2FFiltersAPI_Filter.cpp;h=f98e9efcb4e0d9d13c3cbaeefcb0e9761fe3f046;hb=fc72d43b677baa05ae7fd317346fd8b723b799ed;hp=0e799e49eab87a8f725b29983f5bb5d960c1dacf;hpb=30b704bbf16a3e6bfda63b6f1df05da40b6a939b;p=modules%2Fshaper.git diff --git a/src/FiltersAPI/FiltersAPI_Filter.cpp b/src/FiltersAPI/FiltersAPI_Filter.cpp index 0e799e49e..f98e9efcb 100644 --- a/src/FiltersAPI/FiltersAPI_Filter.cpp +++ b/src/FiltersAPI/FiltersAPI_Filter.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2014-2019 CEA/DEN, EDF R&D +// Copyright (C) 2014-2023 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -21,6 +21,7 @@ #include #include +#include #include #include @@ -38,15 +39,16 @@ FiltersAPI_Filter::FiltersAPI_Filter(const std::string& theName, const std::list& theArguments) : myName(theName) { - for (std::list::const_iterator anArgIt = theArguments.begin(); - anArgIt != theArguments.end(); ++anArgIt) { - AttributeBooleanPtr aBoolAttr = + std::list::const_iterator anArgIt = theArguments.begin(); + // first attribute is usually for reversing the filter + AttributeBooleanPtr aBoolAttr = std::dynamic_pointer_cast(*anArgIt); - if (aBoolAttr) { - myReversed = aBoolAttr->value(); - continue; - } + if (aBoolAttr) { + myReversed = aBoolAttr->value(); + ++anArgIt; + } + for (; anArgIt != theArguments.end(); ++anArgIt) { AttributeSelectionListPtr aSelList = std::dynamic_pointer_cast(*anArgIt); if (aSelList) { @@ -70,6 +72,18 @@ FiltersAPI_Filter::FiltersAPI_Filter(const std::string& theName, myFilterArguments.push_back(FiltersAPI_Argument(aString->value())); continue; } + + AttributeDoublePtr aDouble = std::dynamic_pointer_cast(*anArgIt); + if (aDouble) { + myFilterArguments.push_back(FiltersAPI_Argument(aDouble->value())); + continue; + } + + AttributeBooleanPtr aBoolean = std::dynamic_pointer_cast(*anArgIt); + if (aBoolean) { + myFilterArguments.push_back(FiltersAPI_Argument(aBoolean->value())); + continue; + } } }