gitee.com/sy_183/go-common@v1.0.5-0.20231205030221-958cfe129b47/yaml/writerc.go (about)

     1  // 
     2  // Copyright (c) 2011-2019 Canonical Ltd
     3  // Copyright (c) 2006-2010 Kirill Simonov
     4  // 
     5  // Permission is hereby granted, free of charge, to any person obtaining a copy of
     6  // this software and associated documentation files (the "Software"), to deal in
     7  // the Software without restriction, including without limitation the rights to
     8  // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
     9  // of the Software, and to permit persons to whom the Software is furnished to do
    10  // so, subject to the following conditions:
    11  // 
    12  // The above copyright notice and this permission notice shall be included in all
    13  // copies or substantial portions of the Software.
    14  // 
    15  // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    16  // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    17  // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    18  // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    19  // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    20  // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    21  // SOFTWARE.
    22  
    23  package yaml
    24  
    25  // Set the writer error and return false.
    26  func yaml_emitter_set_writer_error(emitter *yaml_emitter_t, problem string) bool {
    27  	emitter.error = yaml_WRITER_ERROR
    28  	emitter.problem = problem
    29  	return false
    30  }
    31  
    32  // Flush the output buffer.
    33  func yaml_emitter_flush(emitter *yaml_emitter_t) bool {
    34  	if emitter.write_handler == nil {
    35  		panic("write handler not set")
    36  	}
    37  
    38  	// Check if the buffer is empty.
    39  	if emitter.buffer_pos == 0 {
    40  		return true
    41  	}
    42  
    43  	if err := emitter.write_handler(emitter, emitter.buffer[:emitter.buffer_pos]); err != nil {
    44  		return yaml_emitter_set_writer_error(emitter, "write error: "+err.Error())
    45  	}
    46  	emitter.buffer_pos = 0
    47  	return true
    48  }