--- projects/cms/source/host/c++/XMLFormatter.cpp 2000/11/30 21:58:30 1.1 +++ projects/cms/source/host/c++/XMLFormatter.cpp 2002/05/18 18:15:56 1.8 @@ -1,21 +1,135 @@ -#include +/* + * i-scream central monitoring system + * Copyright (C) 2000-2002 i-scream + * + * 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. + */ -void XMLFormatter::XMLFormatter( char* newHostInfo ){ - hostInfo = "<"+newHostInfo+">"; -} +#include "XMLFormatter.h" +XMLFormatter::XMLFormatter( string newHostInfo ){ + + if ( newHostInfo != "" ){ + + xmlData += "<"; + xmlData += newHostInfo; + xmlData += ">"; + hostInfo = newHostInfo; + + } // if + stackPointer = 0; + +} // XMLFormatter + +XMLFormatter::XMLFormatter(){ + + hostInfo = ""; // null + xmlData = ""; + stackPointer = 0; + +} // XMLFormatter + +XMLFormatter::XMLFormatter( string newHostInfo, string attributes){ + + xmlData += "<"; + xmlData += newHostInfo; + xmlData += " "; + xmlData += attributes; + xmlData += ">"; + + hostInfo = newHostInfo; + + stackPointer = 0; +} // XMLFormatter + void XMLFormatter::closeNest(){ + + if ( stackPointer >= 0 ){ + + stackPointer--; + xmlData += ""; + } // if + return; -} +} // closeNest -void XMLFormatter::addNest(char* nest){ - return; -} +void XMLFormatter::addNest(string nest){ -void XMLFormatter::addElement(char* element){ - return; -} + // check it is not empty + if ( nest != "" ){ + xmlData += "<"; + xmlData += nest; + xmlData += ">"; + + // now add the nest to the stack + stack[stackPointer] = nest; + stackPointer++; + } // if + + return; +} // addNest -char* XMLFormatter::returnXML(){ - return "hellO"; -} \ No newline at end of file +void XMLFormatter::addElement(string element, string attributes, string value){ + + xmlData += "<"; + xmlData += element; + xmlData += " "; + xmlData += attributes; + xmlData += ">"; + xmlData += value; + xmlData += ""; + + return; +} // addElement + +void XMLFormatter::addElement(string element, string value){ + + if (( element != "" ) && ( value != "" )){ + xmlData += "<"; + xmlData += element; + xmlData += ">"; + xmlData += value; + xmlData += ""; + } // if + return; + +} // addElement + + +string XMLFormatter::returnXML(){ + // close as many nests as we have open, could (but shouldn't) cause + // some arraylist out of bounds errors. + for ( int count= stackPointer; count > 0; count-- ){ + // close nest + closeNest(); + } // if + + if ( hostInfo.length() > 0 ){ + xmlData += ""; + } // if + + stackPointer = 0; + + return xmlData; + +} // returnXML \ No newline at end of file