Ignore:
Timestamp:
2010-05-09T18:05:55Z (13 years ago)
Author:
Wilmer van der Gaast <wilmer@…>
Branches:
master
Children:
3130e70
Parents:
9ac3ed1
Message:

Keep track of contact groups in a slightly more efficient way.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • protocols/bee_user.c

    r9ac3ed1 r7aadd71  
    100100       
    101101        return st;
     102}
     103
     104
     105/* Groups */
     106static bee_group_t *bee_group_new( bee_t *bee, const char *name )
     107{
     108        bee_group_t *bg = g_new0( bee_group_t, 1 );
     109       
     110        bg->name = g_strdup( name );
     111        bg->key = g_utf8_casefold( name, -1 );
     112        bee->groups = g_slist_prepend( bee->groups, bg );
     113       
     114        return bg;
     115}
     116
     117bee_group_t *bee_group_by_name( bee_t *bee, const char *name, gboolean creat )
     118{
     119        GSList *l;
     120        char *key;
     121       
     122        if( name == NULL )
     123                return NULL;
     124       
     125        key = g_utf8_casefold( name, -1 );
     126        for( l = bee->groups; l; l = l->next )
     127        {
     128                bee_group_t *bg = l->data;
     129                if( strcmp( bg->key, key ) == 0 )
     130                        break;
     131        }
     132        g_free( key );
     133       
     134        if( !l )
     135                return creat ? bee_group_new( bee, name ) : NULL;
     136        else
     137                return l->data;
     138}
     139
     140void bee_group_free( bee_t *bee )
     141{
     142        while( bee->groups )
     143        {
     144                bee_group_t *bg = bee->groups->data;
     145                g_free( bg->name );
     146                g_free( bg->key );
     147                g_free( bg );
     148                bee->groups = g_slist_remove( bee->groups, bee->groups->data );
     149        }
    102150}
    103151
Note: See TracChangeset for help on using the changeset viewer.