Skip to main content

yaml_document_start_event_initialize

Function yaml_document_start_event_initialize 

Source
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,
) -> Success
Expand 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}