--- /dev/null
+#include "bbstdGetIntervalNumberFromIntervalList.h"
+#include "bbstdPackage.h"
+
+namespace bbstd
+{
+
+BBTK_ADD_BLACK_BOX_TO_PACKAGE(std,GetIntervalNumberFromIntervalList)
+BBTK_BLACK_BOX_IMPLEMENTATION(GetIntervalNumberFromIntervalList,bbtk::AtomicBlackBox);
+
+void GetIntervalNumberFromIntervalList::Process()
+{
+ // Sets the default value, in the case of an inexisting value in the intervals.
+ bbSetOutputIntervalNumber(bbGetInputErrorValue());
+ bool found = false;
+
+ // Looks for the first interval containing the input value.
+ for (int i = 0; i < (int) bbGetInputIntervalList().size() - 1; i++)
+ {
+ if (found == false)
+ {
+ if (bbGetInputValue() >= bbGetInputIntervalList()[i] && bbGetInputValue() < bbGetInputIntervalList()[i+1])
+ {
+ bbSetOutputIntervalNumber(i);
+ found = true;
+ }
+ }
+ }
+
+}
+
+void GetIntervalNumberFromIntervalList::bbUserSetDefaultValues()
+{
+ bbSetInputErrorValue(-1.0);
+}
+
+void GetIntervalNumberFromIntervalList::bbUserInitializeProcessing()
+{
+
+}
+
+void GetIntervalNumberFromIntervalList::bbUserFinalizeProcessing()
+{
+
+}
+}
+// EO namespace bbstd
+
+
--- /dev/null
+#ifndef __bbstdGetIntervalNumberFromIntervalList_h_INCLUDED__
+#define __bbstdGetIntervalNumberFromIntervalList_h_INCLUDED__
+#include "bbstd_EXPORT.h"
+#include "bbtkAtomicBlackBox.h"
+
+namespace bbstd
+{
+
+class bbstd_EXPORT GetIntervalNumberFromIntervalList
+ :
+ public bbtk::AtomicBlackBox
+{
+ BBTK_BLACK_BOX_INTERFACE(GetIntervalNumberFromIntervalList,bbtk::AtomicBlackBox);
+
+ BBTK_DECLARE_INPUT(Value, double);
+ BBTK_DECLARE_INPUT(IntervalList, std::vector<double>);
+ BBTK_DECLARE_INPUT(ErrorValue, double);
+
+ BBTK_DECLARE_OUTPUT(IntervalNumber, int);
+
+ BBTK_PROCESS(Process);
+ void Process();
+};
+
+ BBTK_BEGIN_DESCRIBE_BLACK_BOX(GetIntervalNumberFromIntervalList,bbtk::AtomicBlackBox);
+ BBTK_NAME("GetIntervalNumberFromIntervalList");
+ BBTK_AUTHOR("Claire Mouton");
+ BBTK_DESCRIPTION("Providing a value and a list of intervals, the box returns the first interval number containing the input value. Interval numbers start at 0.");
+ BBTK_CATEGORY("");
+ BBTK_INPUT(GetIntervalNumberFromIntervalList,Value,"The value to be looked for in the interval list.",double,"");
+ BBTK_INPUT(GetIntervalNumberFromIntervalList,IntervalList,"Interval List provided as a list of double values corresponding to intervals. For example, '0 10 20 50' corresponds to the three following intervals 0/[0; 10[ 1/[10; 20[ 2/[20; 50[.",std::vector<double>,"");
+ BBTK_INPUT(GetIntervalNumberFromIntervalList,ErrorValue,"The output value returned if the value is not in any interval (default is -1).",double,"");
+ BBTK_OUTPUT(GetIntervalNumberFromIntervalList,IntervalNumber,"The (first) interval number containing the input value. If the value is not in any interval, the output is set to the ErrorValue (default is -1).",int,"");
+
+BBTK_END_DESCRIBE_BLACK_BOX(GetIntervalNumberFromIntervalList);
+}
+// EO namespace bbstd
+
+#endif // __bbstdGetIntervalNumberFromIntervalList_h_INCLUDED__
+