]> Creatis software - bbtk.git/commitdiff
Feature #1648 Add a box finding a value in a list of intervals.
authorClaire Mouton <Claire.Mouton@creatis.insa-lyon.fr>
Wed, 3 Oct 2012 12:54:14 +0000 (12:54 +0000)
committerClaire Mouton <Claire.Mouton@creatis.insa-lyon.fr>
Wed, 3 Oct 2012 12:54:14 +0000 (12:54 +0000)
packages/std/src/bbstdGetIntervalNumberFromIntervalList.cxx [new file with mode: 0644]
packages/std/src/bbstdGetIntervalNumberFromIntervalList.h [new file with mode: 0644]

diff --git a/packages/std/src/bbstdGetIntervalNumberFromIntervalList.cxx b/packages/std/src/bbstdGetIntervalNumberFromIntervalList.cxx
new file mode 100644 (file)
index 0000000..37ee9e6
--- /dev/null
@@ -0,0 +1,48 @@
+#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
+
+
diff --git a/packages/std/src/bbstdGetIntervalNumberFromIntervalList.h b/packages/std/src/bbstdGetIntervalNumberFromIntervalList.h
new file mode 100644 (file)
index 0000000..7a63ea7
--- /dev/null
@@ -0,0 +1,40 @@
+#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__
+