Cthulhu  0.2.10
Cthulhu compiler collection
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
io.hpp
Go to the documentation of this file.
1 // SPDX-License-Identifier: GPL-3.0-only
2 #pragma once
3 
4 #include "io/io.h"
5 
6 namespace ctu
7 {
8  constexpr auto kIoDelete = [](io_t *io) { io_close(io); };
9  using unique_io_t = std::unique_ptr<io_t, decltype(kIoDelete)>;
10 
11  class OsError
12  {
13  os_error_t error;
14  std::string msg;
15 
16  void get_message();
17 
18  public:
19  OsError(os_error_t error);
20 
21  operator os_error_t() const { return error; }
22 
23  bool success() const;
24  bool failed() const;
25 
26  const char *what() const;
27  };
28 
29  class Io
30  {
31  unique_io_t io;
32 
33  Io(io_t *io) : io(io, kIoDelete) {}
34 
35  public:
36  static Io file(const char *path);
37 
38  OsError error() const;
39 
40  size_t size() const;
41  const void *map() const;
42 
43  std::string_view text() const;
44 
45  const char *name() const;
46 
47  io_t *get() const { return io.get(); }
48  };
49 
50 }
Definition: io.hpp:30
static Io file(const char *path)
Definition: io.cpp:39
const char * name() const
Definition: io.cpp:65
io_t * get() const
Definition: io.hpp:47
OsError error() const
Definition: io.cpp:44
std::string_view text() const
Definition: io.cpp:59
const void * map() const
Definition: io.cpp:54
size_t size() const
Definition: io.cpp:49
bool success() const
Definition: io.cpp:24
const char * what() const
Definition: io.cpp:34
bool failed() const
Definition: io.cpp:29
OsError(os_error_t error)
Definition: io.cpp:18
typedefCT_BEGIN_API struct io_t io_t
an io object
Definition: console.h:11
CT_IO_API os_error_t io_close(INOUT_NOTNULL io_t *io)
destroy an IO object
Definition: io.hpp:7
constexpr auto kIoDelete
Definition: io.hpp:8
std::unique_ptr< io_t, decltype(kIoDelete)> unique_io_t
Definition: io.hpp:9
io object implementation
Definition: impl.h:122