cpp-filetype
 
Loading...
Searching...
No Matches
types.hpp
Go to the documentation of this file.
1#ifndef FILETYPE_TYPES_HPP
2#define FILETYPE_TYPES_HPP
3
12
13#include <array>
14#include <cstdint>
15#include <string_view>
16#include <vector>
17
18#include "filetype/type.hpp"
19#include "filetype/types/archive.hpp"
20#include "filetype/types/audio.hpp"
21#include "filetype/types/document.hpp"
22#include "filetype/types/image.hpp"
23#include "filetype/types/video.hpp"
24
25namespace filetype {
26
27namespace types {
28
38inline bool match_magic(const std::vector<uint8_t>& bytes,
39 const uint8_t* magic,
40 size_t magic_size,
41 size_t offset = 0);
42
52template <size_t N>
53inline bool match_magic(const std::vector<uint8_t>& bytes,
54 const std::array<uint8_t, N>& magic,
55 size_t offset = 0) {
56 return match_magic(bytes, magic.data(), N, offset);
57}
58
66inline bool is_valid_buffer(const std::vector<uint8_t>& bytes, size_t min_size = 8);
67
68// Import commonly used types from category namespaces
69
70// Image types
71using image::TYPE_BMP;
72using image::TYPE_CR2;
73using image::TYPE_GIF;
74using image::TYPE_HEIC;
75using image::TYPE_ICO;
76using image::TYPE_JPEG;
77using image::TYPE_JXR;
78using image::TYPE_PNG;
79using image::TYPE_PSD;
80using image::TYPE_TIFF;
81using image::TYPE_WEBP;
82
83// Document types
84using document::TYPE_DOC;
85using document::TYPE_DOCX;
86using document::TYPE_EPUB;
87using document::TYPE_PDF;
88using document::TYPE_PPT;
89using document::TYPE_PPTX;
90using document::TYPE_RTF;
91using document::TYPE_XLS;
92using document::TYPE_XLSX;
93
94// Archive types
95using archive::TYPE_7Z;
96using archive::TYPE_BZ2;
97using archive::TYPE_GZ;
98using archive::TYPE_RAR;
99using archive::TYPE_TAR;
100using archive::TYPE_XZ;
101using archive::TYPE_Z;
102using archive::TYPE_ZIP;
103
104// Audio types
105using audio::TYPE_AAC;
106using audio::TYPE_AIFF;
107using audio::TYPE_FLAC;
108using audio::TYPE_M4A;
109using audio::TYPE_MIDI;
110using audio::TYPE_MP3;
111using audio::TYPE_OGG;
112using audio::TYPE_WAV;
113using audio::TYPE_WMA;
114
115// Video types
116using video::TYPE_3GP;
117using video::TYPE_AVI;
118using video::TYPE_FLV;
119using video::TYPE_MKV;
120using video::TYPE_MOV;
121using video::TYPE_MP4;
122using video::TYPE_MPEG;
123using video::TYPE_WEBM;
124using video::TYPE_WMV;
125
126// Import magic number definitions
127
128// Image magic numbers
129using image::BMP_MAGIC;
130using image::CR2_MAGIC;
131using image::GIF_MAGIC;
132using image::HEIC_MAGIC;
133using image::ICO_MAGIC;
134using image::JPEG_MAGIC;
135using image::JXR_MAGIC;
136using image::PNG_MAGIC;
137using image::PSD_MAGIC;
138using image::TIFF_MAGIC_BE;
139using image::TIFF_MAGIC_LE;
140using image::WEBP_MAGIC;
141
142// Document magic numbers
143using document::DOC_MAGIC;
144using document::DOCX_MAGIC;
145using document::PDF_MAGIC;
146using document::RTF_MAGIC;
147
148// Archive magic numbers
149using archive::BZ2_MAGIC;
150using archive::GZ_MAGIC;
151using archive::RAR_MAGIC;
152using archive::SEVEN_Z_MAGIC;
153using archive::TAR_MAGIC;
154using archive::XZ_MAGIC;
155using archive::Z_MAGIC;
156using archive::ZIP_MAGIC;
157
158// Audio magic numbers
159using audio::AAC_MAGIC;
160using audio::AIFF_MAGIC;
161using audio::FLAC_MAGIC;
162using audio::M4A_MAGIC;
163using audio::MIDI_MAGIC;
164using audio::MP3_ID3_MAGIC;
165using audio::MP3_MAGIC;
166using audio::OGG_MAGIC;
167using audio::WAV_MAGIC;
168using audio::WMA_MAGIC;
169
170// Video magic numbers
171using video::AVI_MAGIC;
172using video::FLV_MAGIC;
173using video::MKV_MAGIC;
174using video::MOV_MAGIC;
175using video::MP4_MAGIC;
176using video::MPEG_MAGIC;
177using video::MPEG_MAGIC_ALT;
178using video::THREEGP_MAGIC;
179using video::WEBM_MAGIC;
180using video::WMV_MAGIC;
181
182} // namespace types
183} // namespace filetype
184
185#endif // FILETYPE_TYPES_HPP
bool match_magic(const std::vector< uint8_t > &bytes, const uint8_t *magic, size_t magic_size, size_t offset=0)
Check if bytes match a magic number pattern.
bool is_valid_buffer(const std::vector< uint8_t > &bytes, size_t min_size=8)
Check if a buffer is valid for type detection.