Blame src/mw_util.c

Packit Service 37472d
Packit Service 37472d
/*
Packit Service 37472d
  Meanwhile - Unofficial Lotus Sametime Community Client Library
Packit Service 37472d
  Copyright (C) 2004  Christopher (siege) O'Brien
Packit Service 37472d
  
Packit Service 37472d
  This library is free software; you can redistribute it and/or
Packit Service 37472d
  modify it under the terms of the GNU Library General Public
Packit Service 37472d
  License as published by the Free Software Foundation; either
Packit Service 37472d
  version 2 of the License, or (at your option) any later version.
Packit Service 37472d
  
Packit Service 37472d
  This library is distributed in the hope that it will be useful,
Packit Service 37472d
  but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 37472d
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit Service 37472d
  Library General Public License for more details.
Packit Service 37472d
  
Packit Service 37472d
  You should have received a copy of the GNU Library General Public
Packit Service 37472d
  License along with this library; if not, write to the Free
Packit Service 37472d
  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
Packit Service 37472d
*/
Packit Service 37472d
Packit Service 37472d
#include "mw_util.h"
Packit Service 37472d
Packit Service 37472d
Packit Service 37472d
static void collect_keys(gpointer key, gpointer val, gpointer data) {
Packit Service 37472d
  GList **list = data;
Packit Service 37472d
  *list = g_list_append(*list, key);
Packit Service 37472d
}
Packit Service 37472d
Packit Service 37472d
Packit Service 37472d
GList *map_collect_keys(GHashTable *ht) {
Packit Service 37472d
  GList *ret = NULL;
Packit Service 37472d
  g_hash_table_foreach(ht, collect_keys, &ret;;
Packit Service 37472d
  return ret;
Packit Service 37472d
}
Packit Service 37472d
Packit Service 37472d
Packit Service 37472d
static void collect_values(gpointer key, gpointer val, gpointer data) {
Packit Service 37472d
  GList **list = data;
Packit Service 37472d
  *list = g_list_append(*list, val);
Packit Service 37472d
}
Packit Service 37472d
Packit Service 37472d
Packit Service 37472d
GList *map_collect_values(GHashTable *ht) {
Packit Service 37472d
  GList *ret = NULL;
Packit Service 37472d
  g_hash_table_foreach(ht, collect_values, &ret;;
Packit Service 37472d
  return ret;
Packit Service 37472d
}
Packit Service 37472d
Packit Service 37472d
Packit Service 37472d
struct mw_datum *mw_datum_new(gpointer data, GDestroyNotify clear) {
Packit Service 37472d
  struct mw_datum *d = g_new(struct mw_datum, 1);
Packit Service 37472d
  mw_datum_set(d, data, clear);
Packit Service 37472d
  return d;
Packit Service 37472d
}
Packit Service 37472d
Packit Service 37472d
Packit Service 37472d
void mw_datum_set(struct mw_datum *d, gpointer data, GDestroyNotify clear) {
Packit Service 37472d
  d->data = data;
Packit Service 37472d
  d->clear = clear;
Packit Service 37472d
}
Packit Service 37472d
Packit Service 37472d
Packit Service 37472d
gpointer mw_datum_get(struct mw_datum *d) {
Packit Service 37472d
  return d->data;
Packit Service 37472d
}
Packit Service 37472d
Packit Service 37472d
Packit Service 37472d
void mw_datum_clear(struct mw_datum *d) {
Packit Service 37472d
  if(d->clear) {
Packit Service 37472d
    d->clear(d->data);
Packit Service 37472d
    d->clear = NULL;
Packit Service 37472d
  }
Packit Service 37472d
  d->data = NULL;
Packit Service 37472d
}
Packit Service 37472d
Packit Service 37472d
Packit Service 37472d
void mw_datum_free(struct mw_datum *d) {
Packit Service 37472d
  mw_datum_clear(d);
Packit Service 37472d
  g_free(d);
Packit Service 37472d
}