Blame include/cppunit/tools/XmlElement.h

Packit Service e31359
#ifndef CPPUNIT_TOOLS_XMLELEMENT_H
Packit Service e31359
#define CPPUNIT_TOOLS_XMLELEMENT_H
Packit Service e31359
Packit Service e31359
#include <cppunit/Portability.h>
Packit Service e31359
Packit Service e31359
#if CPPUNIT_NEED_DLL_DECL
Packit Service e31359
#pragma warning( push )
Packit Service e31359
#pragma warning( disable: 4251 )  // X needs to have dll-interface to be used by clients of class Z
Packit Service e31359
#endif
Packit Service e31359
Packit Service e31359
#include <deque>
Packit Service e31359
#include <string>
Packit Service e31359
Packit Service e31359
Packit Service e31359
CPPUNIT_NS_BEGIN
Packit Service e31359
Packit Service e31359
Packit Service e31359
class XmlElement;
Packit Service e31359
Packit Service e31359
#if CPPUNIT_NEED_DLL_DECL
Packit Service e31359
//  template class CPPUNIT_API std::deque<XmlElement *>;
Packit Service e31359
#endif
Packit Service e31359
Packit Service e31359
Packit Service e31359
/*! \brief A XML Element.
Packit Service e31359
 * 
Packit Service e31359
 * A XML element has:
Packit Service e31359
 * - a name, specified on construction,
Packit Service e31359
 * - a content, specified on construction (may be empty),
Packit Service e31359
 * - zero or more attributes, added with addAttribute(),
Packit Service e31359
 * - zero or more child elements, added with addElement().
Packit Service e31359
 */
Packit Service e31359
class CPPUNIT_API XmlElement
Packit Service e31359
{
Packit Service e31359
public:
Packit Service e31359
  /*! \brief Constructs an element with the specified name and string content.
Packit Service e31359
   * \param elementName Name of the element. Must not be empty.
Packit Service e31359
   * \param content Content of the element.
Packit Service e31359
   */
Packit Service e31359
  XmlElement( std::string elementName,
Packit Service e31359
              std::string content ="" );
Packit Service e31359
Packit Service e31359
  /*! \brief Constructs an element with the specified name and numeric content.
Packit Service e31359
   * \param elementName Name of the element. Must not be empty.
Packit Service e31359
   * \param numericContent Content of the element.
Packit Service e31359
   */
Packit Service e31359
  XmlElement( std::string elementName,
Packit Service e31359
              int numericContent );
Packit Service e31359
Packit Service e31359
  /*! \brief Destructs the element and its child elements.
Packit Service e31359
   */
Packit Service e31359
  virtual ~XmlElement();
Packit Service e31359
Packit Service e31359
  /*! \brief Returns the name of the element.
Packit Service e31359
   * \return Name of the element.
Packit Service e31359
   */
Packit Service e31359
  std::string name() const;
Packit Service e31359
Packit Service e31359
  /*! \brief Returns the content of the element.
Packit Service e31359
   * \return Content of the element.
Packit Service e31359
   */
Packit Service e31359
  std::string content() const;
Packit Service e31359
Packit Service e31359
  /*! \brief Sets the name of the element.
Packit Service e31359
   * \param name New name for the element.
Packit Service e31359
   */
Packit Service e31359
  void setName( const std::string &name );
Packit Service e31359
Packit Service e31359
  /*! \brief Sets the content of the element.
Packit Service e31359
   * \param content New content for the element.
Packit Service e31359
   */
Packit Service e31359
  void setContent( const std::string &content );
Packit Service e31359
Packit Service e31359
  /*! \overload void setContent( const std::string &content )
Packit Service e31359
   */
Packit Service e31359
  void setContent( int numericContent );
Packit Service e31359
Packit Service e31359
  /*! \brief Adds an attribute with the specified string value.
Packit Service e31359
   * \param attributeName Name of the attribute. Must not be an empty.
Packit Service e31359
   * \param value Value of the attribute.
Packit Service e31359
   */
Packit Service e31359
  void addAttribute( std::string attributeName,
Packit Service e31359
                     std::string value );
Packit Service e31359
Packit Service e31359
  /*! \brief Adds an attribute with the specified numeric value.
Packit Service e31359
   * \param attributeName Name of the attribute. Must not be empty.
Packit Service e31359
   * \param numericValue Numeric value of the attribute.
Packit Service e31359
   */
Packit Service e31359
  void addAttribute( std::string attributeName,
Packit Service e31359
                     int numericValue );
Packit Service e31359
Packit Service e31359
  /*! \brief Adds a child element to the element.
Packit Service e31359
   * \param element Child element to add. Must not be \c NULL.
Packit Service e31359
   */
Packit Service e31359
  void addElement( XmlElement *element );
Packit Service e31359
Packit Service e31359
  /*! \brief Returns the number of child elements.
Packit Service e31359
   * \return Number of child elements (element added with addElement()).
Packit Service e31359
   */
Packit Service e31359
  int elementCount() const;
Packit Service e31359
Packit Service e31359
  /*! \brief Returns the child element at the specified index.
Packit Service e31359
   * \param index Zero based index of the element to return.
Packit Service e31359
   * \returns Element at the specified index. Never \c NULL.
Packit Service e31359
   * \exception std::invalid_argument if \a index < 0 or index >= elementCount().
Packit Service e31359
   */
Packit Service e31359
  XmlElement *elementAt( int index ) const;
Packit Service e31359
Packit Service e31359
  /*! \brief Returns the first child element with the specified name.
Packit Service e31359
   * \param name Name of the child element to return.
Packit Service e31359
   * \return First child element found which is named \a name.
Packit Service e31359
   * \exception std::invalid_argument if there is no child element with the specified
Packit Service e31359
   *            name.
Packit Service e31359
   */
Packit Service e31359
  XmlElement *elementFor( const std::string &name ) const;
Packit Service e31359
Packit Service e31359
  /*! \brief Returns a XML string that represents the element.
Packit Service e31359
   * \param indent String of spaces representing the amount of 'indent'.
Packit Service e31359
   * \return XML string that represents the element, its attributes and its
Packit Service e31359
   *         child elements.
Packit Service e31359
   */
Packit Service e31359
  std::string toString( const std::string &indent = "" ) const;
Packit Service e31359
Packit Service e31359
private:
Packit Service e31359
  typedef std::pair<std::string,std::string> Attribute;
Packit Service e31359
Packit Service e31359
  std::string attributesAsString() const;
Packit Service e31359
  std::string escape( std::string value ) const;
Packit Service e31359
Packit Service e31359
private:
Packit Service e31359
  std::string m_name;
Packit Service e31359
  std::string m_content;
Packit Service e31359
Packit Service e31359
  typedef std::deque<Attribute> Attributes;
Packit Service e31359
  Attributes m_attributes;
Packit Service e31359
Packit Service e31359
  typedef std::deque<XmlElement *> Elements;
Packit Service e31359
  Elements m_elements;
Packit Service e31359
};
Packit Service e31359
Packit Service e31359
Packit Service e31359
CPPUNIT_NS_END
Packit Service e31359
Packit Service e31359
#if CPPUNIT_NEED_DLL_DECL
Packit Service e31359
#pragma warning( pop )
Packit Service e31359
#endif
Packit Service e31359
Packit Service e31359
Packit Service e31359
#endif  // CPPUNIT_TOOLS_XMLELEMENT_H