summaryrefslogtreecommitdiff
path: root/src/yaml_private.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/yaml_private.h')
-rw-r--r--src/yaml_private.h741
1 files changed, 401 insertions, 340 deletions
diff --git a/src/yaml_private.h b/src/yaml_private.h
index b2d55a3..70617a7 100644
--- a/src/yaml_private.h
+++ b/src/yaml_private.h
@@ -28,87 +28,105 @@ yaml_strdup(const yaml_char_t *);
* Error management.
*/
-#define ERROR_INIT(error,error_type) \
- (memset(&(error), 0, sizeof(error)), \
- (error).type = (error_type), \
+/*
+ * Generic error initializers; not to be used directly.
+ */
+
+#define ERROR_INIT(error, _type) \
+ (memset(&(error), 0, sizeof(yaml_error_t)), \
+ (error).type = (_type), \
0)
-#define READING_ERROR_INIT(error,error_type,error_problem,error_offset,error_value) \
- (memset(&(error), 0, sizeof(error)), \
- (error).type = (error_type), \
- (error).data.reading.problem = (error_problem), \
- (error).data.reading.offset = (error_offset), \
- (error).data.reading.value = (error_value), \
+#define READING_ERROR_INIT(error, _type, _problem, _offset, _value) \
+ (ERROR_INIT(error, _type), \
+ (error).data.reading.problem = (_problem), \
+ (error).data.reading.offset = (_offset), \
+ (error).data.reading.value = (_value), \
0)
-#define LOADING_ERROR_INIT(error,error_type,error_problem,error_problem_mark) \
- (memset(&(error), 0, sizeof(error)), \
- (error).type = (error_type), \
+#define LOADING_ERROR_INIT(error, _type, _problem, _problem_mark) \
+ (ERROR_INIT(error, _type), \
(error).data.loading.context = NULL, \
(error).data.loading.context_mark.index = 0, \
(error).data.loading.context_mark.line = 0, \
(error).data.loading.context_mark.column = 0, \
- (error).data.loading.problem = (error_problem), \
- (error).data.loading.problem_mark = (error_problem_mark), \
+ (error).data.loading.problem = (_problem), \
+ (error).data.loading.problem_mark = (_problem_mark), \
0)
-#define LOADING_ERROR_WITH_CONTEXT_INIT(error,error_type,error_context,error_context_mark,error_problem,error_problem_mark) \
- (memset(&(error), 0, sizeof(error)), \
- (error).type = (error_type), \
- (error).data.loading.context = (error_context), \
- (error).data.loading.context_mark = (error_context_mark), \
- (error).data.loading.problem = (error_problem), \
- (error).data.loading.problem_mark = (error_problem_mark), \
+#define LOADING_ERROR_WITH_CONTEXT_INIT(error, _type, _context, _context_mark, \
+ _problem, _problem_mark) \
+ (ERROR_INIT(error, _type), \
+ (error).data.loading.context = (_context), \
+ (error).data.loading.context_mark = (_context_mark), \
+ (error).data.loading.problem = (_problem), \
+ (error).data.loading.problem_mark = (_problem_mark), \
0)
-#define WRITING_ERROR_INIT(error,error_type,error_problem,error_offset) \
- (memset(&(error), 0, sizeof(error)), \
- (error).type = (error_type), \
- (error).data.writing.problem = (error_problem), \
- (error).data.writing.offset = (error_offset), \
+#define WRITING_ERROR_INIT(error, _type, _problem, _offset) \
+ (ERROR_INIT(error, _type), \
+ (error).data.writing.problem = (_problem), \
+ (error).data.writing.offset = (_offset), \
0)
-#define DUMPING_ERROR_INIT(error,error_type,error_problem) \
- (memset(&(error), 0, sizeof(error)), \
- (error).type = (error_type), \
- (error).data.dumping.problem = (error_problem), \
+#define DUMPING_ERROR_INIT(error, _type, _problem) \
+ (ERROR_INIT(error, _type), \
+ (error).data.dumping.problem = (_problem), \
0)
+#define RESOLVING_ERROR_INIT(error, _type, _problem) \
+ (ERROR_INIT(error, _type), \
+ (error).data.resolving.problem = (_problem), \
+ 0)
+
+/*
+ * Specific error initializers.
+ */
+
#define MEMORY_ERROR_INIT(self) \
- ERROR_INIT((self)->error,YAML_MEMORY_ERROR)
+ ERROR_INIT((self)->error, YAML_MEMORY_ERROR)
+
+#define READER_ERROR_INIT(self, _problem, _offset) \
+ READING_ERROR_INIT((self)->error, YAML_READER_ERROR, _problem, _offset, -1)
-#define READER_ERROR_INIT(self,problem,offset) \
- READING_ERROR_INIT((self)->error,YAML_READER_ERROR,problem,offset,-1)
+#define DECODER_ERROR_INIT(self, _problem, _offset, _value) \
+ READING_ERROR_INIT((self)->error, YAML_DECODER_ERROR, _problem, _offset, _value)
-#define DECODER_ERROR_INIT(self,problem,offset,value) \
- READING_ERROR_INIT((self)->error,YAML_DECODER_ERROR,problem,offset,value)
+#define SCANNER_ERROR_INIT(self, _problem, _problem_mark) \
+ LOADING_ERROR_INIT((self)->error, YAML_SCANNER_ERROR, _problem, _problem_mark)
-#define SCANNER_ERROR_INIT(self,problem,problem_mark) \
- LOADING_ERROR_INIT((self)->error,YAML_SCANNER_ERROR,problem,problem_mark)
+#define SCANNER_ERROR_WITH_CONTEXT_INIT(self, _context, _context_mark, \
+ _problem, _problem_mark) \
+ LOADING_ERROR_WITH_CONTEXT_INIT((self)->error, YAML_SCANNER_ERROR, \
+ _context, _context_mark, _problem, _problem_mark)
-#define SCANNER_ERROR_WITH_CONTEXT_INIT(self,context,context_mark,problem,problem_mark) \
- LOADING_ERROR_WITH_CONTEXT_INIT((self)->error,YAML_SCANNER_ERROR,context,context_mark,problem,problem_mark)
+#define PARSER_ERROR_INIT(self, _problem, _problem_mark) \
+ LOADING_ERROR_INIT((self)->error, YAML_PARSER_ERROR, _problem, _problem_mark)
-#define PARSER_ERROR_INIT(self,problem,problem_mark) \
- LOADING_ERROR_INIT((self)->error,YAML_PARSER_ERROR,problem,problem_mark)
+#define PARSER_ERROR_WITH_CONTEXT_INIT(self, _context, _context_mark, \
+ _problem, _problem_mark) \
+ LOADING_ERROR_WITH_CONTEXT_INIT((self)->error, YAML_PARSER_ERROR, \
+ _context, _context_mark, _problem, _problem_mark)
-#define PARSER_ERROR_WITH_CONTEXT_INIT(self,context,context_mark,problem,problem_mark) \
- LOADING_ERROR_WITH_CONTEXT_INIT((self)->error,YAML_PARSER_ERROR,context,context_mark,problem,problem_mark)
+#define COMPOSER_ERROR_INIT(self, _problem, _problem_mark) \
+ LOADING_ERROR_INIT((self)->error, YAML_COMPOSER_ERROR, _problem, _problem_mark)
-#define COMPOSER_ERROR_INIT(self,problem,problem_mark) \
- LOADING_ERROR_INIT((self)->error,YAML_COMPOSER_ERROR,problem,problem_mark)
+#define COMPOSER_ERROR_WITH_CONTEXT_INIT(self, _context, _context_mark, \
+ _problem, _problem_mark) \
+ LOADING_ERROR_WITH_CONTEXT_INIT((self)->error, YAML_COMPOSER_ERROR, \
+ _context, _context_mark, _problem, _problem_mark)
-#define COMPOSER_ERROR_WITH_CONTEXT_INIT(self,context,context_mark,problem,problem_mark) \
- LOADING_ERROR_WITH_CONTEXT_INIT((self)->error,YAML_COMPOSER_ERROR,context,context_mark,problem,problem_mark)
+#define WRITER_ERROR_INIT(self, _problem, _offset) \
+ WRITING_ERROR_INIT((self)->error, YAML_WRITER_ERROR, _problem, _offset)
-#define WRITER_ERROR_INIT(self,problem,offset) \
- WRITING_ERROR_INIT((self)->error,YAML_WRITER_ERROR,problem,offset)
+#define EMITTER_ERROR_INIT(self, _problem) \
+ DUMPING_ERROR_INIT((self)->error, YAML_EMITTER_ERROR, _problem)
-#define EMITTER_ERROR_INIT(self,problem) \
- DUMPING_ERROR_INIT((self)->error,YAML_EMITTER_ERROR,problem)
+#define SERIALIZER_ERROR_INIT(self, _problem) \
+ DUMPING_ERROR_INIT((self)->error, YAML_SERIALIZER_ERROR, _problem)
-#define SERIALIZER_ERROR_INIT(self,context) \
- DUMPING_ERROR_INIT((self)->error,YAML_SERIALIZER_ERROR,problem)
+#define RESOLVER_ERROR_INIT(self, _problem) \
+ RESOLVER_ERROR_INIT((self)->error, YAML_RESOLVER_ERROR, _problem)
/*
* The size of the input raw buffer.
@@ -152,53 +170,103 @@ yaml_strdup(const yaml_char_t *);
* String management.
*/
-typedef struct yaml_string_s {
+/*
+ * An immutable string used as an input buffer.
+ */
+
+typedef struct yaml_istring_s {
+ const yaml_char_t *buffer;
+ size_t pointer;
+ size_t length;
+} yaml_istring_t;
+
+/*
+ * A string that is used as an output buffer.
+ */
+
+typedef struct yaml_ostring_s {
+ yaml_char_t *buffer;
+ size_t pointer;
+ size_t capacity;
+} yaml_ostring_t;
+
+/*
+ * A string that could be used both as an input and an output buffer.
+ */
+
+typedef struct yaml_iostring_s {
yaml_char_t *buffer;
size_t pointer;
+ size_t length;
size_t capacity;
-} yaml_string_t;
+} yaml_iostring_t;
+
+/*
+ * Separate type for non-UTF-8 i/o strings.
+ */
+
+typedef struct yaml_raw_iostring_s {
+ unsigned char *buffer;
+ size_t pointer;
+ size_t length;
+ size_t capacity;
+} yaml_raw_iostring_t;
YAML_DECLARE(int)
-yaml_string_extend(yaml_char_t **buffer, size_t *capacity);
+yaml_ostring_extend(yaml_char_t **buffer, size_t *capacity);
YAML_DECLARE(int)
-yaml_string_join(
+yaml_ostring_join(
yaml_char_t **base_buffer, size_t *base_pointer, size_t *base_capacity,
- yaml_char_t *adj_buffer, size_t adj_pointer, size_t adj_capacity);
+ yaml_char_t *adj_buffer, size_t adj_pointer);
+
+#define ISTRING(buffer, length) { (buffer), 0, (length) }
-#define NULL_STRING { NULL, 0, 0 }
+#define NULL_OSTRING { NULL, 0, 0 }
-#define STRING(string,capacity) { (string), 0, (capacity) }
+#define IOSTRING_INIT(self, string, _capacity) \
+ (((string).buffer = yaml_malloc(_capacity)) ? \
+ ((string).pointer = (string).length = 0, \
+ (string).capacity = (_capacity), \
+ memset((string).buffer, 0, (_capacity)), \
+ 1) : \
+ ((self)->error.type = YAML_MEMORY_ERROR, \
+ 0))
+
+#define IOSTRING_DEL(self, string) \
+ (yaml_free((string).buffer), \
+ (string).buffer = NULL, \
+ ((string).pointer = (string).length = (string).capacity = 0))
-#define STRING_INIT(self,string,string_capacity) \
- (((string).buffer = yaml_malloc(string_capacity)) ? \
+#define OSTRING_INIT(self, string, _capacity) \
+ (((string).buffer = yaml_malloc(_capacity)) ? \
((string).pointer = 0, \
- (string).capacity = (string_capacity), \
- memset((string).buffer, 0, (string_capacity)), \
+ (string).capacity = (_capacity), \
+ memset((string).buffer, 0, (_capacity)), \
1) : \
((self)->error.type = YAML_MEMORY_ERROR, \
0))
-#define STRING_DEL(self,string) \
+#define OSTRING_DEL(self, string) \
(yaml_free((string).buffer), \
(string).buffer = NULL, \
((string).pointer = (string).capacity = 0))
-#define STRING_EXTEND(self,string) \
+#define OSTRING_EXTEND(self, string) \
((((string).pointer+5 < (string).capacity) \
- || yaml_string_extend(&(string).buffer, &(string).capacity)) ? \
+ || yaml_ostring_extend(&(string).buffer, &(string).capacity)) ? \
1 : \
((self)->error.type = YAML_MEMORY_ERROR, \
0))
-#define CLEAR(self,string) \
+#define CLEAR(self, string) \
((string).pointer = 0, \
memset((string).buffer, 0, (string).capacity))
-#define JOIN(self,base_string,adj_string) \
- ((yaml_string_join(&(base_string).buffer, &(base_string).pointer, \
- &(base_string).capacity, (adj_string).buffer, \
- (adj_string).pointer, (adj_string).capacity)) ? \
+#define JOIN(self, base_string, adj_string) \
+ ((yaml_ostring_join(&(base_string).buffer, &(base_string).pointer, \
+ &(base_string).capacity, \
+ (adj_string).buffer, (adj_string).pointer)) ? \
((adj_string).pointer = 0, \
1) : \
((self)->error.type = YAML_MEMORY_ERROR, \
@@ -212,231 +280,231 @@ yaml_string_join(
* Get the octet at the specified position.
*/
-#define OCTET_AT(string,offset) \
+#define OCTET_AT(string, offset) \
((string).buffer[(string).pointer+(offset)])
/*
* Get the current offset.
*/
-#define OCTET(string) OCTET_AT((string),0)
+#define OCTET(string) OCTET_AT((string), 0)
/*
* Check the octet at the specified position.
*/
-#define CHECK_AT(string,octet,offset) \
- (OCTET_AT((string),(offset)) == (yaml_char_t)(octet))
+#define CHECK_AT(string, octet, offset) \
+ (OCTET_AT((string), (offset)) == (yaml_char_t)(octet))
/*
* Check the current octet in the buffer.
*/
-#define CHECK(string,octet) CHECK_AT((string),(octet),0)
+#define CHECK(string, octet) CHECK_AT((string), (octet), 0)
/*
* Check if the character at the specified position is an alphabetical
* character, a digit, '_', or '-'.
*/
-#define IS_ALPHA_AT(string,offset) \
- ((OCTET_AT((string),(offset)) >= (yaml_char_t) '0' && \
- OCTET_AT((string),(offset)) <= (yaml_char_t) '9') || \
- (OCTET_AT((string),(offset)) >= (yaml_char_t) 'A' && \
- OCTET_AT((string),(offset)) <= (yaml_char_t) 'Z') || \
- (OCTET_AT((string),(offset)) >= (yaml_char_t) 'a' && \
- OCTET_AT((string),(offset)) <= (yaml_char_t) 'z') || \
- OCTET_AT((string),(offset)) == '_' || \
- OCTET_AT((string),(offset)) == '-')
+#define IS_ALPHA_AT(string, offset) \
+ ((OCTET_AT((string), (offset)) >= (yaml_char_t) '0' && \
+ OCTET_AT((string), (offset)) <= (yaml_char_t) '9') || \
+ (OCTET_AT((string), (offset)) >= (yaml_char_t) 'A' && \
+ OCTET_AT((string), (offset)) <= (yaml_char_t) 'Z') || \
+ (OCTET_AT((string), (offset)) >= (yaml_char_t) 'a' && \
+ OCTET_AT((string), (offset)) <= (yaml_char_t) 'z') || \
+ OCTET_AT((string), (offset)) == '_' || \
+ OCTET_AT((string), (offset)) == '-')
-#define IS_ALPHA(string) IS_ALPHA_AT((string),0)
+#define IS_ALPHA(string) IS_ALPHA_AT((string), 0)
/*
* Check if the character at the specified position is a digit.
*/
-#define IS_DIGIT_AT(string,offset) \
- ((OCTET_AT((string),(offset)) >= (yaml_char_t) '0' && \
- OCTET_AT((string),(offset)) <= (yaml_char_t) '9'))
+#define IS_DIGIT_AT(string, offset) \
+ ((OCTET_AT((string), (offset)) >= (yaml_char_t) '0' && \
+ OCTET_AT((string), (offset)) <= (yaml_char_t) '9'))
-#define IS_DIGIT(string) IS_DIGIT_AT((string),0)
+#define IS_DIGIT(string) IS_DIGIT_AT((string), 0)
/*
* Get the value of a digit.
*/
-#define AS_DIGIT_AT(string,offset) \
- (OCTET_AT((string),(offset)) - (yaml_char_t) '0')
+#define AS_DIGIT_AT(string, offset) \
+ (OCTET_AT((string), (offset)) - (yaml_char_t) '0')
-#define AS_DIGIT(string) AS_DIGIT_AT((string),0)
+#define AS_DIGIT(string) AS_DIGIT_AT((string), 0)
/*
* Check if the character at the specified position is a hex-digit.
*/
-#define IS_HEX_AT(string,offset) \
- ((OCTET_AT((string),(offset)) >= (yaml_char_t) '0' && \
- OCTET_AT((string),(offset)) <= (yaml_char_t) '9') || \
- (OCTET_AT((string),(offset)) >= (yaml_char_t) 'A' && \
- OCTET_AT((string),(offset)) <= (yaml_char_t) 'F') || \
- (OCTET_AT((string),(offset)) >= (yaml_char_t) 'a' && \
- OCTET_AT((string),(offset)) <= (yaml_char_t) 'f'))
+#define IS_HEX_AT(string, offset) \
+ ((OCTET_AT((string), (offset)) >= (yaml_char_t) '0' && \
+ OCTET_AT((string), (offset)) <= (yaml_char_t) '9') || \
+ (OCTET_AT((string), (offset)) >= (yaml_char_t) 'A' && \
+ OCTET_AT((string), (offset)) <= (yaml_char_t) 'F') || \
+ (OCTET_AT((string), (offset)) >= (yaml_char_t) 'a' && \
+ OCTET_AT((string), (offset)) <= (yaml_char_t) 'f'))
-#define IS_HEX(string) IS_HEX_AT((string),0)
+#define IS_HEX(string) IS_HEX_AT((string), 0)
/*
* Get the value of a hex-digit.
*/
-#define AS_HEX_AT(string,offset) \
- ((OCTET_AT((string),(offset)) >= (yaml_char_t) 'A' && \
- OCTET_AT((string),(offset)) <= (yaml_char_t) 'F') ? \
- (OCTET_AT((string),(offset)) - (yaml_char_t) 'A' + 10) : \
- (OCTET_AT((string),(offset)) >= (yaml_char_t) 'a' && \
- OCTET_AT((string),(offset)) <= (yaml_char_t) 'f') ? \
- (OCTET_AT((string),(offset)) - (yaml_char_t) 'a' + 10) : \
- (OCTET_AT((string),(offset)) - (yaml_char_t) '0'))
+#define AS_HEX_AT(string, offset) \
+ ((OCTET_AT((string), (offset)) >= (yaml_char_t) 'A' && \
+ OCTET_AT((string), (offset)) <= (yaml_char_t) 'F') ? \
+ (OCTET_AT((string), (offset)) - (yaml_char_t) 'A' + 10) : \
+ (OCTET_AT((string), (offset)) >= (yaml_char_t) 'a' && \
+ OCTET_AT((string), (offset)) <= (yaml_char_t) 'f') ? \
+ (OCTET_AT((string), (offset)) - (yaml_char_t) 'a' + 10) : \
+ (OCTET_AT((string), (offset)) - (yaml_char_t) '0'))
-#define AS_HEX(string) AS_HEX_AT((string),0)
+#define AS_HEX(string) AS_HEX_AT((string), 0)
/*
* Check if the character is ASCII.
*/
-#define IS_ASCII_AT(string,offset) \
- (OCTET_AT((string),(offset)) <= (yaml_char_t) '\x7F')
+#define IS_ASCII_AT(string, offset) \
+ (OCTET_AT((string), (offset)) <= (yaml_char_t) '\x7F')
-#define IS_ASCII(string) IS_ASCII_AT((string),0)
+#define IS_ASCII(string) IS_ASCII_AT((string), 0)
/*
* Check if the character can be printed unescaped.
*/
-#define IS_PRINTABLE_AT(string,offset) \
- ((OCTET_AT((string),(offset)) == 0x0A) /* . == #x0A */ \
- || (OCTET_AT((string),(offset)) >= 0x20 /* #x20 <= . <= #x7E */ \
- && OCTET_AT((string),(offset)) <= 0x7E) \
- || (OCTET_AT((string),(offset)) == 0xC2 /* #0xA0 <= . <= #xD7FF */ \
- && OCTET_AT((string),(offset)+1) >= 0xA0) \
- || (OCTET_AT((string),(offset)) > 0xC2 \
- && OCTET_AT((string),(offset)) < 0xED) \
- || (OCTET_AT((string),(offset)) == 0xED \
- && OCTET_AT((string),(offset)+1) < 0xA0) \
- || (OCTET_AT((string),(offset)) == 0xEE) \
- || (OCTET_AT((string),(offset)) == 0xEF /* #xE000 <= . <= #xFFFD */ \
- && !(OCTET_AT((string),(offset)+1) == 0xBB /* && . != #xFEFF */ \
- && OCTET_AT((string),(offset)+2) == 0xBF) \
- && !(OCTET_AT((string),(offset)+1) == 0xBF \
- && (OCTET_AT((string),(offset)+2) == 0xBE \
- || OCTET_AT((string),(offset)+2) == 0xBF))))
-
-#define IS_PRINTABLE(string) IS_PRINTABLE_AT((string),0)
+#define IS_PRINTABLE_AT(string, offset) \
+ ((OCTET_AT((string), (offset)) == 0x0A) /* . == #x0A */ \
+ || (OCTET_AT((string), (offset)) >= 0x20 /* #x20 <= . <= #x7E */ \
+ && OCTET_AT((string), (offset)) <= 0x7E) \
+ || (OCTET_AT((string), (offset)) == 0xC2 /* #0xA0 <= . <= #xD7FF */ \
+ && OCTET_AT((string), (offset)+1) >= 0xA0) \
+ || (OCTET_AT((string), (offset)) > 0xC2 \
+ && OCTET_AT((string), (offset)) < 0xED) \
+ || (OCTET_AT((string), (offset)) == 0xED \
+ && OCTET_AT((string), (offset)+1) < 0xA0) \
+ || (OCTET_AT((string), (offset)) == 0xEE) \
+ || (OCTET_AT((string), (offset)) == 0xEF /* #xE000 <= . <= #xFFFD */ \
+ && !(OCTET_AT((string), (offset)+1) == 0xBB /* && . != #xFEFF */ \
+ && OCTET_AT((string), (offset)+2) == 0xBF) \
+ && !(OCTET_AT((string), (offset)+1) == 0xBF \
+ && (OCTET_AT((string), (offset)+2) == 0xBE \
+ || OCTET_AT((string), (offset)+2) == 0xBF))))
+
+#define IS_PRINTABLE(string) IS_PRINTABLE_AT((string), 0)
/*
* Check if the character at the specified position is NUL.
*/
-#define IS_Z_AT(string,offset) CHECK_AT((string),'\0',(offset))
+#define IS_Z_AT(string, offset) CHECK_AT((string), '\0', (offset))
-#define IS_Z(string) IS_Z_AT((string),0)
+#define IS_Z(string) IS_Z_AT((string), 0)
/*
* Check if the character at the specified position is BOM.
*/
-#define IS_BOM_AT(string,offset) \
- (CHECK_AT((string),'\xEF',(offset)) \
- && CHECK_AT((string),'\xBB',(offset)+1) \
- && CHECK_AT((string),'\xBF',(offset)+2)) /* BOM (#xFEFF) */
+#define IS_BOM_AT(string, offset) \
+ (CHECK_AT((string), '\xEF', (offset)) \
+ && CHECK_AT((string), '\xBB', (offset)+1) \
+ && CHECK_AT((string), '\xBF', (offset)+2)) /* BOM (#xFEFF) */
-#define IS_BOM(string) IS_BOM_AT(string,0)
+#define IS_BOM(string) IS_BOM_AT(string, 0)
/*
* Check if the character at the specified position is space.
*/
-#define IS_SPACE_AT(string,offset) CHECK_AT((string),' ',(offset))
+#define IS_SPACE_AT(string, offset) CHECK_AT((string), ' ', (offset))
-#define IS_SPACE(string) IS_SPACE_AT((string),0)
+#define IS_SPACE(string) IS_SPACE_AT((string), 0)
/*
* Check if the character at the specified position is tab.
*/
-#define IS_TAB_AT(string,offset) CHECK_AT((string),'\t',(offset))
+#define IS_TAB_AT(string, offset) CHECK_AT((string), '\t', (offset))
-#define IS_TAB(string) IS_TAB_AT((string),0)
+#define IS_TAB(string) IS_TAB_AT((string), 0)
/*
* Check if the character at the specified position is blank (space or tab).
*/
-#define IS_BLANK_AT(string,offset) \
- (IS_SPACE_AT((string),(offset)) || IS_TAB_AT((string),(offset)))
+#define IS_BLANK_AT(string, offset) \
+ (IS_SPACE_AT((string), (offset)) || IS_TAB_AT((string), (offset)))
-#define IS_BLANK(string) IS_BLANK_AT((string),0)
+#define IS_BLANK(string) IS_BLANK_AT((string), 0)
/*
* Check if the character at the specified position is a line break.
*/
-#define IS_BREAK_AT(string,offset) \
- (CHECK_AT((string),'\r',(offset)) /* CR (#xD)*/ \
- || CHECK_AT((string),'\n',(offset)) /* LF (#xA) */ \
- || (CHECK_AT((string),'\xC2',(offset)) \
- && CHECK_AT((string),'\x85',(offset)+1)) /* NEL (#x85) */ \
- || (CHECK_AT((string),'\xE2',(offset)) \
- && CHECK_AT((string),'\x80',(offset)+1) \
- && CHECK_AT((string),'\xA8',(offset)+2)) /* LS (#x2028) */ \
- || (CHECK_AT((string),'\xE2',(offset)) \
- && CHECK_AT((string),'\x80',(offset)+1) \
- && CHECK_AT((string),'\xA9',(offset)+2))) /* PS (#x2029) */
+#define IS_BREAK_AT(string, offset) \
+ (CHECK_AT((string), '\r', (offset)) /* CR (#xD)*/ \
+ || CHECK_AT((string), '\n', (offset)) /* LF (#xA) */ \
+ || (CHECK_AT((string), '\xC2', (offset)) \
+ && CHECK_AT((string), '\x85', (offset)+1)) /* NEL (#x85) */ \
+ || (CHECK_AT((string), '\xE2', (offset)) \
+ && CHECK_AT((string), '\x80', (offset)+1) \
+ && CHECK_AT((string), '\xA8', (offset)+2)) /* LS (#x2028) */ \
+ || (CHECK_AT((string), '\xE2', (offset)) \
+ && CHECK_AT((string), '\x80', (offset)+1) \
+ && CHECK_AT((string), '\xA9', (offset)+2))) /* PS (#x2029) */
-#define IS_BREAK(string) IS_BREAK_AT((string),0)
+#define IS_BREAK(string) IS_BREAK_AT((string), 0)
-#define IS_CRLF_AT(string,offset) \
- (CHECK_AT((string),'\r',(offset)) && CHECK_AT((string),'\n',(offset)+1))
+#define IS_CRLF_AT(string, offset) \
+ (CHECK_AT((string), '\r', (offset)) && CHECK_AT((string), '\n', (offset)+1))
-#define IS_CRLF(string) IS_CRLF_AT((string),0)
+#define IS_CRLF(string) IS_CRLF_AT((string), 0)
/*
* Check if the character is a line break or NUL.
*/
-#define IS_BREAKZ_AT(string,offset) \
- (IS_BREAK_AT((string),(offset)) || IS_Z_AT((string),(offset)))
+#define IS_BREAKZ_AT(string, offset) \
+ (IS_BREAK_AT((string), (offset)) || IS_Z_AT((string), (offset)))
-#define IS_BREAKZ(string) IS_BREAKZ_AT((string),0)
+#define IS_BREAKZ(string) IS_BREAKZ_AT((string), 0)
/*
* Check if the character is a line break, space, or NUL.
*/
-#define IS_SPACEZ_AT(string,offset) \
- (IS_SPACE_AT((string),(offset)) || IS_BREAKZ_AT((string),(offset)))
+#define IS_SPACEZ_AT(string, offset) \
+ (IS_SPACE_AT((string), (offset)) || IS_BREAKZ_AT((string), (offset)))
-#define IS_SPACEZ(string) IS_SPACEZ_AT((string),0)
+#define IS_SPACEZ(string) IS_SPACEZ_AT((string), 0)
/*
* Check if the character is a line break, space, tab, or NUL.
*/
-#define IS_BLANKZ_AT(string,offset) \
- (IS_BLANK_AT((string),(offset)) || IS_BREAKZ_AT((string),(offset)))
+#define IS_BLANKZ_AT(string, offset) \
+ (IS_BLANK_AT((string), (offset)) || IS_BREAKZ_AT((string), (offset)))
-#define IS_BLANKZ(string) IS_BLANKZ_AT((string),0)
+#define IS_BLANKZ(string) IS_BLANKZ_AT((string), 0)
/*
* Determine the width of the character.
*/
-#define WIDTH_AT(string,offset) \
- ((OCTET_AT((string),(offset)) & 0x80) == 0x00 ? 1 : \
- (OCTET_AT((string),(offset)) & 0xE0) == 0xC0 ? 2 : \
- (OCTET_AT((string),(offset)) & 0xF0) == 0xE0 ? 3 : \
- (OCTET_AT((string),(offset)) & 0xF8) == 0xF0 ? 4 : 0)
+#define WIDTH_AT(string, offset) \
+ ((OCTET_AT((string), (offset)) & 0x80) == 0x00 ? 1 : \
+ (OCTET_AT((string), (offset)) & 0xE0) == 0xC0 ? 2 : \
+ (OCTET_AT((string), (offset)) & 0xF0) == 0xE0 ? 3 : \
+ (OCTET_AT((string), (offset)) & 0xF8) == 0xF0 ? 4 : 0)
-#define WIDTH(string) WIDTH_AT((string),0)
+#define WIDTH(string) WIDTH_AT((string), 0)
/*
* Move the string pointer to the next character.
@@ -448,36 +516,36 @@ yaml_string_join(
* Write a single octet and bump the pointer.
*/
-#define JOIN_OCTET(string,octet) \
+#define JOIN_OCTET(string, octet) \
((string).buffer[(string).pointer++] = (octet))
/*
* Copy a single octet and bump the pointers.
*/
-#define COPY_OCTET(string_a,string_b) \
- ((string_a).buffer[(string_a).pointer++] \
- = (string_b).buffer[(string_b).pointer++])
+#define COPY_OCTET(target_string, source_string) \
+ ((target_string).buffer[(target_string).pointer++] \
+ = (source_string).buffer[(source_string).pointer++])
/*
* Copy a character and move the pointers of both strings.
*/
-#define COPY(string_a,string_b) \
- ((OCTET(string_b) & 0x80) == 0x00 ? \
- COPY_OCTET((string_a),(string_b)) : \
- (OCTET(string_b) & 0xE0) == 0xC0 ? \
- (COPY_OCTET((string_a),(string_b)), \
- COPY_OCTET((string_a),(string_b))) : \
- (OCTET(string_b) & 0xF0) == 0xE0 ? \
- (COPY_OCTET((string_a),(string_b)), \
- COPY_OCTET((string_a),(string_b)), \
- COPY_OCTET((string_a),(string_b))) : \
- (OCTET(string_b) & 0xF8) == 0xF0 ? \
- (COPY_OCTET((string_a),(string_b)), \
- COPY_OCTET((string_a),(string_b)), \
- COPY_OCTET((string_a),(string_b)), \
- COPY_OCTET((string_a),(string_b))) : 0) \
+#define COPY(target_string, source_string) \
+ ((OCTET(source_string) & 0x80) == 0x00 ? \
+ COPY_OCTET((target_string), (source_string)) : \
+ (OCTET(source_string) & 0xE0) == 0xC0 ? \
+ (COPY_OCTET((target_string), (source_string)), \
+ COPY_OCTET((target_string), (source_string))) : \
+ (OCTET(source_string) & 0xF0) == 0xE0 ? \
+ (COPY_OCTET((target_string), (source_string)), \
+ COPY_OCTET((target_string), (source_string)), \
+ COPY_OCTET((target_string), (source_string))) : \
+ (OCTET(source_string) & 0xF8) == 0xF0 ? \
+ (COPY_OCTET((target_string), (source_string)), \
+ COPY_OCTET((target_string), (source_string)), \
+ COPY_OCTET((target_string), (source_string)), \
+ COPY_OCTET((target_string), (source_string))) : 0)
/*
* Stack and queue management.
@@ -490,23 +558,26 @@ YAML_DECLARE(int)
yaml_queue_extend(void **list, size_t size,
size_t *head, size_t *tail, size_t *capacity);
-#define STACK_INIT(self,stack,stack_capacity) \
- (((stack).list = yaml_malloc((stack_capacity)*sizeof(*(stack).list))) ? \
+#define STACK_INIT(self, stack, _capacity) \
+ (((stack).list = yaml_malloc((_capacity)*sizeof(*(stack).list))) ? \
((stack).length = 0, \
- (stack).capacity = (stack_capacity), \
+ (stack).capacity = (_capacity), \
1) : \
((self)->error.type = YAML_MEMORY_ERROR, \
0))
-#define STACK_DEL(self,stack) \
+#define STACK_DEL(self, stack) \
(yaml_free((stack).list), \
(stack).list = NULL, \
(stack).length = (stack).capacity = 0)
-#define STACK_EMPTY(self,stack) \
+#define STACK_EMPTY(self, stack) \
((stack).length == 0)
-#define PUSH(self,stack,value) \
+#define STACK_ITER(self, stack, index) \
+ ((stack).list + index)
+
+#define PUSH(self, stack, value) \
(((stack).length < (stack).capacity \
|| yaml_stack_extend((void **)&(stack).list, sizeof(*(stack).list), \
&(stack).length, &(stack).capacity)) ? \
@@ -515,26 +586,29 @@ yaml_queue_extend(void **list, size_t size,
((self)->error.type = YAML_MEMORY_ERROR, \
0))
-#define POP(self,stack) \
+#define POP(self, stack) \
((stack).list[--(stack).length])
-#define QUEUE_INIT(self,queue,queue_capacity) \
- (((queue).list = yaml_malloc((queue_capacity)*sizeof(*(queue).list))) ? \
+#define QUEUE_INIT(self, queue, _capacity) \
+ (((queue).list = yaml_malloc((_capacity)*sizeof(*(queue).list))) ? \
((queue).head = (queue).tail = 0, \
- (queue).capacity = (queue_capacity), \
+ (queue).capacity = (_capacity), \
1) : \
((self)->error.type = YAML_MEMORY_ERROR, \
0))
-#define QUEUE_DEL(self,queue) \
+#define QUEUE_DEL(self, queue) \
(yaml_free((queue).list), \
(queue).list = NULL, \
(queue).head = (queue).tail = (queue).capacity = 0)
-#define QUEUE_EMPTY(self,queue) \
+#define QUEUE_EMPTY(self, queue) \
((queue).head == (queue).tail)
-#define ENQUEUE(self,queue,value) \
+#define QUEUE_ITER(self, queue, index) \
+ ((queue).list + (queue).head + index)
+
+#define ENQUEUE(self, queue, value) \
(((queue).tail != (queue).capacity \
|| yaml_queue_extend((void **)&(queue).list, sizeof(*(queue).list), \
&(queue).head, &(queue).tail, &(queue).capacity)) ? \
@@ -543,10 +617,10 @@ yaml_queue_extend(void **list, size_t size,
((self)->error.type = YAML_MEMORY_ERROR, \
0))
-#define DEQUEUE(self,queue) \
+#define DEQUEUE(self, queue) \
((queue).list[(queue).head++])
-#define QUEUE_INSERT(self,queue,index,value) \
+#define QUEUE_INSERT(self, queue, index, value) \
(((queue).tail != (queue).capacity \
|| yaml_queue_extend((void **)&(queue).list, sizeof(*(queue).list), \
&(queue).head, &(queue).tail, &(queue).capacity)) ? \
@@ -563,116 +637,117 @@ yaml_queue_extend(void **list, size_t size,
* Token initializers.
*/
-#define TOKEN_INIT(token,token_type,token_start_mark,token_end_mark) \
+#define TOKEN_INIT(token, _type, _start_mark, _end_mark) \
(memset(&(token), 0, sizeof(yaml_token_t)), \
- (token).type = (token_type), \
- (token).start_mark = (token_start_mark), \
- (token).end_mark = (token_end_mark))
-
-#define STREAM_START_TOKEN_INIT(token,token_encoding,start_mark,end_mark) \
- (TOKEN_INIT((token),YAML_STREAM_START_TOKEN,(start_mark),(end_mark)), \
- (token).data.stream_start.encoding = (token_encoding))
-
-#define STREAM_END_TOKEN_INIT(token,start_mark,end_mark) \
- (TOKEN_INIT((token),YAML_STREAM_END_TOKEN,(start_mark),(end_mark)))
-
-#define ALIAS_TOKEN_INIT(token,token_value,start_mark,end_mark) \
- (TOKEN_INIT((token),YAML_ALIAS_TOKEN,(start_mark),(end_mark)), \
- (token).data.alias.value = (token_value))
-
-#define ANCHOR_TOKEN_INIT(token,token_value,start_mark,end_mark) \
- (TOKEN_INIT((token),YAML_ANCHOR_TOKEN,(start_mark),(end_mark)), \
- (token).data.anchor.value = (token_value))
-
-#define TAG_TOKEN_INIT(token,token_handle,token_suffix,start_mark,end_mark) \
- (TOKEN_INIT((token),YAML_TAG_TOKEN,(start_mark),(end_mark)), \
- (token).data.tag.handle = (token_handle), \
- (token).data.tag.suffix = (token_suffix))
-
-#define SCALAR_TOKEN_INIT(token,token_value,token_length,token_style,start_mark,end_mark) \
- (TOKEN_INIT((token),YAML_SCALAR_TOKEN,(start_mark),(end_mark)), \
- (token).data.scalar.value = (token_value), \
- (token).data.scalar.length = (token_length), \
- (token).data.scalar.style = (token_style))
-
-#define VERSION_DIRECTIVE_TOKEN_INIT(token,token_major,token_minor,start_mark,end_mark) \
- (TOKEN_INIT((token),YAML_VERSION_DIRECTIVE_TOKEN,(start_mark),(end_mark)), \
- (token).data.version_directive.major = (token_major), \
- (token).data.version_directive.minor = (token_minor))
-
-#define TAG_DIRECTIVE_TOKEN_INIT(token,token_handle,token_prefix,start_mark,end_mark) \
- (TOKEN_INIT((token),YAML_TAG_DIRECTIVE_TOKEN,(start_mark),(end_mark)), \
- (token).data.tag_directive.handle = (token_handle), \
- (token).data.tag_directive.prefix = (token_prefix))
+ (token).type = (_type), \
+ (token).start_mark = (_start_mark), \
+ (token).end_mark = (_end_mark))
+
+#define STREAM_START_TOKEN_INIT(token, _encoding, _start_mark, _end_mark) \
+ (TOKEN_INIT((token), YAML_STREAM_START_TOKEN, (_start_mark), (_end_mark)), \
+ (token).data.stream_start.encoding = (_encoding))
+
+#define STREAM_END_TOKEN_INIT(token, _start_mark, _end_mark) \
+ (TOKEN_INIT((token), YAML_STREAM_END_TOKEN, (_start_mark), (_end_mark)))
+
+#define ALIAS_TOKEN_INIT(token, _value, _start_mark, _end_mark) \
+ (TOKEN_INIT((token), YAML_ALIAS_TOKEN, (_start_mark), (_end_mark)), \
+ (token).data.alias.value = (_value))
+
+#define ANCHOR_TOKEN_INIT(token, _value, _start_mark, _end_mark) \
+ (TOKEN_INIT((token), YAML_ANCHOR_TOKEN, (_start_mark), (_end_mark)), \
+ (token).data.anchor.value = (_value))
+
+#define TAG_TOKEN_INIT(token, _handle, _suffix, _start_mark, _end_mark) \
+ (TOKEN_INIT((token), YAML_TAG_TOKEN, (_start_mark), (_end_mark)), \
+ (token).data.tag.handle = (_handle), \
+ (token).data.tag.suffix = (_suffix))
+
+#define SCALAR_TOKEN_INIT(token, _value, _length, _style, _start_mark, _end_mark) \
+ (TOKEN_INIT((token), YAML_SCALAR_TOKEN, (_start_mark), (_end_mark)), \
+ (token).data.scalar.value = (_value), \
+ (token).data.scalar.length = (_length), \
+ (token).data.scalar.style = (_style))
+
+#define VERSION_DIRECTIVE_TOKEN_INIT(token, _major, _minor, _start_mark, _end_mark) \
+ (TOKEN_INIT((token), YAML_VERSION_DIRECTIVE_TOKEN, (_start_mark), (_end_mark)), \
+ (token).data.version_directive.major = (_major), \
+ (token).data.version_directive.minor = (_minor))
+
+#define TAG_DIRECTIVE_TOKEN_INIT(token, _handle, _prefix, _start_mark, _end_mark) \
+ (TOKEN_INIT((token), YAML_TAG_DIRECTIVE_TOKEN, (_start_mark), (_end_mark)), \
+ (token).data.tag_directive.handle = (_handle), \
+ (token).data.tag_directive.prefix = (_prefix))
/*
* Event initializers.
*/
-#define EVENT_INIT(event,event_type,event_start_mark,event_end_mark) \
+#define EVENT_INIT(event, _type, _start_mark, _end_mark) \
(memset(&(event), 0, sizeof(yaml_event_t)), \
- (event).type = (event_type), \
- (event).start_mark = (event_start_mark), \
- (event).end_mark = (event_end_mark))
-
-#define STREAM_START_EVENT_INIT(event,event_encoding,start_mark,end_mark) \
- (EVENT_INIT((event),YAML_STREAM_START_EVENT,(start_mark),(end_mark)), \
- (event).data.stream_start.encoding = (event_encoding))
-
-#define STREAM_END_EVENT_INIT(event,start_mark,end_mark) \
- (EVENT_INIT((event),YAML_STREAM_END_EVENT,(start_mark),(end_mark)))
-
-#define DOCUMENT_START_EVENT_INIT(event,event_version_directive, \
- event_tag_directives_list,event_tag_directives_length, \
- event_tag_directives_capacity,event_is_implicit,start_mark,end_mark) \
- (EVENT_INIT((event),YAML_DOCUMENT_START_EVENT,(start_mark),(end_mark)), \
- (event).data.document_start.version_directive = (event_version_directive), \
- (event).data.document_start.tag_directives.list = (event_tag_directives_list), \
- (event).data.document_start.tag_directives.length = (event_tag_directives_length), \
- (event).data.document_start.tag_directives.capacity = (event_tag_directives_capacity), \
- (event).data.document_start.is_implicit = (event_is_implicit))
-
-#define DOCUMENT_END_EVENT_INIT(event,event_is_implicit,start_mark,end_mark) \
- (EVENT_INIT((event),YAML_DOCUMENT_END_EVENT,(start_mark),(end_mark)), \
- (event).data.document_end.is_implicit = (event_is_implicit))
-
-#define ALIAS_EVENT_INIT(event,event_anchor,start_mark,end_mark) \
- (EVENT_INIT((event),YAML_ALIAS_EVENT,(start_mark),(end_mark)), \
- (event).data.alias.anchor = (event_anchor))
-
-#define SCALAR_EVENT_INIT(event,event_anchor,event_tag,event_value, \
- event_length,event_is_plain_implicit,event_is_quoted_implicit, \
- event_style,start_mark,end_mark) \
- (EVENT_INIT((event),YAML_SCALAR_EVENT,(start_mark),(end_mark)), \
- (event).data.scalar.anchor = (event_anchor), \
- (event).data.scalar.tag = (event_tag), \
- (event).data.scalar.value = (event_value), \
- (event).data.scalar.length = (event_length), \
- (event).data.scalar.is_plain_implicit = (event_is_plain_implicit), \
- (event).data.scalar.is_quoted_implicit = (event_is_quoted_implicit), \
- (event).data.scalar.style = (event_style))
-
-#define SEQUENCE_START_EVENT_INIT(event,event_anchor,event_tag, \
- event_is_implicit,event_style,start_mark,end_mark) \
- (EVENT_INIT((event),YAML_SEQUENCE_START_EVENT,(start_mark),(end_mark)), \
- (event).data.sequence_start.anchor = (event_anchor), \
- (event).data.sequence_start.tag = (event_tag), \
- (event).data.sequence_start.is_implicit = (event_is_implicit), \
- (event).data.sequence_start.style = (event_style))
-
-#define SEQUENCE_END_EVENT_INIT(event,start_mark,end_mark) \
- (EVENT_INIT((event),YAML_SEQUENCE_END_EVENT,(start_mark),(end_mark)))
-
-#define MAPPING_START_EVENT_INIT(event,event_anchor,event_tag, \
- event_is_implicit,event_style,start_mark,end_mark) \
- (EVENT_INIT((event),YAML_MAPPING_START_EVENT,(start_mark),(end_mark)), \
- (event).data.mapping_start.anchor = (event_anchor), \
- (event).data.mapping_start.tag = (event_tag), \
- (event).data.mapping_start.is_implicit = (event_is_implicit), \
- (event).data.mapping_start.style = (event_style))
-
-#define MAPPING_END_EVENT_INIT(event,start_mark,end_mark) \
- (EVENT_INIT((event),YAML_MAPPING_END_EVENT,(start_mark),(end_mark)))
+ (event).type = (_type), \
+ (event).start_mark = (_start_mark), \
+ (event).end_mark = (_end_mark))
+
+#define STREAM_START_EVENT_INIT(event, _encoding, _start_mark, _end_mark) \
+ (EVENT_INIT((event), YAML_STREAM_START_EVENT, (_start_mark), (_end_mark)), \
+ (event).data.stream_start.encoding = (_encoding))
+
+#define STREAM_END_EVENT_INIT(event, _start_mark, _end_mark) \
+ (EVENT_INIT((event), YAML_STREAM_END_EVENT, (_start_mark), (_end_mark)))
+
+#define DOCUMENT_START_EVENT_INIT(event, _version_directive, \
+ _tag_directives_list, _tag_directives_length, _tag_directives_capacity, \
+ _is_implicit, _start_mark, _end_mark) \
+ (EVENT_INIT((event), YAML_DOCUMENT_START_EVENT, (_start_mark),(_end_mark)), \
+ (event).data.document_start.version_directive = (_version_directive), \
+ (event).data.document_start.tag_directives.list = (_tag_directives_list), \
+ (event).data.document_start.tag_directives.length = (_tag_directives_length), \
+ (event).data.document_start.tag_directives.capacity = (_tag_directives_capacity), \
+ (event).data.document_start.is_implicit = (_is_implicit))
+
+#define DOCUMENT_END_EVENT_INIT(event, _is_implicit, _start_mark, _end_mark) \
+ (EVENT_INIT((event), YAML_DOCUMENT_END_EVENT, (_start_mark), (_end_mark)), \
+ (event).data.document_end.is_implicit = (_is_implicit))
+
+#define ALIAS_EVENT_INIT(event, _anchor, _start_mark, _end_mark) \
+ (EVENT_INIT((event), YAML_ALIAS_EVENT, (_start_mark), (_end_mark)), \
+ (event).data.alias.anchor = (_anchor))
+
+#define SCALAR_EVENT_INIT(event, _anchor, _tag, _value, _length, \
+ _is_plain_implicit, _is_quoted_implicit, _style, _start_mark, _end_mark) \
+ (EVENT_INIT((event), YAML_SCALAR_EVENT, (_start_mark), (_end_mark)), \
+ (event).data.scalar.anchor = (_anchor), \
+ (event).data.scalar.tag = (_tag), \
+ (event).data.scalar.value = (_value), \
+ (event).data.scalar.length = (_length), \
+ (event).data.scalar.is_plain_implicit = (_is_plain_implicit), \
+ (event).data.scalar.is_quoted_implicit = (_is_quoted_implicit), \
+ (event).data.scalar.style = (_style))
+
+#define SEQUENCE_START_EVENT_INIT(event, _anchor, _tag, _is_implicit, _style, \
+ _start_mark, _end_mark) \
+ (EVENT_INIT((event), YAML_SEQUENCE_START_EVENT, (_start_mark), (_end_mark)), \
+ (event).data.sequence_start.anchor = (_anchor), \
+ (event).data.sequence_start.tag = (_tag), \
+ (event).data.sequence_start.is_implicit = (_is_implicit), \
+ (event).data.sequence_start.style = (_style))
+
+#define SEQUENCE_END_EVENT_INIT(event, _start_mark, _end_mark) \
+ (EVENT_INIT((event), YAML_SEQUENCE_END_EVENT, (_start_mark), (_end_mark)))
+
+#define MAPPING_START_EVENT_INIT(event, _anchor, _tag, _is_implicit, _style, \
+ _start_mark, _end_mark) \
+ (EVENT_INIT((event), YAML_MAPPING_START_EVENT, (_start_mark), (_end_mark)), \
+ (event).data.mapping_start.anchor = (_anchor), \
+ (event).data.mapping_start.tag = (_tag), \
+ (event).data.mapping_start.is_implicit = (_is_implicit), \
+ (event).data.mapping_start.style = (_style))
+
+#define MAPPING_END_EVENT_INIT(event, _start_mark, _end_mark) \
+ (EVENT_INIT((event), YAML_MAPPING_END_EVENT, (_start_mark), (_end_mark)))
+
+#if 0
/*
* Document initializer.
@@ -728,6 +803,8 @@ yaml_queue_extend(void **list, size_t size,
(node).data.mapping.pairs.top = (node_pairs_start), \
(node).data.mapping.style = (node_style))
+#endif
+
/*
* This structure holds information about a potential simple key.
*/
@@ -817,7 +894,7 @@ typedef struct yaml_alias_data_s {
typedef union yaml_standard_reader_data_u {
/* String input data. */
- yaml_string_t string;
+ yaml_istring_t string;
/* File input data. */
FILE *file;
} yaml_standard_reader_data_t;
@@ -851,21 +928,13 @@ struct yaml_parser_s {
int is_eof;
/* The working buffer. */
- struct {
- yaml_char_t *buffer;
- size_t pointer;
- size_t capacity;
- } input;
+ yaml_iostring_t input;
/* The number of unread characters in the buffer. */
size_t unread;
/* The raw buffer. */
- struct {
- unsigned char *buffer;
- size_t pointer;
- size_t capacity;
- } raw_input;
+ yaml_raw_iostring_t raw_input;
/* The input encoding. */
yaml_encoding_t encoding;
@@ -1022,7 +1091,7 @@ typedef enum yaml_emitter_state_e {
typedef union yaml_standard_writer_data_u {
/* String output data. */
- yaml_string_t string;
+ yaml_ostring_t string;
size_t *length;
/* File output data. */
FILE *file;
@@ -1054,18 +1123,10 @@ struct yaml_emitter_s {
yaml_standard_writer_data_t standard_writer_data;
/* The working buffer. */
- struct {
- yaml_char_t *buffer;
- size_t pointer;
- size_t capacity;
- } output;
+ yaml_iostring_t output;
/* The raw buffer. */
- struct {
- yaml_char_t *buffer;
- size_t pointer;
- size_t capacity;
- } raw_output;
+ yaml_raw_iostring_t raw_output;
/* The offset of the current position (in bytes). */
size_t offset;
@@ -1147,7 +1208,7 @@ struct yaml_emitter_s {
/* Anchor analysis. */
struct {
/* The anchor value. */
- yaml_char_t *anchor;
+ const yaml_char_t *anchor;
/* The anchor length. */
size_t anchor_length;
/* Is it an alias? */
@@ -1157,11 +1218,11 @@ struct yaml_emitter_s {
/* Tag analysis. */
struct {
/* The tag handle. */
- yaml_char_t *handle;
+ const yaml_char_t *handle;
/* The tag handle length. */
size_t handle_length;
/* The tag suffix. */
- yaml_char_t *suffix;
+ const yaml_char_t *suffix;
/* The tag suffix length. */
size_t suffix_length;
} tag_data;
@@ -1169,7 +1230,7 @@ struct yaml_emitter_s {
/* Scalar analysis. */
struct {
/* The scalar value. */
- yaml_char_t *value;
+ const yaml_char_t *value;
/* The scalar length. */
size_t length;
/* Does the scalar contain line breaks? */