#ifndef _QTSHARP_H_
#define _QTSHARP_H_

#include "customslot.h"

extern "C" {

typedef void (*qtsharp_EventDelegate)(void *, char *, void *, char *);
typedef int (*qt_EventDelegate)(void *, char *, void *, char *);

void qt_QObject_registerEventDelegate (qt_EventDelegate delegate);

QObject *csharp_connect_void (QObject *sender, const char *signal, QObject *receiver, void (*ptr)(void));
QObject *csharp_connect_item_void (QMenuData *instance, int id, QObject *receiver, void (*ptr)(void));

QObject *csharp_connect_bool (QObject *sender, const char *signal, QObject *receiver, void (*ptr)(bool));

QObject *csharp_connect_short (QObject *sender, const char *signal, QObject *receiver, void (*ptr)(short));

QObject *csharp_connect_int (QObject *sender, const char *signal, QObject *receiver, void (*ptr)(int));
QObject *csharp_connect_item_int (QMenuData *instance, int id, QObject *receiver, void (*ptr)(int));

QObject *csharp_connect_long (QObject *sender, const char *signal, QObject *receiver, void (*ptr)(long));

QObject *csharp_connect_float (QObject *sender, const char *signal, QObject *receiver, void (*ptr)(float));

QObject *csharp_connect_double (QObject *sender, const char *signal, QObject *receiver, void (*ptr)(double));

QObject *csharp_connect_QString (QObject *sender, const char *signal, QObject *receiver, void (*ptr)(const QString&));

QObject *csharp_connect_QDockWindow (QObject *sender, const char *signal, QObject *receiver, void (*ptr)(QDockWindow*));

QObject *csharp_connect_QDropEvent (QObject *sender, const char *signal, QObject *receiver, void (*ptr)(QDropEvent*));

QObject *csharp_connect_QDropEventQListViewItem (QObject *sender, const char *signal, QObject *receiver, void (*ptr)(QDropEvent*,QListViewItem*));

QObject *csharp_connect_QIconViewItem (QObject *sender, const char *signal, QObject *receiver, void (*ptr)(QIconViewItem*));

QObject *csharp_connect_QListBoxItem (QObject *sender, const char *signal, QObject *receiver, void (*ptr)(QListBoxItem*));

QObject *csharp_connect_QListViewItem (QObject *sender, const char *signal, QObject *receiver, void (*ptr)(QListViewItem*));

QObject *csharp_connect_QListViewItemQListViewItem (QObject *sender, const char *signal, QObject *receiver, void (*ptr)(QListViewItem*,QListViewItem*));

QObject *csharp_connect_QListViewItemQListViewItemQListViewItem (QObject *sender, const char *signal, QObject *receiver, void (*ptr)(QListViewItem*,QListViewItem*,QListViewItem*));

QObject *csharp_connect_QNetworkOperation (QObject *sender, const char *signal, QObject *receiver, void (*ptr)(QNetworkOperation*));

QObject *csharp_connect_QObject (QObject *sender, const char *signal, QObject *receiver, void (*ptr)(QObject*));

QObject *csharp_connect_QToolBar (QObject *sender, const char *signal, QObject *receiver, void (*ptr)(QToolBar*));

QObject *csharp_connect_QWidget (QObject *sender, const char *signal, QObject *receiver, void (*ptr)(QWidget*));

QObject *csharp_connect_intQIconViewItem (QObject *sender, const char *signal, QObject *receiver, void (*ptr)(int,QIconViewItem*));

QObject *csharp_connect_intQListBoxItem (QObject *sender, const char *signal, QObject *receiver, void (*ptr)(int,QListBoxItem*));

QObject *csharp_connect_intbool (QObject *sender, const char *signal, QObject *receiver, void (*ptr)(int,bool));

QObject *csharp_connect_intint (QObject *sender, const char *signal, QObject *receiver, void (*ptr)(int,int));

QObject *csharp_connect_intintint (QObject *sender, const char *signal, QObject *receiver, void (*ptr)(int,int,int));

} // extern "C"

#endif // _QTSHARP_H_
