#ifndef HMML_H_ #define HMML_H_ #include #include #include #include // Data structures typedef struct { char* member; char* stream_platform; char* stream_username; char* project; char* title; char* vod_platform; char* id; char** co_hosts; size_t co_host_count; char** guests; size_t guest_count; char** annotators; size_t annotator_count; char* template; char* medium; } HMML_VideoMetaData; typedef struct { char* site; char* page; char* url; char* title; char* article; char* author; char* editor; char* publisher; char* isbn; int offset; } HMML_Reference; typedef enum { HMML_CATEGORY, HMML_MEMBER, HMML_PROJECT, HMML_MARKER_COUNT, } HMML_MarkerType; typedef struct { HMML_MarkerType type; char* marker; char* parameter; char* episode; int offset; } HMML_Marker; typedef struct { int id; char* author; } HMML_Quote; typedef struct { int line; char* time; char* text; char* author; HMML_Reference* references; size_t reference_count; HMML_Marker* markers; size_t marker_count; HMML_Quote quote; bool is_quote; } HMML_Annotation; typedef struct { int line; char* message; } HMML_Error; typedef struct { bool well_formed; HMML_VideoMetaData metadata; HMML_Annotation* annotations; size_t annotation_count; HMML_Error error; } HMML_Output; // Functions HMML_Output hmml_parse_file (FILE* file); void hmml_dump (HMML_Output* output); void hmml_free (HMML_Output* output); // Version extern const struct HMML_Version { int Major, Minor, Patch; } hmml_version; #endif