2 #include "VisitorSaveSalomeSchema.hxx"
3 #include "DataNode.hxx"
4 #include "PresetNode.hxx"
6 #include "StudyNodes.hxx"
7 #include "ComposedNode.hxx"
8 #include "PresetPorts.hxx"
9 #include "StudyPorts.hxx"
10 #include "TypeCode.hxx"
18 using namespace YACS::ENGINE;
22 #include "YacsTrace.hxx"
24 VisitorSaveSalomeSchema::VisitorSaveSalomeSchema(ComposedNode *root)
25 : VisitorSaveSchema(root)
29 VisitorSaveSalomeSchema::~VisitorSaveSalomeSchema()
33 void VisitorSaveSalomeSchema::visitPresetNode(DataNode *node)
35 DEBTRACE("START visitPresetNode " << _root->getChildName(node));
37 int depth = depthNode(node);
38 _out << indent(depth) << "<datanode name=\"" << node->getName() << "\"";
39 string ref = node->getRef();
40 if (!ref.empty()) _out << " ref=\"" << ref << "\"";
41 if (node->getState() == YACS::DISABLED)
42 _out << " state=\"disabled\">" << endl;
45 writeProperties(node);
46 writeDataNodeParameters(node);
47 _out << indent(depth) << "</datanode>" << endl;
49 DEBTRACE("END visitPresetNode " << _root->getChildName(node));
52 void VisitorSaveSalomeSchema::visitOutNode(DataNode *node)
54 DEBTRACE("START visitOutNode " << _root->getChildName(node));
56 int depth = depthNode(node);
57 _out << indent(depth) << "<outnode name=\"" << node->getName() << "\"";
58 string ref = node->getRef();
59 if (!ref.empty()) _out << " ref=\"" << ref << "\"";
60 if (node->getState() == YACS::DISABLED)
61 _out << " state=\"disabled\">" << endl;
64 writeProperties(node);
65 writeOutNodeParameters(node);
66 _out << indent(depth) << "</outnode>" << endl;
68 DEBTRACE("END visitOutNode " << _root->getChildName(node));
71 void VisitorSaveSalomeSchema::visitStudyInNode(DataNode *node)
73 DEBTRACE("START visitStudyInNode " << _root->getChildName(node));
75 int depth = depthNode(node);
76 _out << indent(depth) << "<datanode name=\"" << node->getName() << "\" kind=\"study\"";
77 string ref = node->getRef();
78 if (!ref.empty()) _out << " ref=\"" << ref << "\"";
79 if (node->getState() == YACS::DISABLED)
80 _out << " state=\"disabled\">" << endl;
83 writeProperties(node);
84 writeStudyInNodeParameters(node);
85 _out << indent(depth) << "</datanode>" << endl;
87 DEBTRACE("END visitStudyInNode " << _root->getChildName(node));
90 void VisitorSaveSalomeSchema::visitStudyOutNode(DataNode *node)
92 DEBTRACE("START visitStudyOutNode " << _root->getChildName(node));
94 int depth = depthNode(node);
95 _out << indent(depth) << "<outnode name=\"" << node->getName() << "\" kind=\"study\"";
96 string ref = node->getRef();
97 if (!ref.empty()) _out << " ref=\"" << ref << "\"";
98 if (node->getState() == YACS::DISABLED)
99 _out << " state=\"disabled\">" << endl;
102 writeProperties(node);
103 writeStudyOutNodeParameters(node);
104 _out << indent(depth) << "</outnode>" << endl;
106 DEBTRACE("END visitStudyOutNode " << _root->getChildName(node));
109 void VisitorSaveSalomeSchema::writeDataNodeParameters(DataNode *node)
111 int depth = depthNode(node)+1;
112 list<OutputPort*> listOfOutputPorts = node->getSetOfOutputPort();
113 for (list<OutputPort*>::iterator it = listOfOutputPorts.begin(); it != listOfOutputPorts.end(); ++it)
115 _out << indent(depth) << "<parameter name=\"" << (*it)->getName() << "\" type=\""
116 << (*it)->edGetType()->name() << "\">" << endl;
117 OutputPresetPort *outp = dynamic_cast<OutputPresetPort*>(*it);
119 _out << indent(depth+1) << outp->getData();
120 _out << indent(depth) << "</parameter>" << endl;
124 void VisitorSaveSalomeSchema::writeStudyInNodeParameters(DataNode *node)
126 int depth = depthNode(node)+1;
127 list<OutputPort*> listOfOutputPorts = node->getSetOfOutputPort();
128 for (list<OutputPort*>::iterator it = listOfOutputPorts.begin(); it != listOfOutputPorts.end(); ++it)
130 _out << indent(depth) << "<parameter name=\"" << (*it)->getName() << "\" type=\""
131 << (*it)->edGetType()->name() << "\" ref=\"";
132 OutputStudyPort *outp = dynamic_cast<OutputStudyPort*>(*it);
134 _out << outp->getData() << "\"/>" << endl;
138 void VisitorSaveSalomeSchema::writeOutNodeParameters(DataNode *node)
140 int depth = depthNode(node)+1;
141 list<InputPort*> listOfInputPorts = node->getSetOfInputPort();
142 for (list<InputPort*>::iterator it = listOfInputPorts.begin(); it != listOfInputPorts.end(); ++it)
144 _out << indent(depth) << "<parameter name=\"" << (*it)->getName() << "\" type=\""
145 << (*it)->edGetType()->name() << "\"/>" << endl;
149 void VisitorSaveSalomeSchema::writeStudyOutNodeParameters(DataNode *node)
151 int depth = depthNode(node)+1;
152 list<InputPort*> listOfInputPorts = node->getSetOfInputPort();
153 for (list<InputPort*>::iterator it = listOfInputPorts.begin(); it != listOfInputPorts.end(); ++it)
155 _out << indent(depth) << "<parameter name=\"" << (*it)->getName() << "\" type=\""
156 << (*it)->edGetType()->name() << "\" ref=\"";
157 InputStudyPort *inp = dynamic_cast<InputStudyPort*>(*it);
159 _out << inp->getData() << "\"/>" << endl;