00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef GAVL_METADATA_H_INCLUDED
00023 #define GAVL_METADATA_H_INCLUDED
00024
00025 #ifdef __cplusplus
00026 extern "C" {
00027 #endif
00028
00029 #include <gavl/gavldefs.h>
00030
00054 #define GAVL_METADATA_DATE_STRING_LEN 11
00055
00059 #define GAVL_METADATA_DATE_TIME_STRING_LEN 20
00060
00064 typedef struct
00065 {
00066 char * key;
00067 char * val;
00068 } gavl_metadata_tag_t;
00069
00074 typedef struct
00075 {
00076 gavl_metadata_tag_t * tags;
00077 int tags_alloc;
00078 int num_tags;
00079 } gavl_metadata_t;
00080
00085 GAVL_PUBLIC void
00086 gavl_metadata_free(gavl_metadata_t * m);
00087
00096 GAVL_PUBLIC void
00097 gavl_metadata_init(gavl_metadata_t * m);
00098
00107 GAVL_PUBLIC void
00108 gavl_metadata_set(gavl_metadata_t * m,
00109 const char * key,
00110 const char * val);
00111
00121 GAVL_PUBLIC void
00122 gavl_metadata_set_nocpy(gavl_metadata_t * m,
00123 const char * key,
00124 char * val);
00125
00132 GAVL_PUBLIC
00133 const char * gavl_metadata_get(const gavl_metadata_t * m,
00134 const char * key);
00135
00142 GAVL_PUBLIC void
00143 gavl_metadata_set_int(gavl_metadata_t * m,
00144 const char * key,
00145 int val);
00146
00154 GAVL_PUBLIC
00155 int gavl_metadata_get_int(const gavl_metadata_t * m,
00156 const char * key, int * ret);
00157
00166 GAVL_PUBLIC void
00167 gavl_metadata_set_date(gavl_metadata_t * m,
00168 const char * key,
00169 int year,
00170 int month,
00171 int day);
00172
00182 GAVL_PUBLIC int
00183 gavl_metadata_get_date(gavl_metadata_t * m,
00184 const char * key,
00185 int * year,
00186 int * month,
00187 int * day);
00188
00200 GAVL_PUBLIC void
00201 gavl_metadata_set_date_time(gavl_metadata_t * m,
00202 const char * key,
00203 int year,
00204 int month,
00205 int day,
00206 int hour,
00207 int minute,
00208 int second);
00209
00222 GAVL_PUBLIC int
00223 gavl_metadata_get_date_time(gavl_metadata_t * m,
00224 const char * key,
00225 int * year,
00226 int * month,
00227 int * day,
00228 int * hour,
00229 int * minute,
00230 int * second);
00231
00242 GAVL_PUBLIC void
00243 gavl_metadata_date_to_string(int year,
00244 int month,
00245 int day, char * ret);
00246
00260 GAVL_PUBLIC void
00261 gavl_metadata_date_time_to_string(int year,
00262 int month,
00263 int day,
00264 int hour,
00265 int minute,
00266 int second,
00267 char * ret);
00268
00279 GAVL_PUBLIC
00280 void gavl_metadata_merge(gavl_metadata_t * dst,
00281 const gavl_metadata_t * src1,
00282 const gavl_metadata_t * src2);
00283
00292 GAVL_PUBLIC
00293 void gavl_metadata_merge2(gavl_metadata_t * dst,
00294 const gavl_metadata_t * src);
00295
00303 GAVL_PUBLIC void
00304 gavl_metadata_copy(gavl_metadata_t * dst,
00305 const gavl_metadata_t * src);
00306
00312 GAVL_PUBLIC void
00313 gavl_metadata_dump(const gavl_metadata_t * m, int indent);
00314
00321 GAVL_PUBLIC int
00322 gavl_metadata_equal(const gavl_metadata_t * m1,
00323 const gavl_metadata_t * m2);
00324
00329 #ifdef __cplusplus
00330 }
00331 #endif
00332
00333 #endif // GAVL_METADATA_H_INCLUDED