summary refs log tree commit diff stats
path: root/src/common/hexchat-plugin.h
diff options
context:
space:
mode:
authorBerke Viktor <bviktor@hexchat.org>2012-10-30 06:56:25 +0100
committerBerke Viktor <bviktor@hexchat.org>2012-10-30 06:56:25 +0100
commitad16a2bfee7e51e8acfbc6acd7cf22e438ec60d2 (patch)
tree05fbfae0392b9c7156820b7f5f326faf87b451f3 /src/common/hexchat-plugin.h
parent56973ae365d5f7d9348996f27080d5e9d376caa9 (diff)
Proof-of-concept compat mode for XChat
Diffstat (limited to 'src/common/hexchat-plugin.h')
-rw-r--r--src/common/hexchat-plugin.h318
1 files changed, 300 insertions, 18 deletions
diff --git a/src/common/hexchat-plugin.h b/src/common/hexchat-plugin.h
index 40eca898..a81ff897 100644
--- a/src/common/hexchat-plugin.h
+++ b/src/common/hexchat-plugin.h
@@ -42,6 +42,7 @@ typedef struct _xchat_context xchat_context;
 struct _xchat_plugin
 {
 	/* these are only used on win32 */
+#ifdef XCHAT_PLUGIN_COMPAT
 	xchat_hook *(*xchat_hook_command) (xchat_plugin *ph,
 		    const char *name,
 		    int pri,
@@ -137,25 +138,122 @@ struct _xchat_plugin
 	     int flags);
 	void (*xchat_free) (xchat_plugin *ph,
 	    void *ptr);
-	int (*xchat_pluginpref_set_str) (xchat_plugin *ph,
+#endif /* XCHAT_PLUGIN_COMPAT */
+	xchat_hook *(*hexchat_hook_command) (xchat_plugin *ph,
+		    const char *name,
+		    int pri,
+		    int (*callback) (char *word[], char *word_eol[], void *user_data),
+		    const char *help_text,
+		    void *userdata);
+	xchat_hook *(*hexchat_hook_server) (xchat_plugin *ph,
+		   const char *name,
+		   int pri,
+		   int (*callback) (char *word[], char *word_eol[], void *user_data),
+		   void *userdata);
+	xchat_hook *(*hexchat_hook_print) (xchat_plugin *ph,
+		  const char *name,
+		  int pri,
+		  int (*callback) (char *word[], void *user_data),
+		  void *userdata);
+	xchat_hook *(*hexchat_hook_timer) (xchat_plugin *ph,
+		  int timeout,
+		  int (*callback) (void *user_data),
+		  void *userdata);
+	xchat_hook *(*hexchat_hook_fd) (xchat_plugin *ph,
+		   int fd,
+		   int flags,
+		   int (*callback) (int fd, int flags, void *user_data),
+		   void *userdata);
+	void *(*hexchat_unhook) (xchat_plugin *ph,
+	      xchat_hook *hook);
+	void (*hexchat_print) (xchat_plugin *ph,
+	     const char *text);
+	void (*hexchat_printf) (xchat_plugin *ph,
+	      const char *format, ...);
+	void (*hexchat_command) (xchat_plugin *ph,
+	       const char *command);
+	void (*hexchat_commandf) (xchat_plugin *ph,
+		const char *format, ...);
+	int (*hexchat_nickcmp) (xchat_plugin *ph,
+	       const char *s1,
+	       const char *s2);
+	int (*hexchat_set_context) (xchat_plugin *ph,
+		   xchat_context *ctx);
+	xchat_context *(*hexchat_find_context) (xchat_plugin *ph,
+		    const char *servname,
+		    const char *channel);
+	xchat_context *(*hexchat_get_context) (xchat_plugin *ph);
+	const char *(*hexchat_get_info) (xchat_plugin *ph,
+		const char *id);
+	int (*hexchat_get_prefs) (xchat_plugin *ph,
+		 const char *name,
+		 const char **string,
+		 int *integer);
+	xchat_list * (*hexchat_list_get) (xchat_plugin *ph,
+		const char *name);
+	void (*hexchat_list_free) (xchat_plugin *ph,
+		 xchat_list *xlist);
+	const char * const * (*hexchat_list_fields) (xchat_plugin *ph,
+		   const char *name);
+	int (*hexchat_list_next) (xchat_plugin *ph,
+		 xchat_list *xlist);
+	const char * (*hexchat_list_str) (xchat_plugin *ph,
+		xchat_list *xlist,
+		const char *name);
+	int (*hexchat_list_int) (xchat_plugin *ph,
+		xchat_list *xlist,
+		const char *name);
+	void * (*hexchat_plugingui_add) (xchat_plugin *ph,
+		     const char *filename,
+		     const char *name,
+		     const char *desc,
+		     const char *version,
+		     char *reserved);
+	void (*hexchat_plugingui_remove) (xchat_plugin *ph,
+			void *handle);
+	int (*hexchat_emit_print) (xchat_plugin *ph,
+			const char *event_name, ...);
+	int (*hexchat_read_fd) (xchat_plugin *ph,
+			void *src,
+			char *buf,
+			int *len);
+	time_t (*hexchat_list_time) (xchat_plugin *ph,
+		xchat_list *xlist,
+		const char *name);
+	char *(*hexchat_gettext) (xchat_plugin *ph,
+		const char *msgid);
+	void (*hexchat_send_modes) (xchat_plugin *ph,
+		  const char **targets,
+		  int ntargets,
+		  int modes_per_line,
+		  char sign,
+		  char mode);
+	char *(*hexchat_strip) (xchat_plugin *ph,
+	     const char *str,
+	     int len,
+	     int flags);
+	void (*hexchat_free) (xchat_plugin *ph,
+	    void *ptr);
+	int (*hexchat_pluginpref_set_str) (xchat_plugin *ph,
 		const char *var,
 		const char *value);
-	int (*xchat_pluginpref_get_str) (xchat_plugin *ph,
+	int (*hexchat_pluginpref_get_str) (xchat_plugin *ph,
 		const char *var,
 		char *dest);
-	int (*xchat_pluginpref_set_int) (xchat_plugin *ph,
+	int (*hexchat_pluginpref_set_int) (xchat_plugin *ph,
 		const char *var,
 		int value);
-	int (*xchat_pluginpref_get_int) (xchat_plugin *ph,
+	int (*hexchat_pluginpref_get_int) (xchat_plugin *ph,
 		const char *var);
-	int (*xchat_pluginpref_delete) (xchat_plugin *ph,
+	int (*hexchat_pluginpref_delete) (xchat_plugin *ph,
 		const char *var);
-	int (*xchat_pluginpref_list) (xchat_plugin *ph,
+	int (*hexchat_pluginpref_list) (xchat_plugin *ph,
 		char *dest);
 };
 #endif
 
 
+#ifdef XCHAT_PLUGIN_COMPAT
 xchat_hook *
 xchat_hook_command (xchat_plugin *ph,
 		    const char *name,
@@ -306,37 +404,190 @@ xchat_strip (xchat_plugin *ph,
 void
 xchat_free (xchat_plugin *ph,
 	    void *ptr);
+#endif /* XCHAT_PLUGIN_COMPAT */
+
+xchat_hook *
+hexchat_hook_command (xchat_plugin *ph,
+		    const char *name,
+		    int pri,
+		    int (*callback) (char *word[], char *word_eol[], void *user_data),
+		    const char *help_text,
+		    void *userdata);
+
+xchat_hook *
+hexchat_hook_server (xchat_plugin *ph,
+		   const char *name,
+		   int pri,
+		   int (*callback) (char *word[], char *word_eol[], void *user_data),
+		   void *userdata);
+
+xchat_hook *
+hexchat_hook_print (xchat_plugin *ph,
+		  const char *name,
+		  int pri,
+		  int (*callback) (char *word[], void *user_data),
+		  void *userdata);
+
+xchat_hook *
+hexchat_hook_timer (xchat_plugin *ph,
+		  int timeout,
+		  int (*callback) (void *user_data),
+		  void *userdata);
+
+xchat_hook *
+hexchat_hook_fd (xchat_plugin *ph,
+		int fd,
+		int flags,
+		int (*callback) (int fd, int flags, void *user_data),
+		void *userdata);
+
+void *
+hexchat_unhook (xchat_plugin *ph,
+	      xchat_hook *hook);
+
+void
+hexchat_print (xchat_plugin *ph,
+	     const char *text);
+
+void
+hexchat_printf (xchat_plugin *ph,
+	      const char *format, ...);
+
+void
+hexchat_command (xchat_plugin *ph,
+	       const char *command);
+
+void
+hexchat_commandf (xchat_plugin *ph,
+		const char *format, ...);
+
+int
+hexchat_nickcmp (xchat_plugin *ph,
+	       const char *s1,
+	       const char *s2);
+
+int
+hexchat_set_context (xchat_plugin *ph,
+		   xchat_context *ctx);
+
+xchat_context *
+hexchat_find_context (xchat_plugin *ph,
+		    const char *servname,
+		    const char *channel);
+
+xchat_context *
+hexchat_get_context (xchat_plugin *ph);
+
+const char *
+hexchat_get_info (xchat_plugin *ph,
+		const char *id);
+
+int
+hexchat_get_prefs (xchat_plugin *ph,
+		 const char *name,
+		 const char **string,
+		 int *integer);
+
+xchat_list *
+hexchat_list_get (xchat_plugin *ph,
+		const char *name);
+
+void
+hexchat_list_free (xchat_plugin *ph,
+		 xchat_list *xlist);
+
+const char * const *
+hexchat_list_fields (xchat_plugin *ph,
+		   const char *name);
+
+int
+hexchat_list_next (xchat_plugin *ph,
+		 xchat_list *xlist);
+
+const char *
+hexchat_list_str (xchat_plugin *ph,
+		xchat_list *xlist,
+		const char *name);
+
+int
+hexchat_list_int (xchat_plugin *ph,
+		xchat_list *xlist,
+		const char *name);
+
+time_t
+hexchat_list_time (xchat_plugin *ph,
+		 xchat_list *xlist,
+		 const char *name);
+
+void *
+hexchat_plugingui_add (xchat_plugin *ph,
+		     const char *filename,
+		     const char *name,
+		     const char *desc,
+		     const char *version,
+		     char *reserved);
+
+void
+hexchat_plugingui_remove (xchat_plugin *ph,
+			void *handle);
+
+int 
+hexchat_emit_print (xchat_plugin *ph,
+		  const char *event_name, ...);
+
+char *
+hexchat_gettext (xchat_plugin *ph,
+	       const char *msgid);
+
+void
+hexchat_send_modes (xchat_plugin *ph,
+		  const char **targets,
+		  int ntargets,
+		  int modes_per_line,
+		  char sign,
+		  char mode);
+
+char *
+hexchat_strip (xchat_plugin *ph,
+	     const char *str,
+	     int len,
+	     int flags);
+
+void
+hexchat_free (xchat_plugin *ph,
+	    void *ptr);
 
 int
-xchat_pluginpref_set_str (xchat_plugin *ph,
+hexchat_pluginpref_set_str (xchat_plugin *ph,
 		const char *var,
 		const char *value);
 
 int
-xchat_pluginpref_get_str (xchat_plugin *ph,
+hexchat_pluginpref_get_str (xchat_plugin *ph,
 		const char *var,
 		char *dest);
 
 int
-xchat_pluginpref_set_int (xchat_plugin *ph,
+hexchat_pluginpref_set_int (xchat_plugin *ph,
 		const char *var,
 		int value);
 int
-xchat_pluginpref_get_int (xchat_plugin *ph,
+hexchat_pluginpref_get_int (xchat_plugin *ph,
 		const char *var);
 
 int
-xchat_pluginpref_delete (xchat_plugin *ph,
+hexchat_pluginpref_delete (xchat_plugin *ph,
 		const char *var);
 
 int
-xchat_pluginpref_list (xchat_plugin *ph,
+hexchat_pluginpref_list (xchat_plugin *ph,
 		char *dest);
 
 #if !defined(PLUGIN_C) && defined(WIN32)
 #ifndef XCHAT_PLUGIN_HANDLE
 #define XCHAT_PLUGIN_HANDLE (ph)
 #endif
+#ifdef XCHAT_PLUGIN_COMPAT
 #define xchat_hook_command ((XCHAT_PLUGIN_HANDLE)->xchat_hook_command)
 #define xchat_hook_server ((XCHAT_PLUGIN_HANDLE)->xchat_hook_server)
 #define xchat_hook_print ((XCHAT_PLUGIN_HANDLE)->xchat_hook_print)
@@ -367,12 +618,43 @@ xchat_pluginpref_list (xchat_plugin *ph,
 #define xchat_send_modes ((XCHAT_PLUGIN_HANDLE)->xchat_send_modes)
 #define xchat_strip ((XCHAT_PLUGIN_HANDLE)->xchat_strip)
 #define xchat_free ((XCHAT_PLUGIN_HANDLE)->xchat_free)
-#define xchat_pluginpref_set_str ((XCHAT_PLUGIN_HANDLE)->xchat_pluginpref_set_str)
-#define xchat_pluginpref_get_str ((XCHAT_PLUGIN_HANDLE)->xchat_pluginpref_get_str)
-#define xchat_pluginpref_set_int ((XCHAT_PLUGIN_HANDLE)->xchat_pluginpref_set_int)
-#define xchat_pluginpref_get_int ((XCHAT_PLUGIN_HANDLE)->xchat_pluginpref_get_int)
-#define xchat_pluginpref_delete ((XCHAT_PLUGIN_HANDLE)->xchat_pluginpref_delete)
-#define xchat_pluginpref_list ((XCHAT_PLUGIN_HANDLE)->xchat_pluginpref_list)
+#endif /* XCHAT_PLUGIN_COMPAT */
+#define hexchat_hook_command ((XCHAT_PLUGIN_HANDLE)->hexchat_hook_command)
+#define hexchat_hook_server ((XCHAT_PLUGIN_HANDLE)->hexchat_hook_server)
+#define hexchat_hook_print ((XCHAT_PLUGIN_HANDLE)->hexchat_hook_print)
+#define hexchat_hook_timer ((XCHAT_PLUGIN_HANDLE)->hexchat_hook_timer)
+#define hexchat_hook_fd ((XCHAT_PLUGIN_HANDLE)->hexchat_hook_fd)
+#define hexchat_unhook ((XCHAT_PLUGIN_HANDLE)->hexchat_unhook)
+#define hexchat_print ((XCHAT_PLUGIN_HANDLE)->hexchat_print)
+#define hexchat_printf ((XCHAT_PLUGIN_HANDLE)->hexchat_printf)
+#define hexchat_command ((XCHAT_PLUGIN_HANDLE)->hexchat_command)
+#define hexchat_commandf ((XCHAT_PLUGIN_HANDLE)->hexchat_commandf)
+#define hexchat_nickcmp ((XCHAT_PLUGIN_HANDLE)->hexchat_nickcmp)
+#define hexchat_set_context ((XCHAT_PLUGIN_HANDLE)->hexchat_set_context)
+#define hexchat_find_context ((XCHAT_PLUGIN_HANDLE)->hexchat_find_context)
+#define hexchat_get_context ((XCHAT_PLUGIN_HANDLE)->hexchat_get_context)
+#define hexchat_get_info ((XCHAT_PLUGIN_HANDLE)->hexchat_get_info)
+#define hexchat_get_prefs ((XCHAT_PLUGIN_HANDLE)->hexchat_get_prefs)
+#define hexchat_list_get ((XCHAT_PLUGIN_HANDLE)->hexchat_list_get)
+#define hexchat_list_free ((XCHAT_PLUGIN_HANDLE)->hexchat_list_free)
+#define hexchat_list_fields ((XCHAT_PLUGIN_HANDLE)->hexchat_list_fields)
+#define hexchat_list_next ((XCHAT_PLUGIN_HANDLE)->hexchat_list_next)
+#define hexchat_list_str ((XCHAT_PLUGIN_HANDLE)->hexchat_list_str)
+#define hexchat_list_int ((XCHAT_PLUGIN_HANDLE)->hexchat_list_int)
+#define hexchat_plugingui_add ((XCHAT_PLUGIN_HANDLE)->hexchat_plugingui_add)
+#define hexchat_plugingui_remove ((XCHAT_PLUGIN_HANDLE)->hexchat_plugingui_remove)
+#define hexchat_emit_print ((XCHAT_PLUGIN_HANDLE)->hexchat_emit_print)
+#define hexchat_list_time ((XCHAT_PLUGIN_HANDLE)->hexchat_list_time)
+#define hexchat_gettext ((XCHAT_PLUGIN_HANDLE)->hexchat_gettext)
+#define hexchat_send_modes ((XCHAT_PLUGIN_HANDLE)->hexchat_send_modes)
+#define hexchat_strip ((XCHAT_PLUGIN_HANDLE)->hexchat_strip)
+#define hexchat_free ((XCHAT_PLUGIN_HANDLE)->hexchat_free)
+#define hexchat_pluginpref_set_str ((XCHAT_PLUGIN_HANDLE)->hexchat_pluginpref_set_str)
+#define hexchat_pluginpref_get_str ((XCHAT_PLUGIN_HANDLE)->hexchat_pluginpref_get_str)
+#define hexchat_pluginpref_set_int ((XCHAT_PLUGIN_HANDLE)->hexchat_pluginpref_set_int)
+#define hexchat_pluginpref_get_int ((XCHAT_PLUGIN_HANDLE)->hexchat_pluginpref_get_int)
+#define hexchat_pluginpref_delete ((XCHAT_PLUGIN_HANDLE)->hexchat_pluginpref_delete)
+#define hexchat_pluginpref_list ((XCHAT_PLUGIN_HANDLE)->hexchat_pluginpref_list)
 #endif
 
 #ifdef __cplusplus