Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

Fl_XmlDoc.h

00001 #ifndef _FL_XMLDOC_H_
00002 #define _FL_XMLDOC_H_
00003 
00004 #include "Fl_XmlNode.h"
00005 #include "Fl_XmlTokenizer.h"
00006 
00007 #include "../Fl_Buffer.h"
00008 
00013 
00017 class Fl_XmlEntities : public Fl_String_String_Map {
00018 public:
00019     typedef Fl_String_String_Iterator Iterator;
00020 
00021     Fl_XmlEntities() { }
00022 
00028     bool remove_entity(const char *name) { return remove(name); }
00029 
00036     void set_entity(const char *name, const char *replacement) { set_value(name, replacement); }
00037 };
00038 
00044 class Fl_XmlDocType {
00045     friend class Fl_XmlParser;
00046 public:
00047 
00048     Fl_XmlDocType() { m_html = false; }
00049     Fl_XmlDocType(const char *name, const char *public_id=0, const char *system_id=0);
00050 
00054     const Fl_String &name() const { return m_name; }
00055 
00060     const Fl_String &public_id() const { return m_public_id; }
00061 
00066     const Fl_String &system_id() const { return m_system_id; }
00067 
00072     Fl_XmlEntities &entities() { return m_entities;  }
00073     const Fl_XmlEntities &entities() const { return m_entities;  }
00074 
00082     bool encode_entities(const char *str, Fl_String &ret);
00083 
00091     bool decode_entities(const char *str, Fl_String &ret);
00092 
00098     bool has_entity(const char *name) const;
00099 
00105     bool remove_entity(const char *name) { return m_entities.remove_entity(name); }
00106 
00112     Fl_String get_replacement(const char *name) const;
00113 
00120     void set_entity(const char *name, const char *replacement) { m_entities.set_entity(name, replacement); }
00121 
00122 private:
00123     Fl_XmlEntities m_entities;
00124 
00125     Fl_String m_name;
00126     Fl_String m_public_id;
00127     Fl_String m_system_id;
00128 
00129     bool m_html;
00130 };
00131 
00143 class Fl_XmlDoc: public Fl_XmlNode
00144 {
00145     friend class Fl_XmlParser;
00146 public:
00150     Fl_XmlDoc();
00157     Fl_XmlDoc(const char *name, const char *public_id=0, const char *system_id=0);
00158 
00162     virtual ~Fl_XmlDoc() { clear(); }
00163 
00167     virtual void clear();
00168 
00175     Fl_XmlNode *create_element(const char *tagname);
00176 
00183     Fl_XmlNode *create_text(const char *data);
00184 
00191     Fl_XmlNode *create_comment(const char *data);
00192 
00199     Fl_XmlNode *create_CDATA_section(const char *data);
00200 
00208     Fl_XmlNode *create_PI(const char *target, const char *data);
00209 
00217     Fl_XmlDocType &doctype() { return m_doctype; }
00218     const Fl_XmlDocType &doctype() const { return m_doctype; }
00219 
00223     Fl_XmlNode *root_node();
00224 
00228     static int indent_spaces() { return m_indent_spaces; }
00229 
00234     static void indent_spaces(int i) { m_indent_spaces = i; }
00235 
00240     void save(Fl_Buffer &buffer) const;
00241 
00242 private:
00243     Fl_XmlDocType m_doctype;
00244     static int m_indent_spaces;
00245 };
00246 
00249 #endif
00250 

Generated on Thu Jul 31 15:33:45 2003 for eFLTK by doxygen1.2.15