+// Copyright (C) 2006-2015 CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
#ifndef _BLOCPARSER_HXX_
#define _BLOCPARSER_HXX_
#include "linkParsers.hxx"
#include "xmlrpcParsers.hxx"
#include "nodeParsers.hxx"
+#include "inlineParsers.hxx"
+#include "remoteParsers.hxx"
+#include "serverParsers.hxx"
+#include "sinlineParsers.hxx"
+#include "serviceParsers.hxx"
#include "Proc.hxx"
#include "Runtime.hxx"
#include "ForLoop.hxx"
#include "ForEachLoop.hxx"
+#include "OptimizerLoop.hxx"
#include "WhileLoop.hxx"
#include "Switch.hxx"
#include "Bloc.hxx"
_orders["property"]=0;
_orders["inline"]=2;
_orders["service"]=2;
+ _orders["server"]=2;
+ _orders["remote"]=2;
_orders["sinline"]=2;
_orders["node"]=2;
_orders["datanode"]=2;
_orders["outnode"]=2;
_orders["forloop"]=2;
_orders["foreach"]=2;
+ _orders["optimizer"]=2;
_orders["while"]=2;
_orders["switch"]=2;
_orders["bloc"]=2;
virtual void onEnd(const char *el,parser* child);
virtual void buildAttr(const XML_Char** attr)
{
+ if (!attr)
+ return;
this->required("name",attr);
for (int i = 0; attr[i]; i += 2)
{
currentProc->nodeMap[fullname]=n;
currentProc->serviceMap[fullname]=n;
}
+ virtual void remote (YACS::ENGINE::InlineNode* const& n)
+ {
+ DEBTRACE( "bloc_remote_set: " << n->getName() )
+ _bloc->edAddChild(n);
+ std::string fullname = currentProc->names.back()+n->getName();
+ currentProc->nodeMap[fullname]=n;
+ currentProc->inlineMap[fullname]=n;
+ }
+ virtual void server (YACS::ENGINE::ServerNode* const& n)
+ {
+ DEBTRACE( "bloc_server_set: " << n->getName() )
+ _bloc->edAddChild(n);
+ std::string fullname = currentProc->names.back()+n->getName();
+ currentProc->nodeMap[fullname]=n;
+ currentProc->inlineMap[fullname]=n;
+ }
virtual void node (YACS::ENGINE::InlineNode* const& n)
{
DEBTRACE( "bloc_node_set: " << n->getName() )
std::string fullname = currentProc->names.back()+b->getName();
currentProc->nodeMap[fullname]=b;
}
+ virtual void optimizer (YACS::ENGINE::OptimizerLoop* const& b)
+ {
+ DEBTRACE( "bloc_optimizer_set: " << b->getName() );
+ _bloc->edAddChild(b);
+ std::string fullname = currentProc->names.back()+b->getName();
+ currentProc->nodeMap[fullname]=b;
+ //fullname += ".splitter";
+ //currentProc->nodeMap[fullname]=b->getChildByShortName("splitter");
+ }
virtual void foreach (YACS::ENGINE::ForEachLoop* const& b)
{
DEBTRACE( "bloc_foreach_set: " << b->getName() )
else if(element == "inline")pp=&inlinetypeParser<>::inlineParser;
else if(element == "sinline")pp=&sinlinetypeParser<>::sinlineParser;
else if(element == "service")pp=&servicetypeParser<>::serviceParser;
+ else if(element == "server")pp=&servertypeParser<>::serverParser;
+ else if(element == "remote")pp=&remotetypeParser<>::remoteParser;
else if(element == "node")pp=&nodetypeParser<>::nodeParser;
else if(element == "datanode")pp=&presettypeParser<>::presetParser;
else if(element == "outnode")pp=&outnodetypeParser<>::outnodeParser;
else if(element == "bloc")pp=&bloctypeParser<>::blocParser;
else if(element == "forloop")pp=&forlooptypeParser<>::forloopParser;
else if(element == "foreach")pp=&foreachlooptypeParser<>::foreachloopParser;
+ else if(element == "optimizer")pp=&optimizerlooptypeParser<>::optimizerloopParser;
else if(element == "while")pp=&whilelooptypeParser<>::whileloopParser;
else if(element == "switch")pp=&switchtypeParser::switchParser;
else if(element == "inline")inline_(((inlinetypeParser<>*)child)->post());
else if(element == "sinline")sinline(((sinlinetypeParser<>*)child)->post());
else if(element == "service")service(((servicetypeParser<>*)child)->post());
+ else if(element == "server")server(((servertypeParser<>*)child)->post());
+ else if(element == "remote")remote(((remotetypeParser<>*)child)->post());
else if(element == "node")node(((nodetypeParser<>*)child)->post());
else if(element == "datanode")preset(((presettypeParser<>*)child)->post());
else if(element == "outnode")outnode(((outnodetypeParser<>*)child)->post());
else if(element == "bloc")bloc(((bloctypeParser<>*)child)->post());
else if(element == "forloop")forloop(((forlooptypeParser<>*)child)->post());
+ else if(element == "optimizer")optimizer(((optimizerlooptypeParser<>*)child)->post());
else if(element == "foreach")foreach(((foreachlooptypeParser<>*)child)->post());
else if(element == "while")while_(((whilelooptypeParser<>*)child)->post());
else if(element == "switch")switch_(((switchtypeParser*)child)->post());