1 /* the Music Player Daemon (MPD)
2 * Copyright (C) 2003-2007 by Warren Dukes (warren.dukes@gmail.com)
3 * This project's homepage is: http://www.musicpd.org
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
44 extern const char *mpdTagItemKeys
[];
48 char value
[sizeof(long)];
53 struct tag_item
**items
;
57 struct tag
*tag_ape_load(const char *file
);
59 struct tag
*tag_new(void);
61 void tag_lib_init(void);
63 void tag_clear_items_by_type(struct tag
*tag
, enum tag_type itemType
);
65 void tag_free(struct tag
*tag
);
68 * Gives an optional hint to the tag library that we will now add
69 * several tag items; this is used by the library to optimize memory
70 * allocation. Only one tag may be in this state, and this tag must
71 * not have any items yet. You must call tag_end_add() when you are
74 void tag_begin_add(struct tag
*tag
);
77 * Finishes the operation started with tag_begin_add().
79 void tag_end_add(struct tag
*tag
);
81 void tag_add_item_n(struct tag
*tag
, enum tag_type itemType
,
82 const char *value
, size_t len
);
84 static inline void tag_add_item(struct tag
*tag
, enum tag_type itemType
,
87 tag_add_item_n(tag
, itemType
, value
, strlen(value
));
90 struct tag
*tag_dup(const struct tag
*tag
);
93 * Returns true if the tag contains no items. This ignores the "time"
97 tag_is_empty(const struct tag
*tag
)
99 return tag
->numOfItems
== 0;
103 * Checks whether the tag contains one or more items with
104 * the specified type.
106 bool tag_has_type(const struct tag
*tag
, enum tag_type type
);
108 int tag_equal(const struct tag
*tag1
, const struct tag
*tag2
);