diff options
author | Jari Vetoniemi <mailroxas@gmail.com> | 2014-08-21 01:47:30 +0300 |
---|---|---|
committer | Jari Vetoniemi <mailroxas@gmail.com> | 2014-08-21 01:47:30 +0300 |
commit | f1bb87a808ff1383a2d27dc2c4a1f8812c470c31 (patch) | |
tree | 6669801544e51621c9269e5e89d3ae7a83c73ba8 /lib/item.c | |
parent | 5bd81e8d384e82926a7671527e62aebafed1183f (diff) | |
parent | 536eee6d0bf8eb99b6566f7f4fd646b3cd76f532 (diff) | |
download | bemenu-f1bb87a808ff1383a2d27dc2c4a1f8812c470c31.tar.gz bemenu-f1bb87a808ff1383a2d27dc2c4a1f8812c470c31.tar.bz2 bemenu-f1bb87a808ff1383a2d27dc2c4a1f8812c470c31.zip |
Merge branch 'develop'
Diffstat (limited to 'lib/item.c')
-rw-r--r-- | lib/item.c | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/lib/item.c b/lib/item.c new file mode 100644 index 0000000..f2a879a --- /dev/null +++ b/lib/item.c @@ -0,0 +1,96 @@ +#include "internal.h" +#include <stdlib.h> +#include <assert.h> +#include <string.h> + +/** + * Allocate a new item. + * + * @param text Pointer to null terminated C "string", can be **NULL** for empty text. + * @return bmItem for new item instance, **NULL** if creation failed. + */ +bmItem* bmItemNew(const char *text) +{ + bmItem *item = calloc(1, sizeof(bmItem)); + + if (!item) + return NULL; + + bmItemSetText(item, text); + return item; +} + +/** + * Release bmItem instance. + * + * @param item bmItem instance to be freed from memory. + */ +void bmItemFree(bmItem *item) +{ + assert(item); + + if (item->text) + free(item->text); + + free(item); +} + +/** + * Set userdata pointer to bmItem instance. + * Userdata will be carried unmodified by the instance. + * + * @param item bmItem instance where to set userdata pointer. + * @param userdata Pointer to userdata. + */ +void bmItemSetUserdata(bmItem *item, void *userdata) +{ + assert(item); + item->userdata = userdata; +} + +/** + * Get userdata pointer from bmItem instance. + * + * @param item bmItem instance which userdata pointer to get. + * @return Pointer for unmodified userdata. + */ +void* bmItemGetUserdata(bmItem *item) +{ + assert(item); + return item->userdata; +} + +/** + * Set text to bmItem instance. + * + * @param item bmItem instance where to set text. + * @param text C "string" to set as text, can be **NULL** for empty text. + */ +int bmItemSetText(bmItem *item, const char *text) +{ + assert(item); + + char *copy = NULL; + if (text && !(copy = _bmStrdup(text))) + return 0; + + if (item->text) + free(item->text); + + item->text = copy; + return 1; +} + +/** + * Get text from bmItem instance. + * + * @param item bmItem instance where to get text from. + * @return Pointer to null terminated C "string", can be **NULL** for empty text. + */ +const char* bmItemGetText(const bmItem *item) +{ + assert(item); + return item->text; +} + +/* vim: set ts=8 sw=4 tw=0 :*/ |