PCMXmlStringModifier.cpp

Go to the documentation of this file.
00001 
00002 //
00003 // This source file is a part of ParCompMark
00004 // Parallel Compositing Benchmark Framework
00005 //
00006 // for latest info see http://parcompmark.sourceforge.net
00007 
00008 //
00009 // Copyright (C) 2006 IT2 ParCompMark Dev. Team
00010 // 
00011 // This program is free software; you can redistribute it and/or
00012 // modify it under the terms of the GNU General Public License
00013 // as published by the Free Software Foundation; either version 2
00014 // of the License, or (at your option) any later version.
00015 // 
00016 // This program is distributed in the hope that it will be useful,
00017 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00018 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
00019 // GNU General Public License for more details.
00020 // 
00021 // You should have received a copy of the GNU General Public License
00022 // along with this program; if not, write to the Free Software
00023 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
00024 
00025 //
00026 // Inner includes
00027 //
00028 
00029 #include "../include/PCMXmlStringModifier.h"
00030 
00031 namespace ParCompMark
00032 {
00033 
00034   //
00035   // Constructors & destructor
00036   //
00037 
00038   XmlStringModifier::XmlStringModifier()
00039   {
00040   }
00041 
00042  /*----------------------------------------------------------------------*/
00043 
00044   XmlStringModifier::~XmlStringModifier()
00045   {
00046   }
00047 
00048  /*----------------------------------------------------------------------*/
00049 
00050   //
00051   // Class methods
00052   //
00053 
00054   std::string XmlStringModifier::separateElement(const std::string & strXml, const std::string & tag)
00055   {
00056         //Find the string stored within the tag variable 
00057         std::string::size_type openTagPos = strXml.find(tag);
00058         openTagPos += tag.size();
00059         //Erase the '>' at the end of tag
00060         openTagPos++;
00061         //Erase the opening tag from the string
00062         std::string strTag = strXml;
00063         strTag.erase(0, openTagPos);
00064         //Find the string stored within the tag variable once again
00065         std::string::size_type closingTagPos = strTag.find(tag);
00066         //Erase the closing tag
00067         strTag.erase(closingTagPos, std::string::npos);
00068         strTag.erase(strTag.rfind("</"), std::string::npos);
00069 
00070         return strTag;
00071   }
00072 
00073  /*----------------------------------------------------------------------*/
00074 
00075   std::string::size_type XmlStringModifier::border(const std::string & strXml, const std::string & tag)
00076   {
00077         //Get the Value of the element specified in innerTag
00078         std::string strValue(strXml);
00079         strValue.erase(0, 1);
00080         strValue.erase(strValue.find(tag) + tag.length(), std::string::npos);
00081         strValue = "</" + strValue + ">";
00082 
00083         std::string strElement(strXml);
00084         std::string::size_type borderPos = strElement.find(strValue) + strValue.length();
00085 
00086         return borderPos;
00087   }
00088 
00089  /*----------------------------------------------------------------------*/
00090 
00091 }