00001
00002
00003 #ifndef _GSTREAMERMM_TAGLIST_H
00004 #define _GSTREAMERMM_TAGLIST_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/gsttaglist.h>
00031
00032
00033 namespace Gst
00034 {
00035
00041 enum TagMergeMode
00042 {
00043 TAG_MERGE_UNDEFINED,
00044 TAG_MERGE_REPLACE_ALL,
00045 TAG_MERGE_REPLACE,
00046 TAG_MERGE_APPEND,
00047 TAG_MERGE_PREPEND,
00048 TAG_MERGE_KEEP,
00049 TAG_MERGE_KEEP_ALL,
00050 TAG_MERGE_COUNT
00051 };
00052
00053 }
00054
00055
00056 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00057 namespace Glib
00058 {
00059
00060 template <>
00061 class Value<Gst::TagMergeMode> : public Glib::Value_Enum<Gst::TagMergeMode>
00062 {
00063 public:
00064 static GType value_type() G_GNUC_CONST;
00065 };
00066
00067 }
00068 #endif
00069
00070
00071 namespace Gst
00072 {
00073
00077 enum TagFlag
00078 {
00079 TAG_FLAG_UNDEFINED,
00080 TAG_FLAG_META,
00081 TAG_FLAG_ENCODED,
00082 TAG_FLAG_DECODED,
00083 TAG_FLAG_COUNT
00084 };
00085
00086 }
00087
00088
00089 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00090 namespace Glib
00091 {
00092
00093 template <>
00094 class Value<Gst::TagFlag> : public Glib::Value_Enum<Gst::TagFlag>
00095 {
00096 public:
00097 static GType value_type() G_GNUC_CONST;
00098 };
00099
00100 }
00101 #endif
00102
00103
00104 namespace Gst
00105 {
00106
00107
00110 class TagList
00111 {
00112 public:
00113 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00114 typedef TagList CppObjectType;
00115 typedef GstTagList BaseObjectType;
00116
00117 static GType get_type() G_GNUC_CONST;
00118 #endif
00119
00120 TagList();
00121
00122 explicit TagList(GstTagList* gobject, bool make_a_copy = false, bool destroy = true);
00123
00124 TagList(const TagList& other);
00125 TagList& operator=(const TagList& other);
00126
00127 ~TagList();
00128
00129 void swap(TagList& other);
00130
00132 GstTagList* gobj() { return gobject_; }
00133
00135 const GstTagList* gobj() const { return gobject_; }
00136
00138 GstTagList* gobj_copy() const;
00139
00145 void set_destroy(bool destroy);
00146
00147 protected:
00148 GstTagList* gobject_;
00149
00150 private:
00151 bool destroy;
00152
00153 private:
00154
00155
00156 public:
00160 typedef sigc::slot<void, const TagList&, const Glib::ustring&> SlotForeach;
00161
00162
00167 static bool exists(const Glib::ustring& tag);
00168
00173 static GType get_type(const Glib::ustring& tag);
00174
00179 static Glib::ustring get_nick(const Glib::ustring& tag);
00180
00185 static Glib::ustring get_description(const Glib::ustring& tag);
00186
00191 static TagFlag get_flag(const Glib::ustring& tag);
00192
00198 static bool is_fixed(const Glib::ustring& tag);
00199
00205 bool empty();
00206
00211 void insert(const TagList& other, TagMergeMode mode);
00212
00219 TagList merge(const TagList& other, TagMergeMode mode);
00220
00226 void foreach(const SlotForeach& slot);
00227
00228
00229 };
00230
00231 }
00232
00233
00234 namespace Gst
00235 {
00236
00241 inline void swap(TagList& lhs, TagList& rhs)
00242 { lhs.swap(rhs); }
00243
00244 }
00245
00246 namespace Glib
00247 {
00248
00263 Gst::TagList wrap(GstTagList* object, bool take_copy = false, bool destroy = true, bool dummy = false);
00264
00265 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00266 template <>
00267 class Value<Gst::TagList> : public Glib::Value_Boxed<Gst::TagList>
00268 {};
00269 #endif
00270
00271 }
00272
00273
00274 #endif
00275