X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2Fyacsloader%2FcontainerParsers.cxx;h=e285e2f76a2226017b12d23ca07b07baea099af8;hb=6ba49e820fe6fae65b15b38fbeeb4698f2aa902d;hp=72bb00d2f34e30fb6e004aff7ef21e14fa8d2720;hpb=f3b2b68ffecc5033287a7a255c8507f8989fb87f;p=modules%2Fyacs.git diff --git a/src/yacsloader/containerParsers.cxx b/src/yacsloader/containerParsers.cxx index 72bb00d2f..e285e2f76 100644 --- a/src/yacsloader/containerParsers.cxx +++ b/src/yacsloader/containerParsers.cxx @@ -1,9 +1,9 @@ -// Copyright (C) 2006-2013 CEA/DEN, EDF R&D +// Copyright (C) 2006-2021 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. +// 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 @@ -19,6 +19,7 @@ #include "containerParsers.hxx" #include "propertyParsers.hxx" +#include "HomogeneousPoolContainer.hxx" //#define _DEVDEBUG_ #include "YacsTrace.hxx" @@ -31,6 +32,8 @@ namespace YACS void machinetypeParser::buildAttr(const XML_Char** attr) { + if (!attr) + return; required("name",attr); for (int i = 0; attr[i]; i += 2) { @@ -46,6 +49,8 @@ namespace YACS void containertypeParser::buildAttr(const XML_Char** attr) { + if (!attr) + return; required("name",attr); for (int i = 0; attr[i]; i += 2) { @@ -58,6 +63,7 @@ namespace YACS parser* pp=&parser::main_parser; if(element == "machine")pp=&machinetypeParser::machineParser; if(element == "property")pp=&propertytypeParser::propertyParser; + if(element == "initializescriptkey")pp=&codetypeParser::codeParser; SetUserDataAndPush(pp); pp->init(); pp->pre(); @@ -68,6 +74,7 @@ namespace YACS std::string element(el); if(element == "machine")machine_(((machinetypeParser*)child)->post()); if(element == "property")property(((propertytypeParser*)child)->post()); + if(element == "initializescriptkey")initializescriptkey(((codetypeParser*)child)->post()); } void containertypeParser::pre () { @@ -85,6 +92,11 @@ namespace YACS DEBTRACE( "property_set: " << prop._name << " " << prop._value ); _container._props[prop._name]=prop._value; } + void containertypeParser::initializescriptkey(const myfunc& f) + { + _container._props[YACS::ENGINE::HomogeneousPoolContainer::INITIALIZE_SCRIPT_KEY]=f._code; + } + mycontainer containertypeParser::post() { //mincount("machine",1); @@ -93,6 +105,8 @@ namespace YACS void loadtypeParser::buildAttr(const XML_Char** attr) { + if (!attr) + return; required("container",attr); for (int i = 0; attr[i]; i += 2) {