Author: Pekka Riikonen <priikone@silcnet.org>
- Copyright (C) 2000 - 2006 Pekka Riikonen
+ Copyright (C) 2000 - 2007 Pekka Riikonen
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
* Add new entry to the cache. Returns the allocated cache entry if the
* entry was added successfully, or NULL if error occurred. The `name' is
* the name associated with the ID, the `id' the actual ID and the
- * `context' a caller specific context.
- *
- * The `name', `id' and `context' pointers will be stored in the cache,
- * and if the caller frees these pointers the caller is also responsible
- * of deleting the cache entry.
+ * `context' a caller specific context. The caller is responsible of
+ * freeing the `name' and `id' when the entry is deleted.
*
***/
SilcIDCacheEntry
SilcBool silc_idcache_del_by_context(SilcIDCache cache, void *context,
void *app_context);
-/****f* silcapputil/SilcIDCacheAPI/silc_idcache_update_id
+/****f* silcapputil/SilcIDCacheAPI/silc_idcache_update
*
* SYNOPSIS
*
* SilcBool silc_idcache_update(SilcIDCache cache, SilcIDCacheEntry entry,
- * void *old_id, void *new_id,
- * char *old_name, char *new_name,
+ * void *new_id, char *new_name,
* SilcBool free_old_name);
*
* DESCRIPTION
*
* Updates cache `entry' with new values. If the `new_id' is non-NULL
- * then the new value will be copied over the old value in the `entry'.
+ * then the new value will be copied over the old value in the `entry'
+ * unless the ID doesn't exist, when the `new_id' will be stored in `entry'.
* If the `new_name' is non-NULL then the `entry' will be updated with
* `new_name'. The caller is responsible of freeing the old name if it
* was updated with new one. The old ID value does not need to be freed
*
***/
SilcBool silc_idcache_update(SilcIDCache cache, SilcIDCacheEntry entry,
- void *old_id, void *new_id,
- char *old_name, char *new_name,
+ void *new_id, char *new_name,
SilcBool free_old_name);
+/****f* silcapputil/SilcIDCacheAPI/silc_idcache_update_by_context
+ *
+ * SYNOPSIS
+ *
+ * SilcBool
+ * silc_idcache_update_by_context(SilcIDCache cache, void *context,
+ * void *new_id, char *new_name,
+ * SilcBool free_old_name);
+ *
+ * DESCRIPTION
+ *
+ * Same as silc_idcache_update but finds the corrent ID cache entry by
+ * the `context' added to the ID cache.
+ *
+ ***/
+SilcBool silc_idcache_update_by_context(SilcIDCache cache, void *context,
+ void *new_id, char *new_name,
+ SilcBool free_old_name);
+
+/****f* silcapputil/SilcIDCacheAPI/silc_idcache_move
+ *
+ * SYNOPSIS
+ *
+ * SilcBool silc_idcache_move(SilcIDCache from_cache, SilcIDCache to_cache,
+ * SilcIDCacheEntry entry);
+ *
+ * DESCRIPTION
+ *
+ * Moves the ID cache entry indicated by `entry' from the `from_cache'
+ * to `to_cache'. After this returns TRUE the `entry' is available only
+ * from the `to_cache'. Return FALSE if `entry' is not in `from_cache'
+ * or system is out of memory.
+ *
+ ***/
+SilcBool silc_idcache_move(SilcIDCache from_cache, SilcIDCache to_cache,
+ SilcIDCacheEntry entry);
+
/****f* silcapputil/SilcIDCacheAPI/silc_idcache_get_all
*
* SYNOPSIS