]> Creatis software - bbtk.git/commitdiff
Forgot to add this one!
authorjean-pierre roux <jean-pierre.roux@creatis.insa-lyon.fr>
Tue, 22 Jan 2008 17:00:17 +0000 (17:00 +0000)
committerjean-pierre roux <jean-pierre.roux@creatis.insa-lyon.fr>
Tue, 22 Jan 2008 17:00:17 +0000 (17:00 +0000)
kernel/src/bbtkTranscriptor.h [new file with mode: 0644]

diff --git a/kernel/src/bbtkTranscriptor.h b/kernel/src/bbtkTranscriptor.h
new file mode 100644 (file)
index 0000000..5ab590a
--- /dev/null
@@ -0,0 +1,203 @@
+/*=========================================================================
+                                                                                
+  Program:   bbtk
+  Module:    $RCSfile: bbtkTranscriptor.h,v $ $
+  Language:  C++
+  Date:      $Date: 2008/01/22 17:00:17 $
+  Version:   $Revision: 1.1 $
+                                                                                
+  Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
+  l'Image). All rights reserved. See Doc/License.txt or
+  http://www.creatis.insa-lyon.fr/Public/bbtk/License.html for details.
+                                                                                
+     This software is distributed WITHOUT ANY WARRANTY; without even
+     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+     PURPOSE.  See the above copyright notices for more information.
+                                                                                
+=========================================================================*/
+/**
+ *  \file 
+ *  \brief class Transcriptor: level 0 of script C++ translation (header)
+ */
+/**
+ *  \class bbtk::Transcriptor 
+ *  \brief class Transcriptor: level 0 of script C++ translation 
+ */
+#ifndef __bbtkTranscriptor_h__
+#define __bbtkTranscriptor_h__ 
+
+#include "bbtkVirtualExec.h"
+
+#include <iostream>
+
+namespace bbtk
+{
+
+  class /*BBTK_EXPORT*/ Transcriptor : public VirtualExec
+  {
+
+  public:  
+
+    /// Constructor
+    Transcriptor(std::string filename);
+      
+    /// Destructor
+    ~Transcriptor( );
+    
+    /// Sets the inputs of the workspace : 
+    void SetInputs(const std::map<std::string,std::string>& m) { mInputs = m; }
+
+    /// Puts the executer in "no exec" mode, 
+    /// which creates but does not execute pipelines 
+
+    //void SetNoExecMode(bool b) { mNoExecMode = b; }
+    void SetNoExecMode(bool b)
+    {
+       m_Fp << "e->SetNoExecMode(true);" << std::endl;      
+    }    
+
+    bool GetNoExecMode() const { return mNoExecMode; }
+    /*
+    bool GetNoExecMode() const 
+    {
+      // cannot compile, since ethos is 'const' !
+      //m_Fp << "e->GetNoExecMode(true);" << std::endl;      
+    }
+    */
+    /// Sets the mode of dialog of the executer for Root inputs 
+    void SetDialogMode(DialogModeType t) { mDialogMode = t; }
+
+    /// Starts the definition of a new ComplexBlackBox in package pack
+    /// scriptfilename is the file from which the def is read
+    void Define (const std::string &name,
+                const std::string& pack,
+                const std::string &scriptfilename);
+
+    /// End the definition of a ComplexBlackBox
+    void EndDefine ();
+
+    /// Creates a new black box in current complex box
+    void Create ( const std::string& boxType, const std::string& boxName);
+
+    /// Destroys a black box
+    void Destroy (const std::string &boxName);
+
+    /// Connects the output boxOutput to the input boxInput
+    void Connect (const std::string &boxfrom,
+                 const std::string &output,
+                 const std::string &boxto,
+                 const std::string &input);
+
+    /// Updates the box 
+    /// would 'Execute' be more meaningfull ?
+    void Update (const std::string &box);
+
+    /// Defines an input of the current complex box
+    void DefineInput (const std::string &name,
+                     const std::string &box,
+                     const std::string &input,
+                     const std::string &help);
+
+    /// Defines an output of the current complex box
+    void DefineOutput (const std::string &name,
+                      const std::string &box,
+                      const std::string &output,
+                      const std::string &help);     
+  
+    /// sets the input of the box with the value
+    void Set (const std::string &box, 
+             const std::string &input, 
+             const std::string &value);
+
+    /// gets the output of the box
+    std::string Get (const std::string &box, 
+                    const std::string &output);
+
+    /// changes the workspace name
+    void SetWorkspaceName( const std::string& n );
+
+    ///Adds the authorName to the Box's author list
+    void Author(const std::string &authorName);
+
+    /// The description string which explains what does the ComplexBox
+    void Description(const std::string & d);
+
+    /// prints the list off the boxes of the current box
+    void PrintBoxes();
+
+   /// Generate a HTML with a gif file with the actual pipeline (Graphviz-dot needed). Returns the file path
+    std::string ShowGraph(const std::string &nameblackbox, 
+                         const std::string &detailStr, 
+                         const std::string &levelStr,
+                         const std::string &output_file,
+                         const std::string &custom_header,
+                         const std::string &custom_title,
+                         bool system_display = true);
+
+   /// Generate a HTML with a gif file with the actual pipeline (Graphviz-dot needed). Returns the file path
+    std::string ShowGraphInstances(const std::string &nameblackbox, int detail, int level, bool system_display=true);
+
+   /// Description of the actual pipeline
+      void ShowRelations(const std::string &nameblackbox, const std::string &detailStr, const std::string &levelStr);
+
+      void Reset();
+
+  //  static const std::string& GetObjectDescription() 
+  //  { static std::string s("Executer"); return s; }
+
+  protected:
+
+  private:
+
+    /// Gets the current working black box 
+    ComplexBlackBoxDescriptor* Current() { return mCurrent.back().box; }
+    
+    /// Returns true when we are inside a define/endefine block
+    //    bool InDefinitionBlock() { return (mCurrent.size()>1); }
+
+    //==================================================================
+    // ATTRIBUTES
+     
+    /// The factory used
+    //   Factory* mFactory;
+
+    /// The Root Package
+    Package* mPackage;
+    
+    /// The root ComplexBlackBox, in which operations are done when outside a define/endefine block
+    /// Its name in bbi is 'workspace'  
+    ComplexBlackBoxDescriptor* mRoot;
+    
+    /// Struct that stores info on user defined complex black boxes
+    struct CBBDefinition
+    {
+      ComplexBlackBoxDescriptor* box;
+      std::string package;
+      CBBDefinition(ComplexBlackBoxDescriptor* d, const std::string& p )
+        : box(d), package(p) {}
+    };
+
+    /// The stack of current working ComplexBlackBox
+    /// (is a stack for nested definitions)
+    /// only contains the root when outside a define/endefine block
+    std::deque<CBBDefinition> mCurrent;
+
+    /// flag which is true when we are inside a Define/EndDefine block
+    //    bool mDefineFlag;
+    
+    /// The input values of the Root ComplexBlackBox
+    std::map<std::string,std::string> mInputs;
+    
+    /// no exec mode flag
+    bool mNoExecMode;
+
+    /// Dialog mode
+    DialogModeType mDialogMode;
+    
+    /// File Pointer, to hold generated C++ code.
+   // std::ofstream *m_Fp;
+   std::ofstream m_Fp;
+  };
+}
+#endif