/* yamlbyte.h * * The YAML bytecode "C" interface header file. See the YAML bytecode * reference for bytecode sequence rules and for the meaning of each * bytecode. */ #ifndef YAMLBYTE_H #define YAMLBYTE_H #include /* define what a character is */ typedef unsigned char yamlbyte_utf8_t; typedef unsigned short yamlbyte_utf16_t; #ifdef YAMLBYTE_UTF8 #ifdef YAMLBYTE_UTF16 #error Must only define YAMLBYTE_UTF8 or YAMLBYTE_UTF16 #endif typedef yamlbyte_utf8_t yamlbyte_char_t; #else #ifdef YAMLBYTE_UTF16 typedef yamlbyte_utf16_t yamlbyte_char_t; #else #error Must define YAMLBYTE_UTF8 or YAMLBYTE_UTF16 #endif #endif /* specify list of bytecodes */ #define YAMLBYTE_FINISH ((yamlbyte_char_t) 0) #define YAMLBYTE_DOCUMENT ((yamlbyte_char_t)'D') #define YAMLBYTE_DIRECTIVE ((yamlbyte_char_t)'V') #define YAMLBYTE_PAUSE ((yamlbyte_char_t)'P') #define YAMLBYTE_MAPPING ((yamlbyte_char_t)'M') #define YAMLBYTE_SEQUENCE ((yamlbyte_char_t)'Q') #define YAMLBYTE_END_BRANCH ((yamlbyte_char_t)'E') #define YAMLBYTE_SCALAR ((yamlbyte_char_t)'S') #define YAMLBYTE_CONTINUE ((yamlbyte_char_t)'C') #define YAMLBYTE_NEWLINE ((yamlbyte_char_t)'N') #define YAMLBYTE_NULLCHAR ((yamlbyte_char_t)'Z') #define YAMLBYTE_ANCHOR ((yamlbyte_char_t)'A') #define YAMLBYTE_ALIAS ((yamlbyte_char_t)'R') #define YAMLBYTE_TRANSFER ((yamlbyte_char_t)'T') /* formatting bytecodes */ #define YAMLBYTE_COMMENT ((yamlbyte_char_t)'c') #define YAMLBYTE_INDENT ((yamlbyte_char_t)'i') #define YAMLBYTE_STYLE ((yamlbyte_char_t)'s') /* other bytecodes */ #define YAMLBYTE_LINE_NUMBER ((yamlbyte_char_t)'#') #define YAMLBYTE_WHOLE_SCALAR ((yamlbyte_char_t)'<') #define YAMLBYTE_NOTICE ((yamlbyte_char_t)'!') #define YAMLBYTE_SPAN ((yamlbyte_char_t)')') #define YAMLBYTE_ALLOC ((yamlbyte_char_t)'@') /* second level style bytecodes, ie "s>" */ #define YAMLBYTE_FLOW ((yamlbyte_char_t)'>') #define YAMLBYTE_LITERAL ((yamlbyte_char_t)'|') #define YAMLBYTE_BLOCK ((yamlbyte_char_t)'b') #define YAMLBYTE_PLAIN ((yamlbyte_char_t)'p') #define YAMLBYTE_INLINE_MAPPING ((yamlbyte_char_t)'{') #define YAMLBYTE_INLINE_SEQUENCE ((yamlbyte_char_t)'[') #define YAMLBYTE_SINGLE_QUOTED ((yamlbyte_char_t)39) #define YAMLBYTE_DOUBLE_QUOTED ((yamlbyte_char_t)'"') /* * The "C" API has two variants, one based on instructions, * with events delivered via pointers; and the other one * is character based where one or more instructions are * serialized into a buffer. * * Note: In the instruction based API, WHOLE_SCALAR does * not have the '