00001 /* 00002 Copyright 2007, 2008, 2009, 2010, 2011 Instituto de Sistemas e Robotica, Instituto Superior Tecnico 00003 00004 This file is part of MeRMaID. 00005 00006 MeRMaID is free software: you can redistribute it and/or modify 00007 it under the terms of the GNU Lesser General Public License as published by 00008 the Free Software Foundation, either version 3 of the License, or 00009 (at your option) any later version. 00010 00011 MeRMaID is distributed in the hope that it will be useful, 00012 but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 GNU Lesser General Public License for more details. 00015 00016 You should have received a copy of the GNU Lesser General Public License 00017 along with MeRMaID. If not, see <http://www.gnu.org/licenses/>. 00018 */ 00019 00020 00021 00022 /** 00023 * @Filename XmlElementVector.hpp 00024 * @Description XmlElementVector class definition. 00025 * @Status Implementing 00026 * @Version $Id: XmlElementVector.hpp 1 2011-03-04 18:13:18Z jreis $ 00027 * @Maintainer Nelson Ramos (nmsra@mega.ist.utl.pt) 00028 */ 00029 00030 // XmlElementVector is used in XmlElement, so it needs to be defined before. 00031 // Including this here will cause XmlElementVector to be defined first. 00032 #include "XmlElement.hpp" 00033 00034 #ifndef __XML_XMLELEMENTVECTOR_H_ 00035 #define __XML_XMLELEMENTVECTOR_H_ 00036 00037 namespace mermaid 00038 { 00039 namespace support 00040 { 00041 namespace xml 00042 { 00043 class XmlElementVector; 00044 } 00045 } 00046 } 00047 00048 #include <string> 00049 00050 00051 00052 00053 00054 namespace mermaid 00055 { 00056 namespace support 00057 { 00058 namespace xml 00059 { 00060 using std::string; 00061 00062 using boost::shared_ptr; 00063 00064 /** 00065 * @Class XmlElementVector XmlElementVector.hpp "XmlElementVector.hpp" 00066 * @Description Class representing an XML Element vector. 00067 * @Author Marco Barbosa 00068 */ 00069 class XmlElementVector : public vector<shared_ptr<XmlElement> > 00070 { 00071 public: 00072 /** 00073 * @Description Generates an XmlElementVector that is a subset of 00074 * @Description the current one. The XmlElements inside the 00075 * @Description resulting XmlElementVector have their name equal 00076 * @Description to the string passed as argument. 00077 * @Argument name The name of the desired XmlElements 00078 * @Returns The resulting XmlElementVector 00079 */ 00080 XmlElementVector getElementsWithName (string name); 00081 00082 /** 00083 * @Description Gets the first XmlElement that has the name 00084 * @Description equal to the string passed as argument. 00085 * @Argument name The name of the desired XmlElement 00086 * @Returns The desired XmlElement or NULL if it doesn't exist 00087 */ 00088 shared_ptr<XmlElement> getFirstElementWithName (string name); 00089 }; // class XmlElementVector 00090 } // namespace xml 00091 } // namespace support 00092 } // namespace mermaid 00093 00094 #endif // __XML_XMLELEMENTVECTOR_H_