rapidyaml 0.15.2
parse and emit YAML, and do it fast
Loading...
Searching...
No Matches
Writer objects to use with an Emitter

Classes

struct  c4::yml::WriterFile
 A writer that outputs to a C file handle, defaulting to stdout. More...
struct  c4::yml::WriterOStream< OStream >
 A writer that outputs to an STL-like ostream. More...
struct  c4::yml::WriterBuf
 A writer to a memory buffer, in the form of a substr. More...

Functions

 c4::yml::WriterFile::WriterFile (FILE *f=nullptr)
substr c4::yml::WriterFile::_get (bool) const
template<size_t N>
void c4::yml::WriterFile::_do_write (const char(&a)[N]) noexcept
void c4::yml::WriterFile::_do_write (csubstr s) noexcept
void c4::yml::WriterFile::_do_write (const char c) noexcept
void c4::yml::WriterFile::_do_write (const char c, size_t num_times) noexcept
 c4::yml::WriterOStream< OStream >::WriterOStream (OStream &s)
substr c4::yml::WriterOStream< OStream >::_get (bool) const noexcept
template<size_t N>
void c4::yml::WriterOStream< OStream >::_do_write (const char(&a)[N]) noexcept
void c4::yml::WriterOStream< OStream >::_do_write (csubstr s) noexcept
void c4::yml::WriterOStream< OStream >::_do_write (const char c) noexcept
void c4::yml::WriterOStream< OStream >::_do_write (const char c, size_t num_times) noexcept
 c4::yml::WriterBuf::WriterBuf (substr sp) noexcept
substr c4::yml::WriterBuf::_get (bool error_on_excess) const
template<size_t N>
void c4::yml::WriterBuf::_do_write (const char(&a)[N]) noexcept
void c4::yml::WriterBuf::_do_write (csubstr s) noexcept
void c4::yml::WriterBuf::_do_write (const char c) noexcept
void c4::yml::WriterBuf::_do_write (const char c, size_t num_times) noexcept

Variables

FILE * c4::yml::WriterFile::m_file
size_t c4::yml::WriterFile::m_pos
OStream * c4::yml::WriterOStream< OStream >::m_stream
size_t c4::yml::WriterOStream< OStream >::m_pos
substr c4::yml::WriterBuf::m_buf
size_t c4::yml::WriterBuf::m_pos

Detailed Description

See also
Emitter

Function Documentation

◆ WriterFile()

c4::yml::WriterFile::WriterFile ( FILE * f = nullptr)
inline

Definition at line 37 of file writer.hpp.

37: m_file(f ? f : stdout), m_pos(0) {}

◆ _get() [1/3]

substr c4::yml::WriterFile::_get ( bool ) const
inline

Definition at line 39 of file writer.hpp.

40 {
41 substr sp;
42 sp.str = nullptr;
43 sp.len = m_pos;
44 return sp;
45 }
basic_substring< char > substr
a mutable string view
Definition substr.hpp:2356
C * str
a restricted pointer to the first character of the substring
Definition substr.hpp:216

◆ _do_write() [1/12]

template<size_t N>
void c4::yml::WriterFile::_do_write ( const char(&) a[N])
inlinenoexcept

Definition at line 48 of file writer.hpp.

49 {
50 static_assert(N > 1, "empty string");
51 (void)fwrite(a, sizeof(char), N - 1, m_file);
52 m_pos += N - 1;
53 }

◆ _do_write() [2/12]

void c4::yml::WriterFile::_do_write ( csubstr s)
inlinenoexcept

Definition at line 55 of file writer.hpp.

56 {
57 if(s.len)
58 {
59 C4_SUPPRESS_WARNING_GCC_CLANG_WITH_PUSH("-Wsign-conversion")
60 (void)fwrite(s.str, sizeof(csubstr::char_type), s.len, m_file);
61 m_pos += s.len;
62 C4_SUPPRESS_WARNING_GCC_CLANG_POP
63 }
64 }

◆ _do_write() [3/12]

void c4::yml::WriterFile::_do_write ( const char c)
inlinenoexcept

Definition at line 66 of file writer.hpp.

67 {
68 (void)fputc(c, m_file);
69 ++m_pos;
70 }

◆ _do_write() [4/12]

void c4::yml::WriterFile::_do_write ( const char c,
size_t num_times )
inlinenoexcept

Definition at line 72 of file writer.hpp.

73 {
74 for(size_t i = 0; i < num_times; ++i)
75 (void)fputc(c, m_file);
76 m_pos += num_times;
77 }

◆ WriterOStream()

template<class OStream>
c4::yml::WriterOStream< OStream >::WriterOStream ( OStream & s)
inline

Definition at line 97 of file writer.hpp.

97: m_stream(&s), m_pos(0) {}
A writer that outputs to an STL-like ostream.
Definition writer.hpp:93

◆ _get() [2/3]

template<class OStream>
substr c4::yml::WriterOStream< OStream >::_get ( bool ) const
inlinenoexcept

Definition at line 99 of file writer.hpp.

100 {
101 substr sp;
102 sp.str = nullptr;
103 sp.len = m_pos;
104 return sp;
105 }

◆ _do_write() [5/12]

template<class OStream>
template<size_t N>
void c4::yml::WriterOStream< OStream >::_do_write ( const char(&) a[N])
inlinenoexcept

Definition at line 108 of file writer.hpp.

109 {
110 static_assert(N > 1, "empty string");
111 m_stream->write(a, N - 1);
112 m_pos += N - 1;
113 }

◆ _do_write() [6/12]

template<class OStream>
void c4::yml::WriterOStream< OStream >::_do_write ( csubstr s)
inlinenoexcept

Definition at line 115 of file writer.hpp.

116 {
117 if(s.len)
118 {
119 C4_SUPPRESS_WARNING_GCC_CLANG_WITH_PUSH("-Wsign-conversion")
120 m_stream->write(s.str, s.len);
121 m_pos += s.len;
123 }
124 }

◆ _do_write() [7/12]

template<class OStream>
void c4::yml::WriterOStream< OStream >::_do_write ( const char c)
inlinenoexcept

Definition at line 126 of file writer.hpp.

127 {
128 m_stream->put(c);
129 ++m_pos;
130 }

◆ _do_write() [8/12]

template<class OStream>
void c4::yml::WriterOStream< OStream >::_do_write ( const char c,
size_t num_times )
inlinenoexcept

Definition at line 132 of file writer.hpp.

133 {
134 for(size_t i = 0; i < num_times; ++i)
135 m_stream->put(c);
136 m_pos += num_times;
137 }

◆ WriterBuf()

c4::yml::WriterBuf::WriterBuf ( substr sp)
inlinenoexcept

Definition at line 151 of file writer.hpp.

151: m_buf(sp), m_pos(0) {}

◆ _get() [3/3]

substr c4::yml::WriterBuf::_get ( bool error_on_excess) const
inline

Definition at line 153 of file writer.hpp.

154 {
155 if(m_pos <= m_buf.len)
156 return m_buf.first(m_pos);
157 else if(error_on_excess)
158 _RYML_ERR_BASIC("not enough space in the given buffer");
159 substr sp;
160 sp.str = nullptr;
161 sp.len = m_pos;
162 return sp;
163 }

◆ _do_write() [9/12]

template<size_t N>
void c4::yml::WriterBuf::_do_write ( const char(&) a[N])
inlinenoexcept

Definition at line 166 of file writer.hpp.

167 {
168 static_assert(N > 1, "empty string");
169 _RYML_ASSERT_BASIC( ! m_buf.overlaps(a));
170 if(m_pos + N-1 <= m_buf.len)
171 memcpy(m_buf.str + m_pos, a, N-1);
172 m_pos += N-1;
173 }

◆ _do_write() [10/12]

void c4::yml::WriterBuf::_do_write ( csubstr s)
inlinenoexcept

Definition at line 175 of file writer.hpp.

176 {
177 _RYML_ASSERT_BASIC( ! s.overlaps(m_buf));
178 if(s.len && m_pos + s.len <= m_buf.len)
179 memcpy(m_buf.str + m_pos, s.str, s.len);
180 m_pos += s.len;
181 }

◆ _do_write() [11/12]

void c4::yml::WriterBuf::_do_write ( const char c)
inlinenoexcept

Definition at line 183 of file writer.hpp.

184 {
185 if(m_pos + 1 <= m_buf.len)
186 m_buf.str[m_pos] = c;
187 ++m_pos;
188 }

◆ _do_write() [12/12]

void c4::yml::WriterBuf::_do_write ( const char c,
size_t num_times )
inlinenoexcept

Definition at line 190 of file writer.hpp.

191 {
192 if(m_pos + num_times <= m_buf.len)
193 memset(m_buf.str + m_pos, c, num_times);
194 m_pos += num_times;
195 }

Variable Documentation

◆ m_file

FILE* c4::yml::WriterFile::m_file

Definition at line 34 of file writer.hpp.

◆ m_pos [1/3]

size_t c4::yml::WriterFile::m_pos

Definition at line 35 of file writer.hpp.

◆ m_stream

template<class OStream>
OStream* c4::yml::WriterOStream< OStream >::m_stream

Definition at line 94 of file writer.hpp.

◆ m_pos [2/3]

template<class OStream>
size_t c4::yml::WriterOStream< OStream >::m_pos

Definition at line 95 of file writer.hpp.

◆ m_buf

substr c4::yml::WriterBuf::m_buf

Definition at line 148 of file writer.hpp.

◆ m_pos [3/3]

size_t c4::yml::WriterBuf::m_pos

Definition at line 149 of file writer.hpp.