/*************************************************************************** PFunctionHandler.cpp Author: Andreas Suter e-mail: andreas.suter@psi.ch $Id$ ***************************************************************************/ /*************************************************************************** * Copyright (C) 2007 by Andreas Suter * * andreas.suter@psi.c * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program 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 General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #include #include #include "PFunctionHandler.h" //------------------------------------------------------------- // Constructor //------------------------------------------------------------- /** *

* * \param lines */ PFunctionHandler::PFunctionHandler(PMsrLines lines) { fValid = true; fLines = lines; // cout << endl << "in PFunctionHandler(PMsrLines lines)"; } //------------------------------------------------------------- // Destructor //------------------------------------------------------------- /** *

* */ PFunctionHandler::~PFunctionHandler() { // cout << endl << "in ~PFunctionHandler()" << endl << endl; fLines.clear(); fFuncs.clear(); } //------------------------------------------------------------- // DoParse (public) //------------------------------------------------------------- /** *

* */ bool PFunctionHandler::DoParse() { // cout << endl << "in PFunctionHandler::DoParse() ..."; bool success = true; PFunctionGrammar function; TString line; // feed the function block into the parser. Start with i=1, since i=0 is FUNCTIONS for (unsigned int i=1; i info = ast_parse(line.Data(), function, space_p); if (info.full) { // cout << endl << "parse successful ..." << endl; PFunction func(info); fFuncs.push_back(func); } else { cout << endl << "**ERROR**: FUNCTIONS parse failed in line " << fLines[i].fLineNo << endl; success = false; break; } } // check that the function numbers are unique if (success) { for (unsigned int i=0; i