首页 | 数据结构 | 文件列表 | 数据字段 | 全局定义

group_free.c

浏览该文件的文档。
00001 
00023 // START OF FILE
00024 /*****************************************************************************/
00025 #include "debug.h"              // gaim_debug
00026 
00027 #include "buddy_status.h"       // QQ_BUDDY_ONLINE_OFFLINE
00028 #include "group_free.h"
00029 #include "group_network.h"      // group_packet
00030 #include "group.h"              // qq_group
00031 
00032 /*****************************************************************************/
00033 // gracefully free all members in a group
00034 void _qq_group_free_member(qq_group * group)
00035 {
00036         gint i;
00037         GList *list;
00038         qq_buddy *member;
00039 
00040         g_return_if_fail(group != NULL);
00041         i = 0;
00042         while (NULL != (list = group->members)) {
00043                 member = (qq_buddy *) list->data;
00044                 i++;
00045                 group->members = g_list_remove(group->members, member);
00046                 g_free(member->nickname);
00047                 g_free(member);
00048         }                       // while
00049 
00050         group->members = NULL;
00051 
00052 }                               // _qq_group_free_member
00053 
00054 /*****************************************************************************/
00055 // gracefully free the memory for one qq_group
00056 void _qq_group_free(qq_group * group)
00057 {
00058         g_return_if_fail(group != NULL);
00059         _qq_group_free_member(group);
00060         g_free(group->group_name_utf8);
00061         g_free(group->group_desc_utf8);
00062         g_free(group);
00063 }                               // _qq_group_free
00064 
00065 /*****************************************************************************/
00066 // clean up group_packets and free all contents
00067 void qq_group_packets_free(qq_data * qd)
00068 {
00069         group_packet *p;
00070         gint i;
00071 
00072         i = 0;
00073         while (qd->group_packets != NULL) {
00074                 p = (group_packet *) (qd->group_packets->data);
00075                 qd->group_packets = g_list_remove(qd->group_packets, p);
00076                 g_free(p);
00077                 i++;
00078         }                       // while
00079         gaim_debug(GAIM_DEBUG_INFO, "QQ", "%d group packets are freed!\n", i);
00080 }                               // qq_group_packets_free
00081 
00082 /*****************************************************************************/
00083 void qq_group_remove_by_internal_group_id(qq_data * qd, guint32 internal_group_id) {
00084         qq_group *group;
00085         GList *list;
00086         g_return_if_fail(qd != NULL);
00087 
00088         list = qd->groups;
00089         while (list != NULL) {
00090                 group = (qq_group *) qd->groups->data;
00091                 if (internal_group_id == group->internal_group_id) {
00092                         qd->groups = g_list_remove(qd->groups, group);
00093                         _qq_group_free(group);
00094                         break;
00095                 } else
00096                         list = list->next;
00097         }                       // while
00098 
00099 }                               // qq_group_free_all
00100 
00101 /*****************************************************************************/
00102 void qq_group_free_all(qq_data * qd)
00103 {
00104         qq_group *group;
00105         gint i;
00106         g_return_if_fail(qd != NULL);
00107 
00108         i = 0;
00109         while (qd->groups != NULL) {
00110                 i++;
00111                 group = (qq_group *) qd->groups->data;
00112                 qd->groups = g_list_remove(qd->groups, group);
00113                 _qq_group_free(group);
00114         }                       // while
00115 
00116         gaim_debug(GAIM_DEBUG_INFO, "QQ", "%d groups are freed\n", i);
00117 }                               // qq_group_free_all
00118 
00119 /*****************************************************************************/
00120 // END OF FILE

Generated at Mon May 8 15:41:23 2006 for OpenQ by  doxygen 1.4.4