diff plugins/perl/common/BuddyList.xs @ 11118:134d0001983d

[gaim-migrate @ 13174] Some new xsubs for the perl interpreter and a work around to get it all working again. committer: Tailor Script <tailor@pidgin.im>
author John H. Kelm <johnkelm@gmail.com>
date Mon, 18 Jul 2005 13:37:38 +0000
parents cbd13a12d9be
children ece127d56c14
line wrap: on
line diff
--- a/plugins/perl/common/BuddyList.xs	Mon Jul 18 07:26:09 2005 +0000
+++ b/plugins/perl/common/BuddyList.xs	Mon Jul 18 13:37:38 2005 +0000
@@ -1,77 +1,158 @@
 #include "module.h"
+#include "../perl-handlers.h"
+
+/*
+TODO
+
+void *
+gaim_blist_node_action_new(label, cb, data, children)
+	char * label
+	SV * cb
+	SV * data
+	SV * children
+CODE:
+	RETVAL = gaim_perl_blist_node_action(label, cb, data, children);
+OUTPUT:
+	RETVAL
+
+*/
+
+
+MODULE = Gaim::BuddyList  PACKAGE = Gaim::BuddyList  PREFIX = gaim_
+PROTOTYPES: ENABLE
+
+Gaim::BuddyList
+gaim_get_blist()
+
+
+MODULE = Gaim::BuddyList  PACKAGE = Gaim::Find  PREFIX = gaim_find_
+PROTOTYPES: ENABLE
+
+Gaim::BuddyList::Buddy 
+gaim_find_buddy(account, name)
+	Gaim::Account account
+	const char * name
+
+void
+gaim_find_buddies(account, name)
+	Gaim::Account account
+	const char * name
+PREINIT:
+	GSList *l;
+PPCODE:
+	for (l = gaim_find_buddies(account, name); l != NULL; l = l->next) {
+		XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::BuddyList::Buddy")));
+	}
+
+gboolean 
+gaim_group_on_account(group, account)
+	Gaim::BuddyList::Group  group
+	Gaim::Account account
+
+Gaim::BuddyList::Group  
+gaim_find_group(name)
+	const char *name
+
+Gaim::BuddyList::Group  
+gaim_find_buddys_group(buddy)
+	Gaim::BuddyList::Buddy buddy
+
+
+
+
+MODULE = Gaim::BuddyList  PACKAGE = Gaim::Contact  PREFIX = gaim_contact_
+PROTOTYPES: ENABLE
+
+Gaim::BuddyList::Contact
+gaim_contact_new();
+
+Gaim::BuddyList::Buddy 
+gaim_contact_get_priority_buddy(contact)
+	Gaim::BuddyList::Contact contact
+
+void
+gaim_contact_set_alias(contact, alias)
+	Gaim::BuddyList::Contact contact
+	const char * alias
+
+const char *
+gaim_contact_get_alias(contact)
+	Gaim::BuddyList::Contact contact
+
+gboolean 
+gaim_contact_on_account(contact, account)
+	Gaim::BuddyList::Contact contact
+	Gaim::Account account
+
+void
+gaim_contact_invalidate_priority_buddy(contact)
+	Gaim::BuddyList::Contact contact
+
+MODULE = Gaim::BuddyList  PACKAGE = Gaim::Group  PREFIX = gaim_group_
+PROTOTYPES: ENABLE
+
+
+Gaim::BuddyList::Group  
+gaim_group_new(name)
+	const char *name
+
+void 
+gaim_group_get_accounts(group)
+	Gaim::BuddyList::Group  group
+PREINIT:
+	GSList *l;
+PPCODE:
+	for (l = gaim_group_get_accounts(group); l != NULL; l = l->next) {
+		XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListEntry")));
+	}
+
+gboolean 
+gaim_group_on_account(group, account)
+	Gaim::BuddyList::Group  group
+	Gaim::Account account
+
 
 MODULE = Gaim::BuddyList  PACKAGE = Gaim::BuddyList  PREFIX = gaim_blist_
 PROTOTYPES: ENABLE
 
 void
-gaim_blist_set_visible(show)
-	gboolean show
+gaim_blist_add_contact(contact, group, node)
+	Gaim::BuddyList::Contact contact
+	Gaim::BuddyList::Group  group
+	Gaim::BuddyList::Node node
+
+void
+gaim_blist_merge_contact(source, node)
+	Gaim::BuddyList::Contact source
+	Gaim::BuddyList::Node node
 
 void
-add_buddy(account, buddy, group)
-	Gaim::Account account
-	Gaim::BuddyList::Buddy buddy
-	Gaim::BuddyList::Group group
-CODE:
-	gaim_blist_add_buddy(buddy, NULL, group, NULL);
-	serv_add_buddy(gaim_account_get_connection(account), buddy);
+gaim_blist_add_group(group, node)
+	Gaim::BuddyList::Group  group
+	Gaim::BuddyList::Node node
 
 void
-add_group(group)
-	Gaim::BuddyList::Group group
-CODE:
-	gaim_blist_add_group(group, NULL);
-
-void
-add_chat(chat, group)
-	Gaim::BuddyList::Chat chat
-	Gaim::BuddyList::Group group
-CODE:
-	gaim_blist_add_chat(chat, group, NULL);
+gaim_blist_add_buddy(buddy, contact, group, node)
+	Gaim::BuddyList::Buddy buddy
+	Gaim::BuddyList::Contact contact
+	Gaim::BuddyList::Group  group
+	Gaim::BuddyList::Node node
 
 void
 gaim_blist_remove_buddy(buddy)
 	Gaim::BuddyList::Buddy buddy
 
 void
-gaim_blist_remove_group(group)
-	Gaim::BuddyList::Group group
+gaim_blist_remove_contact(contact)
+	Gaim::BuddyList::Contact contact
 
 void
 gaim_blist_remove_chat(chat)
 	Gaim::BuddyList::Chat chat
 
-Gaim::BuddyList::Buddy
-find_buddy(account, name)
-	Gaim::Account account
-	const char *name
-CODE:
-	RETVAL = gaim_find_buddy(account, name);
-OUTPUT:
-	RETVAL
-
 void
-find_buddies(account, name)
-	Gaim::Account account
-	const char *name
-PREINIT:
-	GSList *l;
-PPCODE:
-	for (l = gaim_find_buddies(account, name); l != NULL; l = l->next)
-	{
-		XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data,
-			"Gaim::BuddyList::Buddy")));
-	}
-
-	g_slist_free(l);
-
-Gaim::BuddyList::Group
-find_group(name)
-	const char *name
-CODE:
-	RETVAL = gaim_find_group(name);
-OUTPUT:
-	RETVAL
+gaim_blist_remove_group(group)
+	Gaim::BuddyList::Group  group
 
 Gaim::BuddyList::Chat
 gaim_blist_find_chat(account, name)
@@ -79,22 +160,256 @@
 	const char *name
 
 void
-groups()
+gaim_blist_add_chat(chat, group, node)
+	Gaim::BuddyList::Chat chat
+	Gaim::BuddyList::Group  group
+	Gaim::BuddyList::Node node
+
+Gaim::BuddyList
+gaim_blist_new()
+
+void
+gaim_set_blist(blist)
+	Gaim::BuddyList blist
+
+void
+gaim_blist_show()
+
+void
+gaim_blist_destroy();
+
+void
+gaim_blist_set_visible(show)
+	gboolean show
+
+void
+gaim_blist_update_buddy_status(buddy, old_status)
+	Gaim::BuddyList::Buddy buddy
+	Gaim::Status old_status
+
+void
+gaim_blist_update_buddy_icon(buddy)
+	Gaim::BuddyList::Buddy buddy
+
+void
+gaim_blist_rename_buddy(buddy, name)
+	Gaim::BuddyList::Buddy buddy
+	const char * name
+
+void
+gaim_blist_alias_buddy(buddy, alias)
+	Gaim::BuddyList::Buddy buddy
+	const char * alias
+
+void
+gaim_blist_server_alias_buddy(buddy, alias)
+	Gaim::BuddyList::Buddy buddy
+	const char * alias
+
+void
+gaim_blist_alias_chat(chat, alias)
+	Gaim::BuddyList::Chat chat
+	const char * alias
+
+void
+gaim_blist_rename_group(group, name)
+	Gaim::BuddyList::Group  group
+	const char * name
+
+void
+gaim_blist_add_account(account)
+	Gaim::Account account
+
+void
+gaim_blist_remove_account(account)
+	Gaim::Account account
+
+int 
+gaim_blist_get_group_size(group, offline)
+	Gaim::BuddyList::Group  group
+	gboolean offline
+
+int 
+gaim_blist_get_group_online_count(group)
+	Gaim::BuddyList::Group  group
+
+void
+gaim_blist_load()
+
+void
+gaim_blist_schedule_save()
+
+void
+gaim_blist_request_add_group()
+
+void
+gaim_blist_node_set_bool(node, key, value)
+	Gaim::BuddyList::Node node
+	const char * key
+	gboolean value
+
+gboolean 
+gaim_blist_node_get_bool(node, key)
+	Gaim::BuddyList::Node node
+	const char * key
+
+void
+gaim_blist_node_set_int(node, key, value)
+	Gaim::BuddyList::Node node
+	const char * key
+	int value
+
+int 
+gaim_blist_node_get_int(node, key)
+	Gaim::BuddyList::Node node
+	const char * key
+
+const char *
+gaim_blist_node_get_string(node, key)
+	Gaim::BuddyList::Node node
+	const char * key
+
+void
+gaim_blist_node_remove_setting(node, key)
+	Gaim::BuddyList::Node node
+	const char * key
+
+void
+gaim_blist_node_set_flags(node, flags)
+	Gaim::BuddyList::Node node
+	Gaim::BlistNodeFlags flags
+
+Gaim::BlistNodeFlags 
+gaim_blist_node_get_flags(node)
+	Gaim::BuddyList::Node node
+
+void
+gaim_blist_node_get_extended_menu(node)
+	Gaim::BuddyList::Node node
 PREINIT:
-	GaimBlistNode *node;
+	GList *l;
 PPCODE:
-	if (gaim_get_blist() != NULL)
-	{
-		for (node = gaim_get_blist()->root; node != NULL; node = node->next)
-		{
-			XPUSHs(sv_2mortal(gaim_perl_bless_object(node,
-				"Gaim::BuddyList::Group")));
-		}
+	for (l = gaim_blist_node_get_extended_menu(node); l != NULL; l = l->next) {
+		XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListEntry")));
+	}
+	
+
+void
+gaim_blist_set_ui_ops(ops)
+	Gaim::BuddyList::UiOps ops
+
+
+Gaim::BuddyList::UiOps
+gaim_blist_get_ui_ops()
+
+void *
+gaim_blist_get_handle()
+
+void
+gaim_blist_init()
+
+void
+gaim_blist_uninit()
+
+
+MODULE = Gaim::BuddyList  PACKAGE = Gaim::Chat  PREFIX = gaim_chat_
+PROTOTYPES: ENABLE
+
+
+Gaim::BuddyList::Group  
+gaim_chat_get_group(chat)
+	Gaim::BuddyList::Chat chat
+
+const char *
+gaim_chat_get_name(chat)
+	Gaim::BuddyList::Chat chat
+
+Gaim::BuddyList::Chat
+gaim_chat_new(account, alias, components)
+	Gaim::Account account
+	const char * alias 
+	SV * components
+INIT:
+	HV * t_HV;
+	HE * t_HE;
+	SV * t_SV;
+	GHashTable * t_GHash;
+	int i;
+	I32 len;
+	char *t_key, *t_value;
+CODE:
+	t_HV =  (HV *)SvRV(components);
+	t_GHash = g_hash_table_new(NULL, NULL);
+
+	for (t_HE = hv_iternext(t_HV); t_HE != NULL; t_HE = hv_iternext(t_HV) ) {
+		t_key = hv_iterkey(t_HE, &len);
+		t_SV = *hv_fetch(t_HV, t_key, len, 0);
+ 		t_value = SvPV(t_SV, PL_na);
+
+		g_hash_table_insert(t_GHash, t_key, t_value);
 	}
 
-void *
-handle()
-CODE:
-	RETVAL = gaim_blist_get_handle();
+	RETVAL = gaim_chat_new(account, alias, t_GHash);
 OUTPUT:
 	RETVAL
+
+
+
+
+
+
+
+
+
+
+
+MODULE = Gaim::BuddyList  PACKAGE = Gaim::Buddy  PREFIX = gaim_buddy_
+PROTOTYPES: ENABLE
+
+Gaim::BuddyList::Buddy 
+gaim_buddy_new(account, screenname, alias)
+	Gaim::Account account
+	const char *screenname
+	const char *alias
+
+void
+gaim_buddy_set_icon(buddy, icon)
+	Gaim::BuddyList::Buddy buddy
+	Gaim::Buddy::Icon icon
+
+Gaim::Account 
+gaim_buddy_get_account(buddy)
+	Gaim::BuddyList::Buddy buddy
+
+const char *
+gaim_buddy_get_name(buddy)
+	Gaim::BuddyList::Buddy buddy
+
+Gaim::Buddy::Icon 
+gaim_buddy_get_icon(buddy)
+	Gaim::BuddyList::Buddy buddy
+
+Gaim::BuddyList::Contact
+gaim_buddy_get_contact(buddy)
+	Gaim::BuddyList::Buddy buddy
+
+Gaim::Presence  
+gaim_buddy_get_presence(buddy)
+	Gaim::BuddyList::Buddy buddy
+
+const char *
+gaim_buddy_get_alias_only(buddy)
+	Gaim::BuddyList::Buddy buddy
+
+const char *
+gaim_buddy_get_contact_alias(buddy)
+	Gaim::BuddyList::Buddy buddy
+
+const char *
+gaim_buddy_get_local_alias(buddy)
+	Gaim::BuddyList::Buddy buddy
+
+const char *
+gaim_buddy_get_alias(buddy)
+	Gaim::BuddyList::Buddy buddy
+