00001
00002
00003 #ifndef _GSTREAMERMM_XML_H
00004 #define _GSTREAMERMM_XML_H
00005
00006
00007 #include <glibmm.h>
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #include <gst/gstxml.h>
00031 #include <gstreamermm/object.h>
00032
00033
00034 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00035 typedef struct _GstXML GstXML;
00036 typedef struct _GstXMLClass GstXMLClass;
00037 #endif
00038
00039
00040 namespace Gst
00041 { class XML_Class; }
00042 namespace Gst
00043 {
00044
00045 class Element;
00046
00047
00048 class XML : public Object
00049 {
00050
00051 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00052
00053 public:
00054 typedef XML CppObjectType;
00055 typedef XML_Class CppClassType;
00056 typedef GstXML BaseObjectType;
00057 typedef GstXMLClass BaseClassType;
00058
00059 private: friend class XML_Class;
00060 static CppClassType xml_class_;
00061
00062 private:
00063
00064 XML(const XML&);
00065 XML& operator=(const XML&);
00066
00067 protected:
00068 explicit XML(const Glib::ConstructParams& construct_params);
00069 explicit XML(GstXML* castitem);
00070
00071 #endif
00072
00073 public:
00074 virtual ~XML();
00075
00076 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00077 static GType get_type() G_GNUC_CONST;
00078 static GType get_base_type() G_GNUC_CONST;
00079 #endif
00080
00082 GstXML* gobj() { return reinterpret_cast<GstXML*>(gobject_); }
00083
00085 const GstXML* gobj() const { return reinterpret_cast<GstXML*>(gobject_); }
00086
00088 GstXML* gobj_copy();
00089
00090 private:
00091
00092
00093 protected:
00094 XML();
00095
00096 public:
00097
00098 static Glib::RefPtr<XML> create();
00099
00100
00107 bool parse_doc(xmlDocPtr doc, const std::string& root);
00108
00121 bool parse_file(const std::string& filename, const std::string& root);
00122
00123
00124 bool parse_memory(const std::string& buffer, const std::string& root);
00125
00126
00127
00134 Glib::RefPtr<Element> get_element(const std::string& name);
00135
00142 Glib::RefPtr<const Element> get_element(const std::string& name) const;
00143
00144
00151 Glib::ListHandle< Glib::RefPtr<Element> > get_topelements();
00152
00153
00160 Glib::ListHandle< Glib::RefPtr<const Element> > get_topelements() const;
00161
00162
00168 Glib::SignalProxy2< void,const Glib::RefPtr<Gst::Object>&,xmlNode* > signal_object_loaded();
00169
00170
00171 public:
00172
00173 public:
00174
00175 #ifdef GLIBMM_VFUNCS_ENABLED
00176 #endif //GLIBMM_VFUNCS_ENABLED
00177
00178 protected:
00179
00180 #ifdef GLIBMM_VFUNCS_ENABLED
00181 #endif //GLIBMM_VFUNCS_ENABLED
00182
00183
00184 #ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00185 virtual void on_object_loaded(const Glib::RefPtr<Gst::Object>& object, xmlNode* xml_node);
00186 #endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00187
00188
00189 };
00190
00191 xmlDocPtr write_xml(const Glib::RefPtr<Element>& element);
00192 int write_xml_file(const Glib::RefPtr<Element>& element, const std::string& filename);
00193 Glib::RefPtr<Element> make_element(const xmlNodePtr& xml_node, const Glib::RefPtr<Object>& parent);
00194
00195 }
00196
00197
00198 namespace Glib
00199 {
00208 Glib::RefPtr<Gst::XML> wrap(GstXML* object, bool take_copy = false);
00209 }
00210
00211
00212 #endif
00213