]> SALOME platform Git repositories - modules/yacs.git/blob - src/engine/Proc.hxx
Salome HOME
merge from branch DEV tag mergeto_trunk_04apr08
[modules/yacs.git] / src / engine / Proc.hxx
1 #ifndef _PROC_HXX_
2 #define _PROC_HXX_
3
4 #include "Bloc.hxx"
5 #include <string>
6 #include <iostream>
7 #include <list>
8 #include <map>
9
10 namespace YACS
11 {
12   namespace ENGINE
13   {
14     class TypeCode;
15     class TypeCodeObjref;
16     class InlineNode;
17     class ServiceNode;
18     class Container;
19     class ComponentInstance;
20     class Logger;
21
22     class Proc: public Bloc
23     {
24     public:
25       Proc(const std::string& name);
26       virtual ~Proc();
27       virtual TypeCode *createType(const std::string& name, const std::string& kind);
28       virtual TypeCode *createInterfaceTc(const std::string& id, const std::string& name, 
29                                          std::list<TypeCodeObjref *> ltc);
30       virtual TypeCode *createSequenceTc (const std::string& id, const std::string& name, 
31                                          TypeCode *content);
32       virtual TypeCode *createStructTc (const std::string& id, const std::string& name);
33       virtual TypeCode* getTypeCode(const std::string& name);
34       virtual void setTypeCode(const std::string& name,TypeCode *t);
35       virtual void accept(Visitor *visitor);
36
37       YACS::StatesForNode getNodeState(int numId);
38       std::string getInPortValue(int nodeNumId, std::string portName);
39       std::string getOutPortValue(int nodeNumId, std::string portName);
40       std::string getNodeErrorDetails(int nodeNumId);
41       std::string getNodeErrorReport(int nodeNumId);
42       std::string getNodeContainerLog(int nodeNumId);
43       std::string getXMLState(int numId);
44       std::list<int> getNumIds();
45       std::list<std::string> getIds();
46       virtual Logger *getLogger(const std::string& name);
47
48       virtual void writeDot(std::ostream &os) const;
49       void setName(const std::string& name); // Used by GUI to display graph name
50       virtual std::string typeName() {return "YACS__ENGINE__Proc";}
51
52       friend std::ostream & operator<< ( std::ostream &os, const Proc& p);
53       std::map<std::string, Node*> nodeMap;
54       std::map<std::string, ServiceNode*> serviceMap;
55       std::map<std::string, InlineNode*> inlineMap;
56       std::map<std::string, TypeCode*> typeMap;
57       std::map<std::string, Container*> containerMap;
58       std::map<std::pair<std::string,int>, ComponentInstance*> componentInstanceMap;
59       std::vector<std::string> names;
60
61       typedef std::map<std::string, Logger*> LoggerMap;
62       LoggerMap _loggers;
63       virtual bool getEdition(){return _edition;}
64       virtual void setEdition(bool edition);
65       virtual void modified();
66     protected:
67       bool _edition;
68
69     };
70   }
71 }
72
73 #endif