
#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 <gdkmm/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 "color.h"
#include "cursor.h"
#include "device.h"
#include "devicemanager.h"
#include "display.h"
#include "displaymanager.h"
#include "dragcontext.h"
#include "event.h"
#include "pixbuf.h"
#include "pixbufanimation.h"
#include "pixbufanimationiter.h"
#include "pixbufformat.h"
#include "pixbufloader.h"
#include "rectangle.h"
#include "rgba.h"
#include "screen.h"
#include "timecoord.h"
#include "types.h"
#include "visual.h"
#include "window.h"

extern "C"
{

//Declarations of the *_get_type() functions:

GType gdk_cursor_get_type(void);
GType gdk_device_get_type(void);
GType gdk_device_manager_get_type(void);
GType gdk_display_get_type(void);
GType gdk_display_manager_get_type(void);
GType gdk_drag_context_get_type(void);
GType gdk_pixbuf_get_type(void);
GType gdk_pixbuf_animation_get_type(void);
GType gdk_pixbuf_animation_iter_get_type(void);
GType gdk_pixbuf_loader_get_type(void);
GType gdk_screen_get_type(void);
GType gdk_visual_get_type(void);
GType gdk_window_get_type(void);

//Declarations of the *_error_quark() functions:

GQuark gdk_pixbuf_error_quark(void);
} // extern "C"


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

namespace Gdk {  class Cursor_Class { public: static Glib::ObjectBase* wrap_new(GObject*); };  }
namespace Gdk {  class Device_Class { public: static Glib::ObjectBase* wrap_new(GObject*); };  }
namespace Gdk {  class DeviceManager_Class { public: static Glib::ObjectBase* wrap_new(GObject*); };  }
namespace Gdk {  class Display_Class { public: static Glib::ObjectBase* wrap_new(GObject*); };  }
namespace Gdk {  class DisplayManager_Class { public: static Glib::ObjectBase* wrap_new(GObject*); };  }
namespace Gdk {  class DragContext_Class { public: static Glib::ObjectBase* wrap_new(GObject*); };  }
namespace Gdk {  class Pixbuf_Class { public: static Glib::ObjectBase* wrap_new(GObject*); };  }
namespace Gdk {  class PixbufAnimation_Class { public: static Glib::ObjectBase* wrap_new(GObject*); };  }
namespace Gdk {  class PixbufAnimationIter_Class { public: static Glib::ObjectBase* wrap_new(GObject*); };  }
namespace Gdk {  class PixbufLoader_Class { public: static Glib::ObjectBase* wrap_new(GObject*); };  }
namespace Gdk {  class Screen_Class { public: static Glib::ObjectBase* wrap_new(GObject*); };  }
namespace Gdk {  class Visual_Class { public: static Glib::ObjectBase* wrap_new(GObject*); };  }
namespace Gdk {  class Window_Class { public: static Glib::ObjectBase* wrap_new(GObject*); };  }

namespace Gdk { 

void wrap_init()
{
  // Register Error domains:
  Glib::Error::register_domain(gdk_pixbuf_error_quark(), &::Gdk::PixbufError::throw_func);

// Map gtypes to gtkmm wrapper-creation functions:
  Glib::wrap_register(gdk_cursor_get_type(), &Gdk::Cursor_Class::wrap_new);
  Glib::wrap_register(gdk_device_get_type(), &Gdk::Device_Class::wrap_new);
  Glib::wrap_register(gdk_device_manager_get_type(), &Gdk::DeviceManager_Class::wrap_new);
  Glib::wrap_register(gdk_display_get_type(), &Gdk::Display_Class::wrap_new);
  Glib::wrap_register(gdk_display_manager_get_type(), &Gdk::DisplayManager_Class::wrap_new);
  Glib::wrap_register(gdk_drag_context_get_type(), &Gdk::DragContext_Class::wrap_new);
  Glib::wrap_register(gdk_pixbuf_get_type(), &Gdk::Pixbuf_Class::wrap_new);
  Glib::wrap_register(gdk_pixbuf_animation_get_type(), &Gdk::PixbufAnimation_Class::wrap_new);
  Glib::wrap_register(gdk_pixbuf_animation_iter_get_type(), &Gdk::PixbufAnimationIter_Class::wrap_new);
  Glib::wrap_register(gdk_pixbuf_loader_get_type(), &Gdk::PixbufLoader_Class::wrap_new);
  Glib::wrap_register(gdk_screen_get_type(), &Gdk::Screen_Class::wrap_new);
  Glib::wrap_register(gdk_visual_get_type(), &Gdk::Visual_Class::wrap_new);
  Glib::wrap_register(gdk_window_get_type(), &Gdk::Window_Class::wrap_new);

  // Register the gtkmm gtypes:
  Gdk::Cursor::get_type();
  Gdk::Device::get_type();
  Gdk::DeviceManager::get_type();
  Gdk::Display::get_type();
  Gdk::DisplayManager::get_type();
  Gdk::DragContext::get_type();
  Gdk::Pixbuf::get_type();
  Gdk::PixbufAnimation::get_type();
  Gdk::PixbufAnimationIter::get_type();
  Gdk::PixbufLoader::get_type();
  Gdk::Screen::get_type();
  Gdk::Visual::get_type();
  Gdk::Window::get_type();

} // wrap_init()

} //Gdk


