svnno****@sourc*****
svnno****@sourc*****
2010年 11月 30日 (火) 01:13:13 JST
Revision: 339 http://sourceforge.jp/projects/swfed/svn/view?view=rev&revision=339 Author: yoya Date: 2010-11-30 01:13:13 +0900 (Tue, 30 Nov 2010) Log Message: ----------- モジュール名を strtable から keyvalue に変更 Modified Paths: -------------- trunk/src/config.m4 Added Paths: ----------- trunk/src/y_keyvalue.c trunk/src/y_keyvalue.h Removed Paths: ------------- trunk/src/y_strtable.c trunk/src/y_strtable.h -------------- next part -------------- Modified: trunk/src/config.m4 =================================================================== --- trunk/src/config.m4 2010-11-29 16:07:40 UTC (rev 338) +++ trunk/src/config.m4 2010-11-29 16:13:13 UTC (rev 339) @@ -73,6 +73,6 @@ swf_shape_record.c swf_shape_record_end.c swf_shape_record_setup.c \ swf_shape_record_edge.c swf_gradient.c swf_gradient_record.c \ swf_tag_jpeg.c swf_tag_edit.c swf_tag_action.c swf_tag_lossless.c \ - swf_tag_sound.c swf_tag_sprite.c swf_tag_shape.c y_strtable.c \ + swf_tag_sound.c swf_tag_sprite.c swf_tag_shape.c y_keyvalue.c \ , $ext_shared) fi Copied: trunk/src/y_keyvalue.c (from rev 338, trunk/src/y_strtable.c) =================================================================== --- trunk/src/y_keyvalue.c (rev 0) +++ trunk/src/y_keyvalue.c 2010-11-29 16:13:13 UTC (rev 339) @@ -0,0 +1,186 @@ +/* + gcc -W -Wall -D__KEYVALUE_DEBUG__ -DMALLOC_DEBUG y_keyvalue.c swf_debug.c + */ +#include <stdio.h> +#include <malloc.h> +#include <string.h> +#include "swf_define.h" +#include "y_keyvalue.h" + +//#define Y_KEYVALUE_INITSIZE 10 +#define Y_KEYVALUE_INITSIZE 1 + +/* + * open/close + */ +y_keyvalue_t * +y_keyvalue_open() { + y_keyvalue_t *st = calloc(sizeof(*st), 1); + if (st == NULL) { + fprintf(stderr, "y_keyvalue_open: calloc failed\n"); + return NULL; + } + st->use_len = 0; + st->alloc_len = Y_KEYVALUE_INITSIZE; + st->table = malloc(sizeof(*st->table) * Y_KEYVALUE_INITSIZE); + return st; +} + +void +y_keyvalue_close(y_keyvalue_t *st) { + int i; + for (i = 0 ; i < st->use_len ; i++) { + if (st->table[i].use) { + free(st->table[i].key); + free(st->table[i].value); + } + } + free(st->table); + free(st); +} + + +/* + * set/get/delete + */ + +int +y_keyvalue_set(y_keyvalue_t *st, char *key, int key_len, char *value, int value_len) { + int i, offset = -1; + void *tmp; + if (st->use_len < st->alloc_len) { + offset = st->use_len; + } else { + for (i = 0 ; i < st->alloc_len ; i++) { + if (st->table[i].use == 0) { + offset = i; + break; + } + } + if (offset == -1) { + tmp = realloc(st->table, 2 * st->alloc_len * sizeof(*(st->table))); + if (tmp == NULL) { + fprintf(stderr, "y_keyvalue_set: realloc failed\n"); + return 1; + } + st->table = tmp; + st->alloc_len = 2 * st->alloc_len; + offset = st->use_len; + } + } + st->table[offset].key = malloc(key_len); + if (st->table[offset].key == NULL) { + + } + st->table[offset].value = malloc(value_len); + if (st->table[offset].value == NULL) { + free(st->table[offset].key); + return 1; // NG + } + memcpy(st->table[offset].key, key, key_len); + memcpy(st->table[offset].value, value, value_len); + st->table[offset].key_len = key_len; + st->table[offset].value_len = value_len; + st->table[offset].use = 1; + if (offset == st->use_len) { + st->use_len = offset + 1; + } + return 0; +} + +char * +y_keyvalue_get(y_keyvalue_t *st, char *key, int key_len, int *value_len) { + int i; + for (i = 0 ; i < st->use_len ; i++) { + if ((st->table[i].use) && + (st->table[i].key_len == key_len) && + (memcmp(st->table[i].key, key, key_len) == 0)) { + *value_len = st->table[i].value_len; + return st->table[i].key; + } + } + return NULL; +} + +int +y_keyvalue_delete(y_keyvalue_t *st, char *key, int key_len) { + int i; + for (i = 0 ; i < st->use_len ; i++) { + if ((st->table[i].use) && + (st->table[i].key_len == key_len) && + (memcmp(st->table[i].key, key, key_len) == 0)) { + free(st->table[i].key); + free(st->table[i].value); + st->table[i].key = 0; + st->table[i].value = 0; + st->table[i].use = 0; + return 0; + } + } + return 1; +} + +/* + * itelator + */ +void +y_keyvalue_rewind(y_keyvalue_t *st) { + st->get_offset = -1; +} +int +y_keyvalue_hasnext(y_keyvalue_t *st) { + do { + st->get_offset++; + if (st->table[st->get_offset].use) { + return 1; // found + } + } while (st->get_offset < st->use_len); + + return 0;// false + +} +char * +y_keyvalue_get_currentkey(y_keyvalue_t *st, int *key_len) { + if (st->get_offset >= st->use_len) { + return NULL; + } + *key_len = st->table[st->get_offset].key_len; + return st->table[st->get_offset].key; +} +char * +y_keyvalue_get_currentvalue(y_keyvalue_t *st, int *value_len) { + if (st->get_offset >= st->use_len) { + return NULL; + } + *value_len = st->table[st->get_offset].value_len; + return st->table[st->get_offset].value; +} + +#ifdef __KEYVALUE_DEBUG__ + +int main(void) { + char *key, *value; + int key_len, value_len; + malloc_debug_start(); + y_keyvalue_t *st = y_keyvalue_open(); + y_keyvalue_set(st, "foo", 4, "baa", 4); + y_keyvalue_set(st, "baz", 4, "buz", 4); + y_keyvalue_rewind(st); + while(y_keyvalue_hasnext(st)) { + key = y_keyvalue_get_currentkey(st, &key_len); + value = y_keyvalue_get_currentvalue(st, &value_len); + printf("key=%s(%d), value=%s(%d)\n", key, key_len, value, value_len); + } + y_keyvalue_delete(st, "foo", 4); + y_keyvalue_rewind(st); + while(y_keyvalue_hasnext(st)) { + key = y_keyvalue_get_currentkey(st, &key_len); + value = y_keyvalue_get_currentvalue(st, &value_len); + printf("key=%s(%d), value=%s(%d)\n", key, key_len, value, value_len); + } + y_keyvalue_close(st); + malloc_debug_end(); + return 0; +} + +#endif /* __KEYVALUE_DEBUG__ */ Copied: trunk/src/y_keyvalue.h (from rev 338, trunk/src/y_strtable.h) =================================================================== --- trunk/src/y_keyvalue.h (rev 0) +++ trunk/src/y_keyvalue.h 2010-11-29 16:13:13 UTC (rev 339) @@ -0,0 +1,34 @@ +#ifndef __Y_KEYVALUE_H__ +#define __Y_KEYVALUE_H__ + +typedef struct _y_keyvalue_entry_t { + char *key, *value; + int key_len, value_len; + int use; +} y_keyvalue_entry_t; + +typedef struct _y_keyvalue_t { + int use_len; + int alloc_len; + y_keyvalue_entry_t *table; + // + signed int get_offset; +} y_keyvalue_t; + +// open/close +extern y_keyvalue_t *y_keyvalue_open(); +extern void y_keyvalue_close(y_keyvalue_t *st); + +// set/get/delete +extern int y_keyvalue_set(y_keyvalue_t *st, char *key, int key_len, char *value, int value_len); +extern char *y_keyvalue_get(y_keyvalue_t *st, char *key, int key_len,int *value_len); +extern int y_keyvalue_delete(y_keyvalue_t *st, char *key, int key_len); + +// itelator +extern void y_keyvalue_rewind(y_keyvalue_t *st); +extern int y_keyvalue_hasnext(y_keyvalue_t *st); +extern char * y_keyvalue_get_currentkey(y_keyvalue_t *st, int *key_len); +extern char * y_keyvalue_get_currentvalue(y_keyvalue_t *st, int *value_len); + + +#endif /* __Y_KEYVALUE_H__ */ Deleted: trunk/src/y_strtable.c =================================================================== --- trunk/src/y_strtable.c 2010-11-29 16:07:40 UTC (rev 338) +++ trunk/src/y_strtable.c 2010-11-29 16:13:13 UTC (rev 339) @@ -1,186 +0,0 @@ -/* - gcc -W -Wall -D__STRTABLE_DEBUG__ -DMALLOC_DEBUG y_strtable.c swf_debug.c - */ -#include <stdio.h> -#include <malloc.h> -#include <string.h> -#include "swf_define.h" -#include "y_strtable.h" - -//#define Y_STRTABLE_INITSIZE 10 -#define Y_STRTABLE_INITSIZE 1 - -/* - * open/close - */ -y_strtable_t * -y_strtable_open() { - y_strtable_t *st = calloc(sizeof(*st), 1); - if (st == NULL) { - fprintf(stderr, "y_strtable_open: calloc failed\n"); - return NULL; - } - st->use_len = 0; - st->alloc_len = Y_STRTABLE_INITSIZE; - st->table = malloc(sizeof(*st->table) * Y_STRTABLE_INITSIZE); - return st; -} - -void -y_strtable_close(y_strtable_t *st) { - int i; - for (i = 0 ; i < st->use_len ; i++) { - if (st->table[i].use) { - free(st->table[i].key); - free(st->table[i].value); - } - } - free(st->table); - free(st); -} - - -/* - * set/get/delete - */ - -int -y_strtable_set(y_strtable_t *st, char *key, int key_len, char *value, int value_len) { - int i, offset = -1; - void *tmp; - if (st->use_len < st->alloc_len) { - offset = st->use_len; - } else { - for (i = 0 ; i < st->alloc_len ; i++) { - if (st->table[i].use == 0) { - offset = i; - break; - } - } - if (offset == -1) { - tmp = realloc(st->table, 2 * st->alloc_len * sizeof(*(st->table))); - if (tmp == NULL) { - fprintf(stderr, "y_strtable_set: realloc failed\n"); - return 1; - } - st->table = tmp; - st->alloc_len = 2 * st->alloc_len; - offset = st->use_len; - } - } - st->table[offset].key = malloc(key_len); - if (st->table[offset].key == NULL) { - - } - st->table[offset].value = malloc(value_len); - if (st->table[offset].value == NULL) { - free(st->table[offset].key); - return 1; // NG - } - memcpy(st->table[offset].key, key, key_len); - memcpy(st->table[offset].value, value, value_len); - st->table[offset].key_len = key_len; - st->table[offset].value_len = value_len; - st->table[offset].use = 1; - if (offset == st->use_len) { - st->use_len = offset + 1; - } - return 0; -} - -char * -y_strtable_get(y_strtable_t *st, char *key, int key_len, int *value_len) { - int i; - for (i = 0 ; i < st->use_len ; i++) { - if ((st->table[i].use) && - (st->table[i].key_len == key_len) && - (memcmp(st->table[i].key, key, key_len) == 0)) { - *value_len = st->table[i].value_len; - return st->table[i].key; - } - } - return NULL; -} - -int -y_strtable_delete(y_strtable_t *st, char *key, int key_len) { - int i; - for (i = 0 ; i < st->use_len ; i++) { - if ((st->table[i].use) && - (st->table[i].key_len == key_len) && - (memcmp(st->table[i].key, key, key_len) == 0)) { - free(st->table[i].key); - free(st->table[i].value); - st->table[i].key = 0; - st->table[i].value = 0; - st->table[i].use = 0; - return 0; - } - } - return 1; -} - -/* - * itelator - */ -void -y_strtable_rewind(y_strtable_t *st) { - st->get_offset = -1; -} -int -y_strtable_hasnext(y_strtable_t *st) { - do { - st->get_offset++; - if (st->table[st->get_offset].use) { - return 1; // found - } - } while (st->get_offset < st->use_len); - - return 0;// false - -} -char * -y_strtable_get_currentkey(y_strtable_t *st, int *key_len) { - if (st->get_offset >= st->use_len) { - return NULL; - } - *key_len = st->table[st->get_offset].key_len; - return st->table[st->get_offset].key; -} -char * -y_strtable_get_currentvalue(y_strtable_t *st, int *value_len) { - if (st->get_offset >= st->use_len) { - return NULL; - } - *value_len = st->table[st->get_offset].value_len; - return st->table[st->get_offset].value; -} - -#ifdef __STRTABLE_DEBUG__ - -int main(void) { - char *key, *value; - int key_len, value_len; - malloc_debug_start(); - y_strtable_t *st = y_strtable_open(); - y_strtable_set(st, "foo", 4, "baa", 4); - y_strtable_set(st, "baz", 4, "buz", 4); - y_strtable_rewind(st); - while(y_strtable_hasnext(st)) { - key = y_strtable_get_currentkey(st, &key_len); - value = y_strtable_get_currentvalue(st, &value_len); - printf("key=%s(%d), value=%s(%d)\n", key, key_len, value, value_len); - } - y_strtable_delete(st, "foo", 4); - y_strtable_rewind(st); - while(y_strtable_hasnext(st)) { - key = y_strtable_get_currentkey(st, &key_len); - value = y_strtable_get_currentvalue(st, &value_len); - printf("key=%s(%d), value=%s(%d)\n", key, key_len, value, value_len); - } - y_strtable_close(st); - malloc_debug_end(); - return 0; -} - -#endif /* __STRTABLE_DEBUG__ */ Deleted: trunk/src/y_strtable.h =================================================================== --- trunk/src/y_strtable.h 2010-11-29 16:07:40 UTC (rev 338) +++ trunk/src/y_strtable.h 2010-11-29 16:13:13 UTC (rev 339) @@ -1,34 +0,0 @@ -#ifndef __STRTABLE_H -#define __STRTABLE_H - -typedef struct _y_strtable_entry_t { - char *key, *value; - int key_len, value_len; - int use; -} y_strtable_entry_t; - -typedef struct _y_strtable_t { - int use_len; - int alloc_len; - y_strtable_entry_t *table; - // - signed int get_offset; -} y_strtable_t; - -// open/close -extern y_strtable_t *y_strtable_open(); -extern void y_strtable_close(y_strtable_t *st); - -// set/get/delete -extern int y_strtable_set(y_strtable_t *st, char *key, int key_len, char *value, int value_len); -extern char *y_strtable_get(y_strtable_t *st, char *key, int key_len,int *value_len); -extern int y_strtable_delete(y_strtable_t *st, char *key, int key_len); - -// itelator -extern void y_strtable_rewind(y_strtable_t *st); -extern int y_strtable_hasnext(y_strtable_t *st); -extern char * y_strtable_get_currentkey(y_strtable_t *st, int *key_len); -extern char * y_strtable_get_currentvalue(y_strtable_t *st, int *value_len); - - -#endif /* __STRTABLE_H */