Minor BMP fix
[ail.git] / ail / file.hpp
blob62ae8fbbba052ccc52ed8ed867ec69c3d83de99d
1 #pragma once
3 #include <string>
4 #include <vector>
6 #include <cstdio>
8 #include <ail/exception.hpp>
9 #include <ail/types.hpp>
11 namespace ail
13 class file
15 public:
17 enum open_mode_type
19 open_mode_read,
20 open_mode_read_write,
21 open_mode_write_truncate,
22 open_mode_read_write_truncate
25 file();
26 file(std::string const & name, open_mode_type mode = open_mode_read_write);
27 ~file();
29 bool open();
30 bool open(std::string const & name, open_mode_type mode = open_mode_read_write);
31 bool open_read_only(std::string const & name);
32 bool open_create(std::string const & name);
34 std::string read(std::size_t size);
35 void read(char * output, std::size_t size);
36 void write(std::string const & input);
37 void write(char const * input, std::size_t size);
38 void close();
40 std::size_t get_size();
41 std::size_t get_file_pointer();
42 void set_file_pointer(std::size_t offset);
43 void seek_end();
45 private:
46 FILE * file_descriptor;
49 bool read_file(std::string const & file_name, std::string & output);
50 bool write_file(std::string const & file_name, std::string const & input);
51 bool append_to_file(std::string const & file_name, std::string const & input);
52 bool read_lines(std::string const & file_name, std::vector<std::string> & output);
54 bool create_directory(std::string const & path);
55 bool read_directory(std::string const & directory, string_vector & files, string_vector & directories);
56 bool rename_file(std::string const & target, std::string const & new_name);
57 bool remove_file(std::string const & path);
59 std::string join_paths(std::string const & left, std::string const & right);
60 bool retrieve_extension(std::string const & path, std::string & output);
62 bool file_exists(std::string const & path);