old rev: 811d6e22fc676b5d2f87ff0d8fff750662e4bc7b

new rev: 2ef380ad3a75f214245ca5e1a34e7fc3d4e23914

-------------------------------------------------------------------------------
Notes:
-------------------------------------------------------------------------------

I know you're updating finch because you're using it.  But i don't think I ever
explicitly told you that you don't need to worry about the ui's.  You're scope
is libpurple, and libpurple alone.  This only includes, libpurple, the protocol
plugins, and perhaps the standard plugins.  This does not include the plugin
loaders, the ui's or any of the gtk or gnt plugins.

I need to run you through delegators and member methods, which for some strange
reason I've been calling class methods.  I understand completely now why you're
getting *REALLY* confused about this.

There's quite a few instances where theres some uber long lines.  We may want
to use some variables to make these a bit more readable.  I'll point this out
where I notice it.

I'm using a mix of line numbers and function names.  It's pretty sparadic,
mostly when i don't want to count a ton of lines from the start of the hunk :)

-------------------------------------------------------------------------------
Files:
-------------------------------------------------------------------------------
libpurple/blist-node.h
 * doxygen comments are incorrect

libpurple/buddy.h
 * doxygen comments are incorrect

libpurple/chat.h
 * doxygen comments are incorrect

libpurple/contact.h
 * doxygen comments are incorrect

libpurple/group.h
 * doxygen comments are incorrect

libpurple/blist-node.c
 * purple_blist_node_(add|remove)_node needs lots of help.  We'll cover this
   indepth, and it should give you a good understand of it and unconfuse you :)
 * purple_blist_node_finalize shouldn't be doing any unrefs, that'll be covered
   by the subclasses (we'll go over this indepth during the member methods
   discussion)
 * purple_blist_node_init: we may want to make settings a property, but right
   now it's okay where it is.

libpurple/blist.c
 * line 544 use PURPLE_GROUP(cnode->parent) (see above)
 * line 613 lose the (PurpleBlistNode *) typecast
 * line 727 should use purple_blist_node_remove_node (we'll cover this in the
   delegator discussion)
 * line 1131 lose the (PurpleBlistNode *) typecast
 * line 1221 lose the (PurpleBlistNode *) typecast
 * line 1578 should be able to die

libpurple/blist.h
 * line 476 the while should be able to be removed, since everything should be
   holding a reference to the buddy if they need it.
 * purple_buddy_class_init: the properties shouldn't have the names and
   descriptions marked for translation (right now).  We need to determine if
   we're going to do it as a project, and if so, how we're going to implement
   it.
 * purple_buddy_init: call new_node with PURPLE_BLIST_NODE(buddy)

libpurple/buddyicon.c
 * line 863, we'll probably want to change this to if(!PURPLE_IS_BUDDY(node)) {
   unless i'm completely misreading this.
 * line 948, same as above

libpurple/contact.c
 * line 260 needs a space before the ==
 * purple_contact_remove_buddy, we'll cover teh ops->update in our member
   method discussion.
 * line 321 should be using PURPLE_BLIST_NODE(contact), but should be removed.
   All we need to do is drop the ops->new_node method in purple_blist_node_init
   and all of the children will automatically do it.  Actually, it'll get
   triggered at the wrong time, so it has to stay in the instance_init or we
   need to create a signal or helper function.

libpurple/group.c
 * struct members should be hidden
 * purple_group_get_accounts, replace typecasts with their PURPLE_FOO macros.
 * the name property should be G_PARAM_CONSTRUCT, not G_PARAM_CONSTRUCT_ONLY
 * purple_group_init should be using the private structure

libpurple/plugins/perl/common/BuddyList.xs
 * this will need to be fixed, but is out of your scope.

libpurple/plugins/perl/common/module.h
 * this will need to be fixed, but is out of your scope.

libpurple/protocols/bonjour/bonjour_ft.c
 * line 862 uber line syndrome

libpurple/protocols/jabber/roster.c
 * line 467 uber line syndrome

libpurple/protocols/myspace/myspace.c
 * line 395 uber line syndrome

libpurple/protocols/silc/buddy.c
 * line 1468 uber line syndrome
 * line 1534 uber line syndrome

libpurple/protocols/zephyr/zephyr.c
 * line 815 uber line syndrome
 * line 817 uber line syndrome
 * line 1197 uber line syndrome
 * line 1199 uber line syndrome