cpp-filetype
 
Loading...
Searching...
No Matches
filetype.hpp
Go to the documentation of this file.
1#ifndef FILETYPE_HPP
2#define FILETYPE_HPP
3
37
38#include <array>
39#include <cstdint>
40#include <string>
41#include <string_view>
42#include <vector>
43
44#include "types.hpp"
45
46namespace filetype {
47
55bool is_valid_buffer(const std::vector<uint8_t>& bytes, size_t min_size = 8);
56
66bool match_magic(const std::vector<uint8_t>& bytes,
67 const uint8_t* magic,
68 size_t magic_size,
69 size_t offset = 0);
70
80template <size_t N>
81bool match_magic(const std::vector<uint8_t>& bytes,
82 const std::array<uint8_t, N>& magic,
83 size_t offset = 0) {
84 return match_magic(bytes, magic.data(), N, offset);
85}
86
96bool is_type(const std::vector<uint8_t>& bytes,
97 const uint8_t* magic,
98 size_t magic_size,
99 size_t offset = 0);
100
110template <size_t N>
111bool is_type(const std::vector<uint8_t>& bytes,
112 const std::array<uint8_t, N>& magic,
113 size_t offset = 0) {
114 return is_type(bytes, magic.data(), N, offset);
115}
116
126const Type* match(const std::vector<uint8_t>& bytes);
127
138const Type* match_file(std::string_view filepath, size_t max_read_size = 8192);
139
147bool is(const std::vector<uint8_t>& bytes, const Type& type);
148
155bool is_image(const std::vector<uint8_t>& bytes);
156
163bool is_document(const std::vector<uint8_t>& bytes);
164
171bool is_archive(const std::vector<uint8_t>& bytes);
172
179bool is_audio(const std::vector<uint8_t>& bytes);
180
187bool is_video(const std::vector<uint8_t>& bytes);
188
189namespace matcher {
190
196const Type* match_image(const std::vector<uint8_t>& bytes);
197
203const Type* match_document(const std::vector<uint8_t>& bytes);
204
210const Type* match_archive(const std::vector<uint8_t>& bytes);
211
217const Type* match_audio(const std::vector<uint8_t>& bytes);
218
224const Type* match_video(const std::vector<uint8_t>& bytes);
225
226} // namespace matcher
227
228} // namespace filetype
229
230#endif // FILETYPE_HPP
bool match_magic(const std::vector< uint8_t > &bytes, const uint8_t *magic, size_t magic_size, size_t offset=0)
Compare bytes with a magic number pattern.
bool is_valid_buffer(const std::vector< uint8_t > &bytes, size_t min_size=8)
Validate if a buffer has sufficient data for type detection.
bool is_type(const std::vector< uint8_t > &bytes, const uint8_t *magic, size_t magic_size, size_t offset=0)
Check if the file type matches a specific format.
Main header file for file type definitions.