ACMX
2.139.0
Dual-Backend Real-Time GPU Video Synthesis
Loading...
Searching...
No Matches
input_validation.hpp
Go to the documentation of this file.
1
#ifndef ACMXVK_INPUT_VALIDATION_HPP
2
#define ACMXVK_INPUT_VALIDATION_HPP
3
4
#include <cstddef>
5
#include <cstdint>
6
#include <filesystem>
7
#include <istream>
8
#include <string>
9
#include <string_view>
10
11
namespace
acmxvk::input
{
12
13
enum class
StringKind
{
14
Argument
,
15
ConfigurationLine
,
16
Path
,
17
DisplayText
,
18
Identifier
,
19
Token
,
20
StructuredValue
,
21
Url
,
22
};
23
24
constexpr
std::size_t
MAX_ARGUMENT_BYTES
= 8192;
25
constexpr
std::size_t
MAX_PATH_BYTES
= 4096;
26
constexpr
std::size_t
MAX_DISPLAY_TEXT_BYTES
= 1024;
27
constexpr
std::size_t
MAX_IDENTIFIER_BYTES
= 64;
28
constexpr
std::size_t
MAX_TOKEN_BYTES
= 128;
29
constexpr
std::size_t
MAX_STRUCTURED_VALUE_BYTES
= 4096;
30
constexpr
std::size_t
MAX_CONFIGURATION_LINE_BYTES
= 4096;
31
constexpr
std::uintmax_t
MAX_CONFIGURATION_FILE_BYTES
= 4U * 1024U * 1024U;
32
constexpr
std::size_t
MAX_SHADER_ENTRIES
= 16384;
33
constexpr
std::size_t
MAX_PLAYLIST_NODES
= 10000;
34
constexpr
std::size_t
MAX_PLAYLIST_ENTRIES
= 65536;
35
constexpr
std::size_t
MAX_MIDI_MAPPINGS
= 4096;
36
constexpr
std::size_t
MAX_AUDIO_PLAYLIST_ENTRIES
= 4096;
37
38
void
validate_string
(std::string_view value,
StringKind
kind, std::string_view context,
bool
allow_empty =
false
);
39
40
void
validate_file_size
(
const
std::filesystem::path &path, std::string_view context, std::uintmax_t maximum_bytes =
MAX_CONFIGURATION_FILE_BYTES
);
41
42
void
validate_text_file
(
const
std::filesystem::path &path, std::string_view context, std::uintmax_t maximum_bytes =
MAX_CONFIGURATION_FILE_BYTES
, std::size_t maximum_line_bytes =
MAX_CONFIGURATION_FILE_BYTES
);
43
44
void
validate_spirv_file
(
const
std::filesystem::path &path, std::string_view context);
45
46
[[nodiscard]] std::string
truncate_utf8
(std::string_view value, std::size_t maximum_bytes, std::string_view suffix =
"..."
);
47
48
[[nodiscard]]
bool
read_bounded_line
(std::istream &
input
, std::string &line, std::string_view context, std::size_t line_number, std::size_t maximum_bytes =
MAX_CONFIGURATION_LINE_BYTES
);
49
50
}
// namespace acmxvk::input
51
52
#endif
acmxvk::input
Definition
input_validation.cpp:10
acmxvk::input::MAX_CONFIGURATION_LINE_BYTES
constexpr std::size_t MAX_CONFIGURATION_LINE_BYTES
Definition
input_validation.hpp:30
acmxvk::input::read_bounded_line
bool read_bounded_line(std::istream &input, std::string &line, std::string_view context, std::size_t line_number, std::size_t maximum_bytes)
Definition
input_validation.cpp:235
acmxvk::input::MAX_SHADER_ENTRIES
constexpr std::size_t MAX_SHADER_ENTRIES
Definition
input_validation.hpp:32
acmxvk::input::MAX_CONFIGURATION_FILE_BYTES
constexpr std::uintmax_t MAX_CONFIGURATION_FILE_BYTES
Definition
input_validation.hpp:31
acmxvk::input::MAX_AUDIO_PLAYLIST_ENTRIES
constexpr std::size_t MAX_AUDIO_PLAYLIST_ENTRIES
Definition
input_validation.hpp:36
acmxvk::input::StringKind
StringKind
Definition
input_validation.hpp:13
acmxvk::input::StringKind::Url
@ Url
Definition
input_validation.hpp:21
acmxvk::input::StringKind::Argument
@ Argument
Definition
input_validation.hpp:14
acmxvk::input::StringKind::DisplayText
@ DisplayText
Definition
input_validation.hpp:17
acmxvk::input::StringKind::Identifier
@ Identifier
Definition
input_validation.hpp:18
acmxvk::input::StringKind::Token
@ Token
Definition
input_validation.hpp:19
acmxvk::input::StringKind::StructuredValue
@ StructuredValue
Definition
input_validation.hpp:20
acmxvk::input::StringKind::ConfigurationLine
@ ConfigurationLine
Definition
input_validation.hpp:15
acmxvk::input::StringKind::Path
@ Path
Definition
input_validation.hpp:16
acmxvk::input::MAX_PATH_BYTES
constexpr std::size_t MAX_PATH_BYTES
Definition
input_validation.hpp:25
acmxvk::input::MAX_PLAYLIST_NODES
constexpr std::size_t MAX_PLAYLIST_NODES
Definition
input_validation.hpp:33
acmxvk::input::validate_file_size
void validate_file_size(const std::filesystem::path &path, std::string_view context, std::uintmax_t maximum_bytes)
Definition
input_validation.cpp:176
acmxvk::input::MAX_MIDI_MAPPINGS
constexpr std::size_t MAX_MIDI_MAPPINGS
Definition
input_validation.hpp:35
acmxvk::input::validate_spirv_file
void validate_spirv_file(const std::filesystem::path &path, std::string_view context)
Definition
input_validation.cpp:187
acmxvk::input::MAX_TOKEN_BYTES
constexpr std::size_t MAX_TOKEN_BYTES
Definition
input_validation.hpp:28
acmxvk::input::MAX_PLAYLIST_ENTRIES
constexpr std::size_t MAX_PLAYLIST_ENTRIES
Definition
input_validation.hpp:34
acmxvk::input::MAX_STRUCTURED_VALUE_BYTES
constexpr std::size_t MAX_STRUCTURED_VALUE_BYTES
Definition
input_validation.hpp:29
acmxvk::input::truncate_utf8
std::string truncate_utf8(std::string_view value, std::size_t maximum_bytes, std::string_view suffix)
Definition
input_validation.cpp:218
acmxvk::input::MAX_IDENTIFIER_BYTES
constexpr std::size_t MAX_IDENTIFIER_BYTES
Definition
input_validation.hpp:27
acmxvk::input::MAX_ARGUMENT_BYTES
constexpr std::size_t MAX_ARGUMENT_BYTES
Definition
input_validation.hpp:24
acmxvk::input::MAX_DISPLAY_TEXT_BYTES
constexpr std::size_t MAX_DISPLAY_TEXT_BYTES
Definition
input_validation.hpp:26
acmxvk::input::validate_text_file
void validate_text_file(const std::filesystem::path &path, std::string_view context, std::uintmax_t maximum_bytes, std::size_t maximum_line_bytes)
Definition
input_validation.cpp:206
acmxvk::input::validate_string
void validate_string(std::string_view value, StringKind kind, std::string_view context, bool allow_empty)
Definition
input_validation.cpp:132
ACMXVK
input_validation.hpp
Generated by
1.18.0