]> Creatis software - bbtk.git/commitdiff
#2540 BBTK Feature New Normal - Math operation box
authordavila <eduardo.davila@creatis.insa-lyon.fr>
Thu, 19 Feb 2015 14:58:30 +0000 (15:58 +0100)
committerdavila <eduardo.davila@creatis.insa-lyon.fr>
Thu, 19 Feb 2015 14:58:30 +0000 (15:58 +0100)
packages/std/src/bbstdMathOperation.cxx [new file with mode: 0644]
packages/std/src/bbstdMathOperation.h [new file with mode: 0644]

diff --git a/packages/std/src/bbstdMathOperation.cxx b/packages/std/src/bbstdMathOperation.cxx
new file mode 100644 (file)
index 0000000..be243d7
--- /dev/null
@@ -0,0 +1,121 @@
+//===== 
+// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
+//===== 
+#include "bbstdMathOperation.h"
+#include "bbstdPackage.h"
+
+#include <math.h>
+#include <stdlib.h>
+#include <time.h>
+
+namespace bbstd
+{
+
+BBTK_ADD_BLACK_BOX_TO_PACKAGE(std,MathOperation)
+BBTK_BLACK_BOX_IMPLEMENTATION(MathOperation,bbtk::AtomicBlackBox);
+//===== 
+// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
+//===== 
+void MathOperation::Process()
+{
+
+// THE MAIN PROCESSING METHOD BODY
+//   Here we simply set the input 'In' value to the output 'Out'
+//   And print out the output value
+// INPUT/OUTPUT ACCESSORS ARE OF THE FORM :
+//    void bbSet{Input|Output}NAME(const TYPE&)
+//    const TYPE& bbGet{Input|Output}NAME() const 
+//    Where :
+//    * NAME is the name of the input/output
+//      (the one provided in the attribute 'name' of the tag 'input')
+//    * TYPE is the C++ type of the input/output
+//      (the one provided in the attribute 'type' of the tag 'input')
+
+        if (firsttime==true)
+        {
+               firsttime=false;
+      /* initialize random seed: */ 
+      srand (time(NULL));
+               if (bbGetInputType()==7) acum=bbGetInputIn1();
+        }
+
+    if (bbGetInputType()==0) bbSetOutputOut( bbGetInputIn1() +  bbGetInputIn2() );
+    if (bbGetInputType()==1) bbSetOutputOut( bbGetInputIn1() -  bbGetInputIn2() );
+    if (bbGetInputType()==2) bbSetOutputOut( bbGetInputIn1() *  bbGetInputIn2() );
+
+    if (bbGetInputType()==3)
+    {
+                        if (bbGetInputIn2()!=0)  bbSetOutputOut( bbGetInputIn1() /  bbGetInputIn2() );
+              else  bbSetOutputOut( 99999999 );
+    }
+
+    if (bbGetInputType()==4) bbSetOutputOut( sqrt( bbGetInputIn1() ) );
+
+    if (bbGetInputType()==5)
+        {
+                                if (bbGetInputIn2()>0)  bbSetOutputOut( log( bbGetInputIn1() ) );
+              else  bbSetOutputOut( -99999999 );
+        }
+
+    if (bbGetInputType()==6) bbSetOutputOut( exp( bbGetInputIn1() ) );
+    if (bbGetInputType()==7)
+        {
+                bbSetOutputOut( acum );
+                acum++;
+       if (acum>bbGetInputIn2()) acum=bbGetInputIn1();
+        }
+    if (bbGetInputType()==8) bbSetOutputOut( rand() %  (int) (bbGetInputIn2()-bbGetInputIn1()) +  bbGetInputIn1() );
+    if (bbGetInputType()==9) bbSetOutputOut( sin( bbGetInputIn1() ) );
+    if (bbGetInputType()==10) bbSetOutputOut( cos( bbGetInputIn1() ) );
+    if (bbGetInputType()==11) bbSetOutputOut( tan( bbGetInputIn1() ) );
+    if (bbGetInputType()==12) bbSetOutputOut( asin( bbGetInputIn1() ) );
+    if (bbGetInputType()==13) bbSetOutputOut( acos( bbGetInputIn1() ) );
+    if (bbGetInputType()==14) bbSetOutputOut( atan( bbGetInputIn1() ) );
+    if (bbGetInputType()==15) bbSetOutputOut( atan2( bbGetInputIn1(),bbGetInputIn2() ) );
+}
+//===== 
+// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
+//===== 
+void MathOperation::bbUserSetDefaultValues()
+{
+
+//  SET HERE THE DEFAULT INPUT/OUTPUT VALUES OF YOUR BOX 
+//    Here we initialize the input 'In' to 0
+   bbSetInputIn1(0);
+   bbSetInputIn2(0);
+   bbSetInputType(0);
+
+   firsttime=true;
+   acum=0;
+}
+//===== 
+// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
+//===== 
+void MathOperation::bbUserInitializeProcessing()
+{
+
+//  THE INITIALIZATION METHOD BODY :
+//    Here does nothing 
+//    but this is where you should allocate the internal/output pointers 
+//    if any 
+
+  
+}
+//===== 
+// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
+//===== 
+void MathOperation::bbUserFinalizeProcessing()
+{
+
+//  THE FINALIZATION METHOD BODY :
+//    Here does nothing 
+//    but this is where you should desallocate the internal/output pointers 
+//    if any
+  
+}
+}
+// EO namespace bbstd
+
+
diff --git a/packages/std/src/bbstdMathOperation.h b/packages/std/src/bbstdMathOperation.h
new file mode 100644 (file)
index 0000000..7ab7eb0
--- /dev/null
@@ -0,0 +1,54 @@
+//===== 
+// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
+//===== 
+#ifndef __bbstdMathOperation_h_INCLUDED__
+#define __bbstdMathOperation_h_INCLUDED__
+#include "bbstd_EXPORT.h"
+#include "bbtkAtomicBlackBox.h"
+#include "iostream"
+
+namespace bbstd
+{
+
+class bbstd_EXPORT MathOperation
+ : 
+   public bbtk::AtomicBlackBox
+{
+  BBTK_BLACK_BOX_INTERFACE(MathOperation,bbtk::AtomicBlackBox);
+//===== 
+// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
+//===== 
+  BBTK_DECLARE_INPUT(In1,double);
+  BBTK_DECLARE_INPUT(In2,double);
+  BBTK_DECLARE_INPUT(Type,int);
+  BBTK_DECLARE_OUTPUT(Out,double);
+  BBTK_PROCESS(Process);
+  void Process();
+
+  bool firsttime;
+  double acum;
+
+//===== 
+// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
+//===== 
+};
+
+BBTK_BEGIN_DESCRIBE_BLACK_BOX(MathOperation,bbtk::AtomicBlackBox);
+  BBTK_NAME("MathOperation");
+  BBTK_AUTHOR("InfoDev");
+  BBTK_DESCRIPTION("No Description.");
+  BBTK_CATEGORY("empty");
+  BBTK_INPUT(MathOperation,In1,"First input",double,"");
+  BBTK_INPUT(MathOperation,In2,"Second input",double,"");
+  BBTK_INPUT(MathOperation,Type,"Type (defalult 0): 0  adition (default), 1 sustraction In1+In2, 2 multiplication In1*In2, 3 divisiuon In1/In2, 4 sqrt In1, 5 log In1, 6 exp In1, 7 incremental int [In1..In2], 8 random int [In1..In2], 9 sin In1, 10 cos In1, 11 tan In1, 12 asin In 1, 13 acos In1, 14 atan In1, 15 atan2 In1,In2 ",int,"");
+
+  BBTK_OUTPUT(MathOperation,Out,"Output",double,"");
+BBTK_END_DESCRIBE_BLACK_BOX(MathOperation);
+//===== 
+// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
+//===== 
+}
+// EO namespace bbstd
+
+#endif // __bbstdMathOperation_h_INCLUDED__
+