tag: make tag.num_items unsigned

There's no point in declaring num_items as a uint8_t, it doesn't save
any space, due to padding.  This allows us to lift the articial "255
items" limitation.
This commit is contained in:
Max Kellermann 2009-02-27 09:02:13 +01:00
parent 75c2029b1c
commit c1ab2d06aa
3 changed files with 6 additions and 16 deletions

View File

@ -141,7 +141,6 @@ locate_item_free(struct locate_item *item)
static bool
locate_tag_search(const struct song *song, enum tag_type type, const char *str)
{
int i;
char *duplicate;
bool ret = false;
bool visited_types[TAG_NUM_OF_ITEM_TYPES];
@ -165,7 +164,7 @@ locate_tag_search(const struct song *song, enum tag_type type, const char *str)
memset(visited_types, 0, sizeof(visited_types));
for (i = 0; i < song->tag->num_items && !ret; i++) {
for (unsigned i = 0; i < song->tag->num_items && !ret; i++) {
visited_types[song->tag->items[i]->type] = true;
if (type != LOCATE_TAG_ANY_TYPE &&
song->tag->items[i]->type != type) {

View File

@ -246,7 +246,7 @@ struct tag *tag_new(void)
return ret;
}
static void tag_delete_item(struct tag *tag, int idx)
static void tag_delete_item(struct tag *tag, unsigned idx)
{
assert(idx < tag->num_items);
tag->num_items--;
@ -270,9 +270,7 @@ static void tag_delete_item(struct tag *tag, int idx)
void tag_clear_items_by_type(struct tag *tag, enum tag_type type)
{
int i;
for (i = 0; i < tag->num_items; i++) {
for (unsigned i = 0; i < tag->num_items; i++) {
if (tag->items[i]->type == type) {
tag_delete_item(tag, i);
/* decrement since when just deleted this node */
@ -304,7 +302,6 @@ void tag_free(struct tag *tag)
struct tag *tag_dup(const struct tag *tag)
{
struct tag *ret;
int i;
if (!tag)
return NULL;
@ -315,7 +312,7 @@ struct tag *tag_dup(const struct tag *tag)
ret->items = ret->num_items > 0 ? g_malloc(items_size(tag)) : NULL;
g_mutex_lock(tag_pool_lock);
for (i = 0; i < tag->num_items; i++)
for (unsigned i = 0; i < tag->num_items; i++)
ret->items[i] = tag_pool_dup_item(tag->items[i]);
g_mutex_unlock(tag_pool_lock);
@ -388,8 +385,6 @@ bool tag_has_type(const struct tag *tag, enum tag_type type)
bool tag_equal(const struct tag *tag1, const struct tag *tag2)
{
int i;
if (tag1 == NULL && tag2 == NULL)
return true;
else if (!tag1 || !tag2)
@ -401,7 +396,7 @@ bool tag_equal(const struct tag *tag1, const struct tag *tag2)
if (tag1->num_items != tag2->num_items)
return false;
for (i = 0; i < tag1->num_items; i++) {
for (unsigned i = 0; i < tag1->num_items; i++) {
if (tag1->items[i]->type != tag2->items[i]->type)
return false;
if (strcmp(tag1->items[i]->value, tag2->items[i]->value)) {
@ -566,9 +561,5 @@ void tag_add_item_n(struct tag *tag, enum tag_type itemType,
if (!value || !len)
return;
/* we can't hold more than 255 items */
if (tag->num_items == 255)
return;
tag_add_item_internal(tag, itemType, value, len);
}

View File

@ -58,7 +58,7 @@ struct tag_item {
struct tag {
int time;
struct tag_item **items;
uint8_t num_items;
unsigned num_items;
};
struct tag *tag_ape_load(const char *file);