1 #ifdef RYML_SINGLE_HEADER_INTS
2 #ifndef _RYML_SINGLE_HEADER_AMALGAMATED_HPP_
3 #include <ryml_ints.hpp>
5 #elif defined(RYML_SINGLE_HEADER)
6 #ifndef _RYML_SINGLE_HEADER_AMALGAMATED_HPP_
7 #include <ryml_all.hpp>
11 #ifndef _C4_YML_ESCAPE_SCALAR_HPP_
15 #ifndef _C4_YML_EXTRA_INTS_UTILS_HPP_
19 #ifndef _C4_BITMASK_HPP_
20 #include "c4/bitmask.hpp"
24 C4_SUPPRESS_WARNING_GCC_WITH_PUSH(
"-Wold-style-cast")
25 C4_SUPPRESS_WARNING_CLANG_WITH_PUSH("-Wold-style-cast")
40 substr evts_test_suite)
44 csubstr region = !in_arena ? parsed_yaml : arena;
45 return region.sub((
size_t)evts_ints[i+1], (size_t)evts_ints[i+2]);
48 auto append = [&](csubstr s){
49 size_t next = sz + s.len;
50 if (s.len && (next <= evts_test_suite.len && evts_test_suite.len))
51 memcpy(evts_test_suite.str + sz, s.str, s.len);
56 auto maybe_append_tag = [&]{
59 if(tag.begins_with(
'<'))
64 else if(tag.begins_with(
"!<"))
69 else if(tag.begins_with(
'!'))
84 bool has_anchor =
false;
86 auto maybe_append_anchor = [&]{
94 auto append_cont = [&](csubstr evt, csubstr style){
101 maybe_append_anchor();
105 auto append_esc = [&](csubstr str){
106 substr buf = sz <= evts_test_suite.len ? evts_test_suite.sub(sz) : evts_test_suite.last(0);
110 auto append_val = [&](csubstr evt, csubstr val){
112 maybe_append_anchor();
124 csubstr s = getstr(i);
139 append_cont(
"+SEQ",
"[]");
141 append_cont(
"+SEQ",
"");
150 append_cont(
"+MAP",
"{}");
152 append_cont(
"+MAP",
"");
177 append(
"+DOC ---\n");
184 append(
"-DOC ...\n");
205 C4_SUPPRESS_WARNING_CLANG_POP
206 C4_SUPPRESS_WARNING_GCC_POP
size_t events_ints_to_testsuite(csubstr parsed_yaml, csubstr arena, ievt::DataType const *evts_ints, ievt::DataType evts_ints_sz, substr evts_test_suite)
Create a testsuite event string from integer events.
size_t escape_scalar(substr buffer, csubstr scalar, bool keep_newlines=false)
Escape a scalar to an existing buffer, using escape_scalar_fn.
(Undefined by default) Use shorter error message from checks/asserts: do not show the check condition...