
#include <glib.h>

// Disable the 'const' function attribute of the get_type() functions.
// GCC would optimize them out because we don't use the return value.
#undef  G_GNUC_CONST
#define G_GNUC_CONST /* empty */

#include <gstreamermm/gst_wrap_init.h>
#include <glibmm/error.h>
#include <glibmm/object.h>

// #include the widget headers so that we can call the get_type() static methods:

#include "audioclock.h"
#include "audiofilter.h"
#include "audiosink.h"
#include "audiosrc.h"
#include "baseaudiosink.h"
#include "baseaudiosrc.h"
#include "basesink.h"
#include "basesrc.h"
#include "basetransform.h"
#include "bin.h"
#include "buffer.h"
#include "bufferlist.h"
#include "bus.h"
#include "caps.h"
#include "cddabasesrc.h"
#include "childproxy.h"
#include "clock.h"
#include "colorbalancechannel.h"
#include "colorbalance.h"
#include "elementfactory.h"
#include "element.h"
#include "enums.h"
#include "error.h"
#include "event.h"
#include "filter.h"
#include "format.h"
#include "ghostpad.h"
#include "indexfactory.h"
#include "index.h"
#include "interface.h"
#include "iterator.h"
#include "message.h"
#include "mixer.h"
#include "mixeroptions.h"
#include "mixertrack.h"
#include "navigation.h"
#include "object.h"
#include "pad.h"
#include "padtemplate.h"
#include "parse.h"
#include "pipeline.h"
#include "pluginfeature.h"
#include "plugin.h"
#include "preset.h"
#include "propertyprobe.h"
#include "pushsrc.h"
#include "query.h"
#include "registry.h"
#include "ringbuffer.h"
#include "segment.h"
#include "streamvolume.h"
#include "structure.h"
#include "systemclock.h"
#include "taglist.h"
#include "tagsetter.h"
#include "task.h"
#include "taskpool.h"
#include "tunerchannel.h"
#include "tuner.h"
#include "tunernorm.h"
#include "typefindfactory.h"
#include "typefind.h"
#include "urihandler.h"
#include "value.h"
#include "videoorientation.h"
#include "videosink.h"
#include "xml.h"
#include "xoverlay.h"
#include "adder.h"
#include "alsamixer.h"
#include "alsasink.h"
#include "alsasrc.h"
#include "audioconvert.h"
#include "audiorate.h"
#include "audioresample.h"
#include "audiotestsrc.h"
#include "capsfilter.h"
#include "cdparanoiasrc.h"
#include "clockoverlay.h"
#include "decodebin2.h"
#include "decodebin.h"
#include "fakesink.h"
#include "fakesrc.h"
#include "fdsink.h"
#include "fdsrc.h"
#include "ffmpegcolorspace.h"
#include "filesink.h"
#include "filesrc.h"
#include "gdpdepay.h"
#include "gdppay.h"
#include "giosink.h"
#include "giosrc.h"
#include "giostreamsink.h"
#include "giostreamsrc.h"
#include "identity.h"
#include "multifdsink.h"
#include "multiqueue.h"
#include "oggdemux.h"
#include "oggmux.h"
#include "playbin2.h"
#include "playbin.h"
#include "queue.h"
#include "queue2.h"
#include "subtitleoverlay.h"
#include "tcpclientsink.h"
#include "tcpclientsrc.h"
#include "tcpserversink.h"
#include "tcpserversrc.h"
#include "tee.h"
#include "textoverlay.h"
#include "textrender.h"
#include "theoradec.h"
#include "theoraenc.h"
#include "theoraparse.h"
#include "timeoverlay.h"
#include "typefindelement.h"
#include "uridecodebin.h"
#include "videorate.h"
#include "videoscale.h"
#include "videotestsrc.h"
#include "volume.h"
#include "vorbisdec.h"
#include "vorbisenc.h"
#include "vorbisparse.h"
#include "vorbistag.h"
#include "ximagesink.h"
#include "xvimagesink.h"

extern "C"
{

//Declarations of the *_get_type() functions:

GType gst_buffer_get_type(void);
GType gst_buffer_list_get_type(void);
GType gst_event_get_type(void);
GType gst_message_get_type(void);
GType gst_query_get_type(void);

//Declarations of the *_error_quark() functions:

} // extern "C"


//Declarations of the *_Class::wrap_new() methods, instead of including all the private headers:

namespace Gst {  class Buffer_Class { public: static Gst::MiniObject* wrap_new(GstMiniObject*); };  }
namespace Gst {  class BufferList_Class { public: static Gst::MiniObject* wrap_new(GstMiniObject*); };  }
namespace Gst {  class Event_Class { public: static Gst::MiniObject* wrap_new(GstMiniObject*); };  }
namespace Gst {  class Message_Class { public: static Gst::MiniObject* wrap_new(GstMiniObject*); };  }
namespace Gst {  class Query_Class { public: static Gst::MiniObject* wrap_new(GstMiniObject*); };  }

namespace Gst { 

void gst_wrap_init()
{

// Map gtypes to gstreamermm wrapper-creation functions:
  Gst::wrap_register(gst_buffer_get_type(), &Gst::Buffer_Class::wrap_new);
  Gst::wrap_register(gst_buffer_list_get_type(), &Gst::BufferList_Class::wrap_new);
  Gst::wrap_register(gst_event_get_type(), &Gst::Event_Class::wrap_new);
  Gst::wrap_register(gst_message_get_type(), &Gst::Message_Class::wrap_new);
  Gst::wrap_register(gst_query_get_type(), &Gst::Query_Class::wrap_new);

  // Register the gtkmm gtypes:
  Gst::Buffer::get_type();
  Gst::BufferList::get_type();
  Gst::Event::get_type();
  Gst::Message::get_type();
  Gst::Query::get_type();

} // gst_wrap_init()

} //Gst


