From a914433b82d5681eadfb1612306c707104c03576 Mon Sep 17 00:00:00 2001 From: jean-pierre roux Date: Tue, 22 Jan 2008 17:00:17 +0000 Subject: [PATCH] Forgot to add this one! --- kernel/src/bbtkTranscriptor.h | 203 ++++++++++++++++++++++++++++++++++ 1 file changed, 203 insertions(+) create mode 100644 kernel/src/bbtkTranscriptor.h diff --git a/kernel/src/bbtkTranscriptor.h b/kernel/src/bbtkTranscriptor.h new file mode 100644 index 0000000..5ab590a --- /dev/null +++ b/kernel/src/bbtkTranscriptor.h @@ -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 + +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& 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 mCurrent; + + /// flag which is true when we are inside a Define/EndDefine block + // bool mDefineFlag; + + /// The input values of the Root ComplexBlackBox + std::map 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 -- 2.47.1