LCOV - code coverage report
Current view: top level - usr/include/yaml-cpp - ostream_wrapper.h (source / functions) Hit Total Coverage
Test: jami-coverage-filtered.info Lines: 3 3 100.0 %
Date: 2025-08-24 09:11:10 Functions: 1 1 100.0 %

          Line data    Source code
       1             : #ifndef OSTREAM_WRAPPER_H_62B23520_7C8E_11DE_8A39_0800200C9A66
       2             : #define OSTREAM_WRAPPER_H_62B23520_7C8E_11DE_8A39_0800200C9A66
       3             : 
       4             : #if defined(_MSC_VER) ||                                            \
       5             :     (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \
       6             :      (__GNUC__ >= 4))  // GCC supports "pragma once" correctly since 3.4
       7             : #pragma once
       8             : #endif
       9             : 
      10             : #include <string>
      11             : #include <vector>
      12             : 
      13             : #include "yaml-cpp/dll.h"
      14             : 
      15             : namespace YAML {
      16             : class YAML_CPP_API ostream_wrapper {
      17             :  public:
      18             :   ostream_wrapper();
      19             :   explicit ostream_wrapper(std::ostream& stream);
      20             :   ostream_wrapper(const ostream_wrapper&) = delete;
      21             :   ostream_wrapper(ostream_wrapper&&) = delete;
      22             :   ostream_wrapper& operator=(const ostream_wrapper&) = delete;
      23             :   ostream_wrapper& operator=(ostream_wrapper&&) = delete;
      24             :   ~ostream_wrapper();
      25             : 
      26             :   void write(const std::string& str);
      27             :   void write(const char* str, std::size_t size);
      28             : 
      29             :   void set_comment() { m_comment = true; }
      30             : 
      31             :   const char* str() const {
      32             :     if (m_pStream) {
      33             :       return nullptr;
      34             :     } else {
      35             :       m_buffer[m_pos] = '\0';
      36             :       return &m_buffer[0];
      37             :     }
      38             :   }
      39             : 
      40             :   std::size_t row() const { return m_row; }
      41             :   std::size_t col() const { return m_col; }
      42             :   std::size_t pos() const { return m_pos; }
      43             :   bool comment() const { return m_comment; }
      44             : 
      45             :  private:
      46             :   void update_pos(char ch);
      47             : 
      48             :  private:
      49             :   mutable std::vector<char> m_buffer;
      50             :   std::ostream* const m_pStream;
      51             : 
      52             :   std::size_t m_pos;
      53             :   std::size_t m_row, m_col;
      54             :   bool m_comment;
      55             : };
      56             : 
      57             : template <std::size_t N>
      58             : inline ostream_wrapper& operator<<(ostream_wrapper& stream,
      59             :                                    const char (&str)[N]) {
      60             :   stream.write(str, N - 1);
      61             :   return stream;
      62             : }
      63             : 
      64       18426 : inline ostream_wrapper& operator<<(ostream_wrapper& stream,
      65             :                                    const std::string& str) {
      66       18426 :   stream.write(str);
      67       18426 :   return stream;
      68             : }
      69             : 
      70             : inline ostream_wrapper& operator<<(ostream_wrapper& stream, char ch) {
      71             :   stream.write(&ch, 1);
      72             :   return stream;
      73             : }
      74             : }  // namespace YAML
      75             : 
      76             : #endif  // OSTREAM_WRAPPER_H_62B23520_7C8E_11DE_8A39_0800200C9A66

Generated by: LCOV version 1.14