libepubgen_utils.h Source File documentation

libepubgen_utils.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /*
3 * This file is part of the libepubgen project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 */
9
10 #ifndef INCLUDED_LIBEPUBGEN_UTILS_H
11 #define INCLUDED_LIBEPUBGEN_UTILS_H
12
13 #ifdef HAVE_CONFIG_H
14 #include "config.h"
15 #endif
16
17 #include <memory>
18
19 #include <boost/cstdint.hpp>
20
21 #include <librevenge-stream/librevenge-stream.h>
22
23 #if defined(HAVE_FUNC_ATTRIBUTE_FORMAT)
24 #define EPUBGEN_ATTRIBUTE_PRINTF(fmt, arg) __attribute__((format(printf, fmt, arg)))
25 #else
26 #define EPUBGEN_ATTRIBUTE_PRINTF(fmt, arg)
27 #endif
28
29 // do nothing with debug messages in a release compile
30 #ifdef DEBUG
31
32 namespace libepubgen
33 {
34 void debugPrint(const char *format, ...) EPUBGEN_ATTRIBUTE_PRINTF(1, 2);
35 }
36
37 #define EPUBGEN_DEBUG_MSG(M) libepubgen::debugPrint M
38 #define EPUBGEN_DEBUG(M) M
39
40 #else
41
42 #define EPUBGEN_DEBUG_MSG(M)
43 #define EPUBGEN_DEBUG(M)
44
45 #endif
46
47 #define EPUBGEN_NUM_ELEMENTS(array) (sizeof(array) / sizeof(array[0]))
48
49 namespace libepubgen
50 {
51
52 typedef std::shared_ptr<librevenge::RVNGInputStream> RVNGInputStreamPtr_t;
53
54 struct EPUBGENDummyDeleter
55 {
56 void operator()(void *) {}
57 };
58
59 template<typename T, typename... Args>
60 std::unique_ptr<T> make_unique(Args &&... args)
61 {
62 return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
63 }
64
65 class GenericException
66 {
67 };
68
69 } // namespace libepubgen
70
71 #endif // INCLUDED_LIBEPUBGEN_UTILS_H
72
73 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
libepubgen
Definition: EPUBBinarySink.cpp:12
libepubgen::EPUBGENDummyDeleter
Definition: libepubgen_utils.h:54
libepubgen::RVNGInputStreamPtr_t
std::shared_ptr< librevenge::RVNGInputStream > RVNGInputStreamPtr_t
Definition: libepubgen_utils.h:52
libepubgen::make_unique
std::unique_ptr< T > make_unique(Args &&... args)
Definition: libepubgen_utils.h:60
libepubgen::EPUBGENDummyDeleter::operator()
void operator()(void *)
Definition: libepubgen_utils.h:56
EPUBGEN_ATTRIBUTE_PRINTF
#define EPUBGEN_ATTRIBUTE_PRINTF(fmt, arg)
Definition: libepubgen_utils.h:26
libepubgen::GenericException
Definition: libepubgen_utils.h:65