2017-03-10 14:19:25 +00:00
|
|
|
#ifndef HMML_H_
|
|
|
|
#define HMML_H_
|
|
|
|
#include <stdint.h>
|
|
|
|
#include <stddef.h>
|
|
|
|
#include <stdbool.h>
|
|
|
|
#include <stdio.h>
|
|
|
|
|
|
|
|
// Data structures
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
char* member;
|
|
|
|
char* twitch;
|
|
|
|
char* project;
|
|
|
|
char* title;
|
|
|
|
char* platform;
|
|
|
|
char* id;
|
|
|
|
char* annotator;
|
|
|
|
} 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;
|
2017-03-19 01:23:44 +00:00
|
|
|
char* marker;
|
|
|
|
char* parameter;
|
2017-03-10 14:19:25 +00:00
|
|
|
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);
|
|
|
|
|
|
|
|
#endif
|