X-Git-Url: https://git.rrq.au/?a=blobdiff_plain;f=vector%2Fstringitem.c;h=d53576dd540f62ff6832af3b265de6271339af94;hb=1598c2a362fec3de547616cb8020a315631a4c15;hp=ce10e7cb8c260876a620a4869a96cc35ecf39e54;hpb=14c22de9f38ec5304dd14a2625b6ac8fdfda52f4;p=rrq%2Frrqmisc.git diff --git a/vector/stringitem.c b/vector/stringitem.c index ce10e7c..d53576d 100644 --- a/vector/stringitem.c +++ b/vector/stringitem.c @@ -11,7 +11,7 @@ * vector placement is made at the first empty or hole slot following * the hashcode index. */ -static unsigned long stringitem_hashcode(itemkeyfun *this,void *key) { +static unsigned long stringitem_hashcode(void *this,void *key) { return hashvector_hashcode( (unsigned char*)key, strlen( (char*)key ) ); } @@ -19,7 +19,7 @@ static unsigned long stringitem_hashcode(itemkeyfun *this,void *key) { * This callback function determines whether an item has a * given key or not. */ -static int stringitem_haskey(itemkeyfun *this,void *item,void *key) { +static int stringitem_haskey(void *this,void *item,void *key) { return strcmp( item, key ) == 0; } @@ -27,7 +27,7 @@ static int stringitem_haskey(itemkeyfun *this,void *item,void *key) { * This callback function returns the key of an item by considering * the arity and schema. */ -static void *stringitem_itemkey(itemkeyfun *this,void *item) { +static void *stringitem_itemkey(void *this,void *item) { return item; } @@ -35,12 +35,24 @@ static void *stringitem_itemkey(itemkeyfun *this,void *item) { * This callback function handles a key obtained from the itemkey * callback function to reclaim temporary allocation. */ -static void stringitem_releasekey(itemkeyfun *this,void *key) { +static void stringitem_releasekey(void *this,void *key) { +} + +/** + * This callback function writes a representation of an item into + * a character buffer. + */ +static int stringitem_tostring(void *this,void *item,char *buffer,int limit) { + if ( item ) { + return snprintf( buffer, limit, "\"%s\"", (char*) item ); + } + return snprintf( buffer, limit, "(null)" ); } itemkeyfun stringitem = { .hashcode = stringitem_hashcode, .haskey = stringitem_haskey, .itemkey = stringitem_itemkey, - .releasekey = stringitem_releasekey + .releasekey = stringitem_releasekey, + .tostring = stringitem_tostring };