pub unsafe fn yaml_document_start_event_initialize(
event: *mut yaml_event_t,
version_directive: *mut yaml_version_directive_t,
tag_directives_start: *mut yaml_tag_directive_t,
tag_directives_end: *mut yaml_tag_directive_t,
implicit: bool,
) -> SuccessExpand description
Create the DOCUMENT-START event.
The implicit argument is considered as a stylistic parameter and may be
ignored by the emitter.
Examples found in repository?
examples/example.rs (lines 60-66)
39fn emit_simple_document() {
40 unsafe {
41 let mut emitter = MaybeUninit::<YamlEmitterT>::uninit();
42 assert!(is_success(
43 yaml_emitter_initialize(emitter.as_mut_ptr()).ok
44 ));
45 let mut emitter = emitter.assume_init();
46
47 let mut buf = [0u8; 128];
48 let mut size_written: u64 = 0;
49 yaml_emitter_set_output_string(
50 &mut emitter,
51 buf.as_mut_ptr(),
52 buf.len() as u64,
53 &mut size_written,
54 );
55
56 emit(&mut emitter, |ev| {
57 yaml_stream_start_event_initialize(ev, YamlUtf8Encoding).ok
58 });
59 emit(&mut emitter, |ev| {
60 unsafe_libyaml::yaml_document_start_event_initialize(
61 ev,
62 ptr::null_mut(),
63 ptr::null_mut(),
64 ptr::null_mut(),
65 true,
66 )
67 .ok
68 });
69 emit(&mut emitter, |ev| {
70 yaml_mapping_start_event_initialize(
71 ev,
72 ptr::null_mut(),
73 ptr::null_mut(),
74 true,
75 YamlBlockMappingStyle,
76 )
77 .ok
78 });
79 let key = b"hello\0";
80 emit(&mut emitter, |ev| {
81 yaml_scalar_event_initialize(
82 ev,
83 ptr::null_mut(),
84 ptr::null_mut(),
85 key.as_ptr(),
86 (key.len() - 1) as i32,
87 true,
88 true,
89 YamlPlainScalarStyle,
90 )
91 .ok
92 });
93 let val = b"world\0";
94 emit(&mut emitter, |ev| {
95 yaml_scalar_event_initialize(
96 ev,
97 ptr::null_mut(),
98 ptr::null_mut(),
99 val.as_ptr(),
100 (val.len() - 1) as i32,
101 true,
102 true,
103 YamlPlainScalarStyle,
104 )
105 .ok
106 });
107 emit(&mut emitter, |ev| {
108 yaml_mapping_end_event_initialize(ev).ok
109 });
110 emit(&mut emitter, |ev| {
111 unsafe_libyaml::yaml_document_end_event_initialize(ev, true)
112 .ok
113 });
114 emit(&mut emitter, |ev| {
115 yaml_stream_end_event_initialize(ev).ok
116 });
117
118 let out = core::str::from_utf8(&buf[..size_written as usize])
119 .unwrap();
120 println!("✅ emitter produced:\n{out}");
121
122 yaml_emitter_delete(&mut emitter);
123 }
124}