StormByte C++ Library: Multimedia module 0.0.9999
StormByte-Multimedia is a StormByte library module for parsing configuration files
Loading...
Searching...
No Matches
exception.hxx
Go to the documentation of this file.
1/*
2 * Copyright (C) 2024-2026 David C. Manuelda (StormBytePP)
3 *
4 * This file is part of StormByte-Multimedia.
5 *
6 * StormByte-Multimedia original source is dual-licensed:
7 *
8 * 1. GNU Lesser General Public License v3.0 (or later)
9 * You may redistribute and/or modify this file under the terms of the
10 * GNU Lesser General Public License as published by the Free Software
11 * Foundation, either version 3 of the License, or (at your option)
12 * any later version.
13 *
14 * 2. Commercial license
15 * Alternatively, this file may be used under the terms of a commercial
16 * license agreement with the copyright holder
17 * (David C. Manuelda <StormByte@gmail.com>).
18 *
19 * Both licenses apply only to original StormByte-Multimedia source in this
20 * file. Third-party components — including FFmpeg and embedded trained data —
21 * remain under their own licenses and are not covered by the commercial grant.
22 *
23 * Neither license grants any patent rights. Any patent licenses required
24 * to use this software or third-party components must be obtained separately
25 * from the patent holders.
26 *
27 * StormByte-Multimedia is distributed in the hope that it will be useful,
28 * but WITHOUT ANY WARRANTY; without even the implied warranty of
29 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30 * GNU Lesser General Public License for more details.
31 *
32 * You should have received a copy of the GNU Lesser General Public License
33 * version 3 along with StormByte-Multimedia. If not, see
34 * <https://www.gnu.org/licenses/lgpl-3.0.html>.
35 *
36 * SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-StormByte-Commercial
37 */
38
39#pragma once
40
41#include <StormByte/exception.hxx>
43
44#include <format>
45#include <string>
46
51namespace StormByte::Multimedia {
60 class STORMBYTE_MULTIMEDIA_PUBLIC Exception: public StormByte::Exception {
61 public:
69 template <typename... Args>
70 Exception(const std::string& component, std::format_string<Args...> fmt, Args&&... args):
71 StormByte::Exception(StormByte::Component("Multimedia::" + component),
72 fmt, std::forward<Args>(args)...) {}
73
77 Exception(const Exception&) = default;
78
82 Exception(Exception&&) noexcept = default;
83
87 ~Exception() noexcept override = default;
88
93 Exception& operator=(const Exception&) = default;
94
99 Exception& operator=(Exception&&) noexcept = default;
100 };
101
107 public:
112 explicit CodecNotFoundException(const std::string& codec):
113 Exception("Codec", "codec '{}' not found", codec) {}
114 };
115
121 public:
126 explicit ContainerNotFoundException(const std::string& container):
127 Exception("Container", "container '{}' not found", container) {}
128 };
129
135 public:
140 explicit FileOpenException(const std::string& message):
141 Exception("File", "{}", message) {}
142 };
143
149 public:
155 FilePathOpenException(const std::string& path, const std::string& reason):
156 FileOpenException(std::format("failed to open '{}': {}", path, reason)) {}
157 };
158
164 public:
169 explicit FileBufferOpenException(const std::string& reason):
170 FileOpenException(std::format("failed to open buffer: {}", reason)) {}
171 };
172
178 public:
183 explicit TranscodeException(const std::string& message):
184 Exception("Transcode", "{}", message) {}
185 };
186}
Thrown when Registry::FindCodec does not resolve a key.
Definition exception.hxx:106
CodecNotFoundException(const std::string &codec)
Constructs the exception for codec.
Definition exception.hxx:112
Thrown when Registry::FindContainer does not resolve a key.
Definition exception.hxx:120
ContainerNotFoundException(const std::string &container)
Constructs the exception for container.
Definition exception.hxx:126
Base exception for the Multimedia module.
Definition exception.hxx:60
Exception(Exception &&) noexcept=default
Move constructor.
Exception(const std::string &component, std::format_string< Args... > fmt, Args &&... args)
Constructs a formatted Multimedia exception.
Definition exception.hxx:70
Exception(const Exception &)=default
Copy constructor.
Thrown when File::Open fails on a Consumer.
Definition exception.hxx:163
FileBufferOpenException(const std::string &reason)
Constructs the exception.
Definition exception.hxx:169
Thrown when File::Open fails (path or buffer).
Definition exception.hxx:134
FileOpenException(const std::string &message)
Constructs the exception with a finished message.
Definition exception.hxx:140
Thrown when File::Open fails on a filesystem path.
Definition exception.hxx:148
FilePathOpenException(const std::string &path, const std::string &reason)
Constructs the exception for path.
Definition exception.hxx:155
Thrown when Transcode::Open or a configuration call fails.
Definition exception.hxx:177
TranscodeException(const std::string &message)
Constructs the exception with a finished message.
Definition exception.hxx:183
Public multimedia types: codecs, containers, streams and files.
#define STORMBYTE_MULTIMEDIA_PUBLIC
Imported symbol.
Definition visibility.h:47