libcmml  0.9.1
cmml.h
Go to the documentation of this file.
1 /* Copyright (C) 2003 CSIRO Australia
2 
3  Redistribution and use in source and binary forms, with or without
4  modification, are permitted provided that the following conditions
5  are met:
6 
7  - Redistributions of source code must retain the above copyright
8  notice, this list of conditions and the following disclaimer.
9 
10  - Redistributions in binary form must reproduce the above copyright
11  notice, this list of conditions and the following disclaimer in the
12  documentation and/or other materials provided with the distribution.
13 
14  - Neither the name of the CSIRO nor the names of its
15  contributors may be used to endorse or promote products derived from
16  this software without specific prior written permission.
17 
18  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
21  PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE ORGANISATION OR
22  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
25  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
26  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
27  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */
30 
31 /* cmml.h */
32 
33 #ifndef __CMML_H__
34 #define __CMML_H__
35 
43 #include <stdio.h>
44 #include <expat.h>
45 
49 #ifndef _CMML_PRIVATE
50 typedef void CMML;
51 #endif
52 
53 /* ------------------------- TYPES --------------------------------- */
54 /* CMML_Time and CMML_List are kept here and not in cmml_private.h */
55 /* because the library user may need detailed access to these fields */
56 
61 typedef struct {
62  short tm_hsec;
63  short tm_sec;
64  short tm_min;
65  short tm_hour;
66  short tm_mday;
67  short tm_mon;
68  short tm_year;
70 } CMML_UTC;
71 
75 typedef enum _CMML_Time_Type {
79 
80 
85 typedef struct {
86  char *tstr;
89  union {
91  double sec;
92  } t;
93 } CMML_Time ;
94 
95 
99 typedef struct _CMML_List CMML_List;
105 struct _CMML_List {
108  void * data;
109 };
110 
114 typedef void * (*CMML_CloneFunc) (void * data);
115 
119 typedef void * (*CMML_FreeFunc) (void * data);
120 
128 typedef int (*CMML_CmpFunc) (void * cmp_ctx, void * s1, void * s2);
129 
130 
136 typedef struct {
137  char *xml_version;
138  char *xml_encoding;
141  char *cmml_lang;
142  char *cmml_dir;
143  char *cmml_id;
144  char *cmml_xmlns;
146 } CMML_Preamble;
147 
148 
153 typedef struct {
154  char *id;
155  char *name;
156  char *value;
158 
162 typedef struct {
163  char *id;
164  char *lang;
165  char *dir;
166  char *granulerate;
167  char *contenttype;
168  char *src;
171  char *title;
175 
182 typedef struct {
183  char *id;
186  CMML_List * import;
187 } CMML_Stream;
188 
189 
194 typedef struct {
195  char *id;
196  char *lang;
197  char *dir;
198  char *name;
199  char *content;
200  char *scheme;
202 
207 typedef struct {
208  char *id;
209  char *class;
210  char *title;
211  char *lang;
212  char *dir;
213  char *href;
214  char *type;
215  char *rel;
216  char *rev;
217  char *media;
219 
223 typedef struct {
224  char *head_id;
225  char *lang;
226  char *dir;
227  char *profile;
228  char *title;
229  char *title_id;
230  char *title_lang;
231  char *title_dir;
232  char *base_id;
233  char *base_href;
236 } CMML_Head;
237 
238 
242 typedef struct {
243  char *clip_id;
244  char *class;
245  char *title;
246  char *lang;
247  char *dir;
248  char *track;
252  char *anchor_id;
253  char *anchor_class;
254  char *anchor_title;
255  char *anchor_lang;
256  char *anchor_dir;
257  char *anchor_href;
258  char *anchor_text;
259  char *img_id;
260  char *img_class;
261  char *img_title;
262  char *img_lang;
263  char *img_dir;
264  char *img_src;
265  char *img_alt;
266  char *desc_id;
267  char *desc_class;
268  char *desc_title;
269  char *desc_lang;
270  char *desc_dir;
271  char *desc_text;
272 } CMML_Clip;
273 
278 typedef enum _CMML_Element_Type {
284  CMML_CLIP
286 
287 
293 typedef struct {
296  union {
300  } e;
301 } CMML_Element;
302 
303 
312 typedef enum _CMML_Error_Type {
313  /* general processing feedback */
316  /* fatal errors */
328  /* sloppy errors */
335 
340 typedef struct {
342  long line;
343  long col;
344 } CMML_Error;
345 
357 typedef int (*CMMLReadStream) (CMML *cmml, const CMML_Stream *stream,
358  void * user_data);
370 typedef int (*CMMLReadHead) (CMML *cmml, const CMML_Head *head,
371  void * user_data);
372 
384 typedef int (*CMMLReadClip) (CMML *cmml, const CMML_Clip *clip,
385  void * user_data);
386 
387 
388 /* ---------------------- API --------------------------------*/
389 
390 /* --------------------------------- *
391  * CMML parsing: functions in cmml.c *
392  * --------------------------------- */
393 
404 CMML * cmml_open (char *XMLfilename);
405 
417 CMML * cmml_new (FILE * file);
418 
427 FILE * cmml_destroy (CMML * cmml);
428 
437 CMML * cmml_close (CMML * cmml);
438 
458  void * user_data);
459 
472 long cmml_read (CMML *cmml, long n); /* file */
473 
483 void cmml_set_sloppy (CMML *cmml, int value);
484 
494 
504 
514 
524 
535 
546 
547 
553 void cmml_error_clear (CMML * cmml);
554 
565 int cmml_set_window (CMML * cmml, CMML_Time * start, CMML_Time * end);
566 
576 double cmml_skip_to_secs (CMML *cmml, double seconds);
577 
587 double cmml_skip_to_utc (CMML *cmml, const char * utc);
588 
598 double cmml_skip_to_id (CMML *cmml, const char * id);
599 
609 double cmml_skip_to_offset (CMML *cmml, const char * offset);
610 
611 
612 /* ---------------------------------------------------- *
613  * CMML element handling: cmml_element.c cmml_snprint.c *
614  * ---------------------------------------------------- */
615 
627 CMML_Preamble * cmml_preamble_new (char *encoding, char *id, char *lang, char *dir, char *granulerate);
628 
637 
644 
651 
660 CMML_Clip * cmml_clip_new (CMML_Time *start_time, CMML_Time *end_time);
661 
670 
679 
688 
697 
706 
715 
723 
731 
738 
745 
752 
759 
771 int cmml_preamble_snprint(char *buf, int n, CMML_Preamble *pre);
772 
785 int cmml_element_snprint (char *buf, int n, CMML_Element *elem);
786 
797 int cmml_stream_snprint (char *buf, int n, CMML_Stream *stream);
798 
809 int cmml_stream_pretty_snprint (char *buf, int n, CMML_Stream *stream);
810 
821 int cmml_head_snprint (char *buf, int n, CMML_Head *head);
822 
833 int cmml_head_pretty_snprint (char *buf, int n, CMML_Head *head);
834 
845 int cmml_clip_snprint (char *buf, int n, CMML_Clip *clip);
846 
857 int cmml_clip_pretty_snprint (char *buf, int n, CMML_Clip *clip);
858 
870 int cmml_error_snprint (char *buf, int n, CMML_Error *error, CMML *cmml);
871 
872 
873 /* ----------------------------------------------- *
874  * helper functions for list handling: cmml_list.c *
875  * ----------------------------------------------- */
876 
883 
892 
902 
911 
920 CMML_List * cmml_list_prepend (CMML_List * list, void * data);
921 
930 CMML_List * cmml_list_append (CMML_List * list, void * data);
931 
942 CMML_List * cmml_list_add_before (CMML_List * list, void * data,
943  CMML_List * node);
954 CMML_List * cmml_list_add_after (CMML_List * list, void * data,
955  CMML_List * node);
956 
965 CMML_List * cmml_list_find (CMML_List * list, void * data);
966 
976 
985 
994 
1004 
1015  CMML_FreeFunc free_func);
1016 
1026 
1027 
1028 /* ----------------------------------------------- *
1029  * helper functions for time handling: cmml_time.c *
1030  * ----------------------------------------------- */
1031 
1040 CMML_Time * cmml_time_new (const char * s);
1041 
1049 CMML_Time * cmml_sec_new (const char * s);
1050 
1058 CMML_Time * cmml_time_new_secs (double seconds);
1059 
1067 CMML_Time * cmml_utc_new (const char * s);
1068 
1082 int cmml_time_interval_new (const char * s,
1083  CMML_Time ** t_start, CMML_Time ** t_end);
1084 
1096 CMML_Time *cmml_time_new_in_sec (const char * s, CMML_Time * ref, double base);
1097 
1109 
1116 
1125 
1133 double cmml_sec_parse (const char *s);
1134 
1143 CMML_UTC * cmml_utc_parse (const char * s);
1144 
1153 
1163 double cmml_utc_diff (CMML_UTC *t2, CMML_UTC *t1);
1164 
1175 int cmml_npt_snprint (char * buf, int n, double seconds);
1176 
1187 int cmml_utc_snprint (char *buf, int n, CMML_UTC *t);
1188 
1199 int cmml_utc_pretty_snprint (char *buf, int n, CMML_UTC *t);
1200 
1201 
1202 
1203 #endif /* __CMML_H__ */
CMML_Clip::title
char * title
Definition: cmml.h:245
CMML_Element::clip
CMML_Clip * clip
Definition: cmml.h:299
CMML_LinkElement::rev
char * rev
Definition: cmml.h:216
DEFAULT_LONG_COMMAND
#define DEFAULT_LONG_COMMAND
Definition: cmml-fortune.c:66
CMML_Clip::start_time
CMML_Time * start_time
Definition: cmml.h:249
main
int main(int argc, char *argv[])
Definition: cmml-timeshift.c:228
CMML_Clip::dir
char * dir
Definition: cmml.h:247
cmml_head_destroy
void cmml_head_destroy(CMML_Head *head)
CMML_LinkElement
Definition: cmml.h:207
cmml_list_is_singleton
int cmml_list_is_singleton(CMML_List *list)
CMMLReadStream
int(* CMMLReadStream)(CMML *cmml, const CMML_Stream *stream, void *user_data)
Definition: cmml.h:357
CMML_UTC::tm_mday
short tm_mday
Definition: cmml.h:66
main
int main(int argc, char *argv[])
Definition: cmml-validate.c:212
CMML_Head::title_id
char * title_id
Definition: cmml.h:229
PrintUsage
static void PrintUsage(char *prog)
Definition: cmml-timeshift.c:95
read_head
static int read_head(CMML *cmml, const CMML_Head *head, void *user_data)
Definition: cmml-validate.c:161
cmml_get_last_clip
CMML_Clip * cmml_get_last_clip(CMML *cmml)
CMML_UTC::tm_year
short tm_year
Definition: cmml.h:68
cmml_head_pretty_snprint
int cmml_head_pretty_snprint(char *buf, int n, CMML_Head *head)
cmml_list_clone_with
CMML_List * cmml_list_clone_with(CMML_List *list, CMML_CloneFunc clone)
cmml_preamble_destroy
void cmml_preamble_destroy(CMML_Preamble *preamble)
CMML_Clip::desc_class
char * desc_class
Definition: cmml.h:267
CMML_CmpFunc
int(* CMML_CmpFunc)(void *cmp_ctx, void *s1, void *s2)
Definition: cmml.h:128
cmml_set_sloppy
void cmml_set_sloppy(CMML *cmml, int value)
CMML_STREAM_NOT_FIRST
@ CMML_STREAM_NOT_FIRST
Definition: cmml.h:324
read_head
static int read_head(CMML *cmml, const CMML_Head *head, void *user_data)
Definition: cmml-timeshift.c:158
CMMLReadClip
int(* CMMLReadClip)(CMML *cmml, const CMML_Clip *clip, void *user_data)
Definition: cmml.h:384
PrintUsage
static void PrintUsage(char *prog)
Definition: cmml-fortune.c:113
CMML_Stream::id
char * id
Definition: cmml.h:183
cmml_stream_clone
CMML_Stream * cmml_stream_clone(CMML_Stream *src)
cmml_element_destroy
void cmml_element_destroy(CMML_Element *element)
BUFSIZE
#define BUFSIZE
Definition: cmml-fortune.c:71
PrintUsage
static void PrintUsage(char *prog)
Definition: cmml-validate.c:96
BUFSIZE
#define BUFSIZE
Definition: cmml-fix.c:78
CMML_CloneFunc
void *(* CMML_CloneFunc)(void *data)
Definition: cmml.h:114
CMML_LinkElement::type
char * type
Definition: cmml.h:214
CMML_ImportElement::granulerate
char * granulerate
Definition: cmml.h:166
CMML_Preamble::xml_encoding
char * xml_encoding
Definition: cmml.h:138
CMML_Clip::img_id
char * img_id
Definition: cmml.h:259
cmml_utc_parse
CMML_UTC * cmml_utc_parse(const char *s)
CMML_MetaElement::id
char * id
Definition: cmml.h:195
CMML_Clip::track
char * track
Definition: cmml.h:248
cmml_sec_new
CMML_Time * cmml_sec_new(const char *s)
CMML_LinkElement::media
char * media
Definition: cmml.h:217
CMML_Preamble::cmml_dir
char * cmml_dir
Definition: cmml.h:142
cmml_list_is_empty
int cmml_list_is_empty(CMML_List *list)
secs
static double secs
Definition: cmml-timeshift.c:87
CMML_Head::lang
char * lang
Definition: cmml.h:225
CMML_Head::base_href
char * base_href
Definition: cmml.h:233
CMML_Preamble::cmml_lang
char * cmml_lang
Definition: cmml.h:141
CMML_FORMAT_ERROR
@ CMML_FORMAT_ERROR
Definition: cmml.h:329
_CMML_Time_Type
_CMML_Time_Type
Definition: cmml.h:75
cmml_clip_snprint
int cmml_clip_snprint(char *buf, int n, CMML_Clip *clip)
cmml_error_destroy
void cmml_error_destroy(CMML_Error *error)
CMML_Error_Type
enum _CMML_Error_Type CMML_Error_Type
CMML_CMML
@ CMML_CMML
Definition: cmml.h:280
outfile
static FILE * outfile
Definition: cmml-timeshift.c:82
BUFSIZE
#define BUFSIZE
Definition: cmml-validate.c:79
cmml_open
CMML * cmml_open(char *XMLfilename)
CMML_Clip::desc_title
char * desc_title
Definition: cmml.h:268
CMML_EOF
@ CMML_EOF
Definition: cmml.h:315
CMML_Clip::lang
char * lang
Definition: cmml.h:246
CMML_Clip::anchor_id
char * anchor_id
Definition: cmml.h:252
_CMML_Element_Type
_CMML_Element_Type
Definition: cmml.h:278
CMML_UTC_TIME
@ CMML_UTC_TIME
Definition: cmml.h:77
CMML_ParamElement::name
char * name
Definition: cmml.h:155
CMML_Time_Type
enum _CMML_Time_Type CMML_Time_Type
CMML_UTC::tm_min
short tm_min
Definition: cmml.h:64
cmml_npt_snprint
int cmml_npt_snprint(char *buf, int n, double seconds)
outfile
static FILE * outfile
Definition: cmml-fix.c:87
cmml_set_window
int cmml_set_window(CMML *cmml, CMML_Time *start, CMML_Time *end)
CMML_OK
@ CMML_OK
Definition: cmml.h:314
CMML_Clip
Definition: cmml.h:242
CMML_Clip::img_lang
char * img_lang
Definition: cmml.h:262
cmml_error_clear
void cmml_error_clear(CMML *cmml)
cmml_clip_clone
CMML_Clip * cmml_clip_clone(CMML_Clip *src)
CMML_Time::tstr
char * tstr
Definition: cmml.h:86
PrintUsage
static void PrintUsage(char *prog)
Definition: cmml-fix.c:95
CMML_UTC::tm_hour
short tm_hour
Definition: cmml.h:65
cmml_element_snprint
int cmml_element_snprint(char *buf, int n, CMML_Element *elem)
CMML_TIME_ERROR
@ CMML_TIME_ERROR
Definition: cmml.h:318
cmml_head_clone
CMML_Head * cmml_head_clone(CMML_Head *src)
CMML_Clip::desc_id
char * desc_id
Definition: cmml.h:266
cmml_list_free_with
CMML_List * cmml_list_free_with(CMML_List *list, CMML_FreeFunc free_func)
CMML_Preamble::doctype_declared
int doctype_declared
Definition: cmml.h:140
cmml_skip_to_id
double cmml_skip_to_id(CMML *cmml, const char *id)
cmml_stream_snprint
int cmml_stream_snprint(char *buf, int n, CMML_Stream *stream)
CMML_Head::title_dir
char * title_dir
Definition: cmml.h:231
CMML_Time::type
CMML_Time_Type type
Definition: cmml.h:87
CMML_HEAD
@ CMML_HEAD
Definition: cmml.h:283
read_stream
static int read_stream(CMML *cmml, const CMML_Stream *stream, void *user_data)
Definition: cmml-validate.c:133
CMML_Clip::meta
CMML_List * meta
Definition: cmml.h:251
CMML_ParamElement
Definition: cmml.h:153
cmml_new
CMML * cmml_new(FILE *file)
CMML_Preamble::cmml_id
char * cmml_id
Definition: cmml.h:143
verbose
static int verbose
Definition: cmml-validate.c:88
CMML_Head::dir
char * dir
Definition: cmml.h:226
CMML_Clip::img_title
char * img_title
Definition: cmml.h:261
CMML_Clip::end_time
CMML_Time * end_time
Definition: cmml.h:250
cmml_utc_clone
CMML_UTC * cmml_utc_clone(CMML_UTC *t)
cmml_head_new
CMML_Head * cmml_head_new(void)
CMML_Clip::anchor_text
char * anchor_text
Definition: cmml.h:258
main
int main(int argc, char *argv[])
Definition: cmml-fortune.c:197
cmml_utc_pretty_snprint
int cmml_utc_pretty_snprint(char *buf, int n, CMML_UTC *t)
CMML_LinkElement::title
char * title
Definition: cmml.h:210
read_clip
static int read_clip(CMML *cmml, const CMML_Clip *clip, void *user_data)
Definition: cmml-fix.c:188
cmml_head_snprint
int cmml_head_snprint(char *buf, int n, CMML_Head *head)
CMML_ImportElement::dir
char * dir
Definition: cmml.h:165
_CMML_List::next
CMML_List * next
Definition: cmml.h:107
cmml_element_clone
CMML_Element * cmml_element_clone(CMML_Element *src)
cmml_utc_new
CMML_Time * cmml_utc_new(const char *s)
CMML_Element
Definition: cmml.h:293
cmml_preamble_new
CMML_Preamble * cmml_preamble_new(char *encoding, char *id, char *lang, char *dir, char *granulerate)
cmml_time_free
void cmml_time_free(CMML_Time *t)
CMML_ImportElement::title
char * title
Definition: cmml.h:171
CMML_UNKNOWN_TAG
@ CMML_UNKNOWN_TAG
Definition: cmml.h:330
CMML_Head::title_lang
char * title_lang
Definition: cmml.h:230
cmml_destroy
FILE * cmml_destroy(CMML *cmml)
main
int main(int argc, char *argv[])
Definition: cmml-fix.c:209
cmml_stream_pretty_snprint
int cmml_stream_pretty_snprint(char *buf, int n, CMML_Stream *stream)
CMML_NO_CMML_TAG
@ CMML_NO_CMML_TAG
Definition: cmml.h:322
CMML_DUPLICATE_STREAM
@ CMML_DUPLICATE_STREAM
Definition: cmml.h:326
CMML_Clip::img_src
char * img_src
Definition: cmml.h:264
CMML_Head::meta
CMML_List * meta
Definition: cmml.h:234
CMML_ImportElement::id
char * id
Definition: cmml.h:163
CMML_IMPORT
@ CMML_IMPORT
Definition: cmml.h:282
CMML_NONE
@ CMML_NONE
Definition: cmml.h:279
_CMML_List
Definition: cmml.h:105
BUFSIZE
#define BUFSIZE
Definition: cmml-timeshift.c:73
CMML_Head::link
CMML_List * link
Definition: cmml.h:235
cmml.h
DEFAULT_DURATION
#define DEFAULT_DURATION
Definition: cmml-fortune.c:51
CMML_Element::type
CMML_Element_Type type
Definition: cmml.h:294
cmml_time_new
CMML_Time * cmml_time_new(const char *s)
CMML_NO_HEAD_TAG
@ CMML_NO_HEAD_TAG
Definition: cmml.h:323
CMML_ImportElement::param
CMML_List * param
Definition: cmml.h:172
CMML_Time
Definition: cmml.h:85
CMML_LinkElement::href
char * href
Definition: cmml.h:213
cmml_utc_diff
double cmml_utc_diff(CMML_UTC *t2, CMML_UTC *t1)
CMML_Clip::anchor_lang
char * anchor_lang
Definition: cmml.h:255
cmml_skip_to_secs
double cmml_skip_to_secs(CMML *cmml, double seconds)
cmml_list_add_after
CMML_List * cmml_list_add_after(CMML_List *list, void *data, CMML_List *node)
CMML_Head::title
char * title
Definition: cmml.h:228
CMML_MetaElement::name
char * name
Definition: cmml.h:198
CMML_Clip::img_dir
char * img_dir
Definition: cmml.h:263
CMML_Clip::anchor_dir
char * anchor_dir
Definition: cmml.h:256
CMML_Preamble
Definition: cmml.h:136
_CMML_Error_Type
_CMML_Error_Type
Definition: cmml.h:312
CMML_MetaElement::content
char * content
Definition: cmml.h:199
CMML_DUPLICATE_HEAD
@ CMML_DUPLICATE_HEAD
Definition: cmml.h:327
cmml_list_new
CMML_List * cmml_list_new(void)
CMML_Preamble::xml_version
char * xml_version
Definition: cmml.h:137
CMML_READ_ERROR
@ CMML_READ_ERROR
Definition: cmml.h:317
read_clip
static int read_clip(CMML *cmml, const CMML_Clip *clip, void *user_data)
Definition: cmml-timeshift.c:184
cmml_stream_new
CMML_Stream * cmml_stream_new(void)
read_head
static int read_head(CMML *cmml, const CMML_Head *head, void *user_data)
Definition: cmml-fix.c:162
CMML_Clip::anchor_class
char * anchor_class
Definition: cmml.h:253
cmml_read
long cmml_read(CMML *cmml, long n)
CMML_LinkElement::dir
char * dir
Definition: cmml.h:212
get_fortune
static char * get_fortune(char *command)
Definition: cmml-fortune.c:172
cmml_time_interval_new
int cmml_time_interval_new(const char *s, CMML_Time **t_start, CMML_Time **t_end)
CMML_Clip::desc_dir
char * desc_dir
Definition: cmml.h:270
cmml_list_prepend
CMML_List * cmml_list_prepend(CMML_List *list, void *data)
cmml_set_read_callbacks
int cmml_set_read_callbacks(CMML *cmml, CMMLReadStream read_stream, CMMLReadHead read_head, CMMLReadClip read_clip, void *user_data)
CMML_Head::head_id
char * head_id
Definition: cmml.h:224
CMML_CLIP
@ CMML_CLIP
Definition: cmml.h:284
cmml_list_find
CMML_List * cmml_list_find(CMML_List *list, void *data)
cmml_utc_snprint
int cmml_utc_snprint(char *buf, int n, CMML_UTC *t)
CMML_ImportElement
Definition: cmml.h:162
CMML_UTC::tm_hsec
short tm_hsec
Definition: cmml.h:62
cmml_close
CMML * cmml_close(CMML *cmml)
CMML_Head::base_id
char * base_id
Definition: cmml.h:232
cmml_get_last_head
CMML_Head * cmml_get_last_head(CMML *cmml)
CMML_Element::stream
CMML_Stream * stream
Definition: cmml.h:297
CMML_NONSEQUENTIAL_CLIP
@ CMML_NONSEQUENTIAL_CLIP
Definition: cmml.h:333
cmml_get_previous_clip
CMML_Clip * cmml_get_previous_clip(CMML *cmml)
CMML_Stream
Definition: cmml.h:182
CMML_Clip::img_alt
char * img_alt
Definition: cmml.h:265
CMML_MALLOC_ERROR
@ CMML_MALLOC_ERROR
Definition: cmml.h:319
DEFAULT_SHORT_COMMAND
#define DEFAULT_SHORT_COMMAND
Definition: cmml-fortune.c:61
cmml_list_remove
CMML_List * cmml_list_remove(CMML_List *list, CMML_List *node)
CMML
void CMML
Definition: cmml.h:50
cmml_list_clone
CMML_List * cmml_list_clone(CMML_List *list)
CMML_Error
Definition: cmml.h:340
cmml_list_add_before
CMML_List * cmml_list_add_before(CMML_List *list, void *data, CMML_List *node)
cmml_stream_destroy
void cmml_stream_destroy(CMML_Stream *stream)
cmml_clip_new
CMML_Clip * cmml_clip_new(CMML_Time *start_time, CMML_Time *end_time)
CMML_UTC
Definition: cmml.h:61
cmml_get_last_stream
CMML_Stream * cmml_get_last_stream(CMML *cmml)
CMML_Error::line
long line
Definition: cmml.h:342
read_stream
static int read_stream(CMML *cmml, const CMML_Stream *stream, void *user_data)
Definition: cmml-timeshift.c:131
read_stream
static int read_stream(CMML *cmml, const CMML_Stream *stream, void *user_data)
Definition: cmml-fix.c:136
CMML_Preamble::cmml_granulerate
char * cmml_granulerate
Definition: cmml.h:145
CMML_ParamElement::value
char * value
Definition: cmml.h:156
CMML_Error::col
long col
Definition: cmml.h:343
cmml_list_tail
CMML_List * cmml_list_tail(CMML_List *list)
CMML_Time::sec
double sec
Definition: cmml.h:91
CMML_TAG_IGNORED
@ CMML_TAG_IGNORED
Definition: cmml.h:331
CMML_SEC_TIME
@ CMML_SEC_TIME
Definition: cmml.h:76
CMML_Preamble::xml_standalone
int xml_standalone
Definition: cmml.h:139
CMML_Head
Definition: cmml.h:223
cmml_list_free
CMML_List * cmml_list_free(CMML_List *list)
CMML_Error::type
CMML_Error_Type type
Definition: cmml.h:341
cmml_skip_to_offset
double cmml_skip_to_offset(CMML *cmml, const char *offset)
CMML_ImportElement::src
char * src
Definition: cmml.h:168
cmml_time_new_secs
CMML_Time * cmml_time_new_secs(double seconds)
cmml_error_snprint
int cmml_error_snprint(char *buf, int n, CMML_Error *error, CMML *cmml)
CMML_Clip::anchor_title
char * anchor_title
Definition: cmml.h:254
CMMLReadHead
int(* CMMLReadHead)(CMML *cmml, const CMML_Head *head, void *user_data)
Definition: cmml.h:370
CMML_ParamElement::id
char * id
Definition: cmml.h:154
CMML_MetaElement::scheme
char * scheme
Definition: cmml.h:200
CMML_HEAD_AFTER_CLIP
@ CMML_HEAD_AFTER_CLIP
Definition: cmml.h:325
CMML_Stream::basetime
CMML_Time * basetime
Definition: cmml.h:184
cmml_clip_destroy
void cmml_clip_destroy(CMML_Clip *clip)
cmml_preamble_snprint
int cmml_preamble_snprint(char *buf, int n, CMML_Preamble *pre)
DEFAULT_ENCODING
#define DEFAULT_ENCODING
Definition: cmml-fortune.c:56
cmml_error_new
CMML_Error * cmml_error_new(CMML_Error_Type type)
cmml_time_clone
CMML_Time * cmml_time_clone(CMML_Time *t)
CMML_Time::utc
CMML_UTC * utc
Definition: cmml.h:90
CMML_FreeFunc
void *(* CMML_FreeFunc)(void *data)
Definition: cmml.h:119
cmml_clip_pretty_snprint
int cmml_clip_pretty_snprint(char *buf, int n, CMML_Clip *clip)
CMML_ImportElement::start_time
CMML_Time * start_time
Definition: cmml.h:169
CMML_Clip::img_class
char * img_class
Definition: cmml.h:260
CMML_LinkElement::lang
char * lang
Definition: cmml.h:211
cmml_preamble_clone
CMML_Preamble * cmml_preamble_clone(CMML_Preamble *src)
cmml_element_new
CMML_Element * cmml_element_new(CMML_Element_Type type)
CMML_Element_Type
enum _CMML_Element_Type CMML_Element_Type
CMML_EXPAT_ERROR
@ CMML_EXPAT_ERROR
Definition: cmml.h:320
cmml_time_utc_to_sec
CMML_Time * cmml_time_utc_to_sec(CMML_Time *t, CMML_Time *ref, double base)
cmml_sec_parse
double cmml_sec_parse(const char *s)
CMML_Clip::anchor_href
char * anchor_href
Definition: cmml.h:257
CMML_Element::head
CMML_Head * head
Definition: cmml.h:298
CMML_LinkElement::id
char * id
Definition: cmml.h:208
CMML_Clip::desc_text
char * desc_text
Definition: cmml.h:271
CMML_UTC::tm_mon
short tm_mon
Definition: cmml.h:67
CMML_STREAM
@ CMML_STREAM
Definition: cmml.h:281
CMML_Stream::utc
CMML_Time * utc
Definition: cmml.h:185
CMML_Clip::clip_id
char * clip_id
Definition: cmml.h:243
cmml_time_new_in_sec
CMML_Time * cmml_time_new_in_sec(const char *s, CMML_Time *ref, double base)
CMML_Head::profile
char * profile
Definition: cmml.h:227
CMML_Clip::desc_lang
char * desc_lang
Definition: cmml.h:269
cmml_get_preamble
CMML_Preamble * cmml_get_preamble(CMML *cmml)
CMML_MetaElement::lang
char * lang
Definition: cmml.h:196
CMML_Time::t
union CMML_Time::@0 t
CMML_Preamble::cmml_xmlns
char * cmml_xmlns
Definition: cmml.h:144
_CMML_List::prev
CMML_List * prev
Definition: cmml.h:106
CMML_UTC::tm_sec
short tm_sec
Definition: cmml.h:63
cmml_get_last_error
CMML_Error * cmml_get_last_error(CMML *cmml)
CMML_ImportElement::contenttype
char * contenttype
Definition: cmml.h:167
cmml_skip_to_utc
double cmml_skip_to_utc(CMML *cmml, const char *utc)
read_clip
static int read_clip(CMML *cmml, const CMML_Clip *clip, void *user_data)
Definition: cmml-validate.c:189
cmml_list_length
int cmml_list_length(CMML_List *list)
_CMML_List::data
void * data
Definition: cmml.h:108
CMML_ImportElement::end_time
CMML_Time * end_time
Definition: cmml.h:170
CMML_MetaElement::dir
char * dir
Definition: cmml.h:197
CMML_LinkElement::rel
char * rel
Definition: cmml.h:215
cmml_list_append
CMML_List * cmml_list_append(CMML_List *list, void *data)
CMML_MetaElement
Definition: cmml.h:194
CMML_PARSE_ERROR
@ CMML_PARSE_ERROR
Definition: cmml.h:321
CMML_ImportElement::lang
char * lang
Definition: cmml.h:164
CMML_XMLNS_REDEFINED
@ CMML_XMLNS_REDEFINED
Definition: cmml.h:332