Was ist PURPLE_CALLBACK()? - Druckversion +- Pidgin Forum (https://forum.pidgin-im.de) +-- Forum: Hilfe-Bereich (https://forum.pidgin-im.de/forumdisplay.php?fid=4) +--- Forum: Development (https://forum.pidgin-im.de/forumdisplay.php?fid=16) +--- Thema: Was ist PURPLE_CALLBACK()? (/showthread.php?tid=299) |
Was ist PURPLE_CALLBACK()? - Pille456 - 24.05.2008 Hio, Hab mich den halben Abend in das Pluginschreiben für Pidgin eingearbeitet und habs eigentlich auch alles verstanden, bis auf eine Sache: Die Code: static gboolean plugin_load(PurplePlugin *plugin); Code: purple_signal_connect(); Und wo gebe ich dann eventuelle Argumente für meine Funktion mit an? Wenn ich mich z.B. mit einer ankommenden Nachricht verbinde, dann muss ich ja auch irgendwo Sender/Empfänger/Inhalt etc. zu sehen bekommen. Thx. Re: Was ist PURPLE_CALLBACK()? - Freakazoid - 24.05.2008 Du meinst das hier? Der vierte Parameter ist einfach ein Zeiger auf die Funktion, die aufgerufen werden soll, wenn das Signal eintrifft. Das fünfte ist ein Zeiger auf die Daten, die übergeben werden sollen (oder NULL). Aus der gleichen Seite steht (etwas weiter oben) die Definition für das PURPLE_CALLBACK-Makro: Code: #define PURPLE_CALLBACK(func) ((PurpleCallback)func) Es castet einfach nur (einen Zeiger auf) deine Funktion auf den Typ PurpleCallback, der (ein paar Zeilen darunter) so definiert ist: Code: typedef void(*PurpleCallback )(void) Deine Daten übergibst du also, in dem du nicht die Daten selbst, sondern deren Adresse übergibst. (Dabei ist darauf zu achten, dass die Daten nicht auf dem Stack stehen, also keine lokalen Variablen sind.) Re: Was ist PURPLE_CALLBACK()? - Pille456 - 25.05.2008 Ah, okay verstehe - danke. Dann noch erstmal eine letze Frage: Über "purple_signal_connect" verbinde ich meine Funktion ja mit bestimmten Ereignissen, die ich als 2. Argument übergebe. Wo finde ich eine Liste an Argumenten, die ich dort übergeben kann? Ich meine, irgendwo muss ja stehen welcher String den ich angebe zu welchem Ereignis gehört^^ danke! Re: Was ist PURPLE_CALLBACK()? - Freakazoid - 25.05.2008 http://developer.pidgin.im/doxygen/dev/html/pages.html (Ich weiß, die hierarchische Ordnung in der API is nicht wirklich brauchbar.) edit: glaube ich zumindest, bei näherer Betrachtung sieht das doch etwas komplizierter aus. :o) |