LCOV - code coverage report
Current view: top level - corosio - file_base.hpp (source / functions) Coverage Total Hit
Test: coverage_remapped.info Lines: 100.0 % 4 4
Test Date: 2026-09-28 20:06:38 Functions: 100.0 % 2 2

           TLA  Line data    Source code
       1                 : //
       2                 : // Copyright (c) 2026 Michael Vandeberg
       3                 : //
       4                 : // Distributed under the Boost Software License, Version 1.0. (See accompanying
       5                 : // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
       6                 : //
       7                 : // Official repository: https://github.com/cppalliance/corosio
       8                 : //
       9                 : 
      10                 : #ifndef BOOST_COROSIO_FILE_BASE_HPP
      11                 : #define BOOST_COROSIO_FILE_BASE_HPP
      12                 : 
      13                 : #include <boost/corosio/detail/config.hpp>
      14                 : 
      15                 : namespace boost::corosio {
      16                 : 
      17                 : /** Groups the flag and seek-origin constants shared
      18                 :     by @ref stream_file and @ref random_access_file.
      19                 : */
      20                 : struct file_base
      21                 : {
      22                 :     /** Bitmask flags for opening a file.
      23                 : 
      24                 :         Flags are combined with bitwise OR to specify the
      25                 :         desired access mode and creation behavior.
      26                 :     */
      27                 :     enum flags : unsigned
      28                 :     {
      29                 :         /// Open for reading only.
      30                 :         read_only = 1,
      31                 : 
      32                 :         /// Open for writing only.
      33                 :         write_only = 2,
      34                 : 
      35                 :         /// Open for reading and writing.
      36                 :         read_write = read_only | write_only,
      37                 : 
      38                 :         /// Append to the end of the file on each write.
      39                 :         append = 4,
      40                 : 
      41                 :         /// Create the file if it does not exist.
      42                 :         create = 8,
      43                 : 
      44                 :         /// Fail if the file already exists (requires @ref create).
      45                 :         exclusive = 16,
      46                 : 
      47                 :         /// Truncate the file to zero length on open.
      48                 :         truncate = 32,
      49                 : 
      50                 :         /// Synchronize data to disk on each write.
      51                 :         sync_all_on_write = 64
      52                 :     };
      53                 : 
      54                 :     /** Origin for seek operations. */
      55                 :     enum seek_basis
      56                 :     {
      57                 :         /// Seek relative to the beginning of the file.
      58                 :         seek_set,
      59                 : 
      60                 :         /// Seek relative to the current position.
      61                 :         seek_cur,
      62                 : 
      63                 :         /// Seek relative to the end of the file.
      64                 :         seek_end
      65                 :     };
      66                 : 
      67 HIT         125 :     friend constexpr flags operator|(flags a, flags b) noexcept
      68                 :     {
      69                 :         return static_cast<flags>(
      70             125 :             static_cast<unsigned>(a) | static_cast<unsigned>(b));
      71                 :     }
      72                 : 
      73            2329 :     friend constexpr flags operator&(flags a, flags b) noexcept
      74                 :     {
      75                 :         return static_cast<flags>(
      76            2329 :             static_cast<unsigned>(a) & static_cast<unsigned>(b));
      77                 :     }
      78                 : 
      79                 :     friend constexpr flags& operator|=(flags& a, flags b) noexcept
      80                 :     {
      81                 :         return a = a | b;
      82                 :     }
      83                 : 
      84                 :     friend constexpr flags& operator&=(flags& a, flags b) noexcept
      85                 :     {
      86                 :         return a = a & b;
      87                 :     }
      88                 : };
      89                 : 
      90                 : } // namespace boost::corosio
      91                 : 
      92                 : #endif // BOOST_COROSIO_FILE_BASE_HPP
        

Generated by: LCOV version 2.3