1 // This file is part of Desktop App Toolkit,
2 // a set of libraries for developing nice desktop applications.
3 //
4 // For license and copyright information please follow this link:
5 // https://github.com/desktop-app/legal/blob/master/LEGAL
6 //
7 #pragma once
8 
9 #include "base/build_config.h"
10 #include "base/ordered_set.h"
11 #include "base/unique_function.h"
12 #include "base/functors.h"
13 #include "base/required.h"
14 
15 #include <QtGlobal>
16 #include <QtCore/QByteArray>
17 #include <QtCore/QString>
18 
19 #include <string>
20 #include <exception>
21 #include <memory>
22 #include <ctime>
23 #include <functional>
24 #include <gsl/gsl>
25 
26 namespace func = base::functors;
27 
28 using gsl::not_null;
29 using index_type = gsl::index;
30 using size_type = gsl::index;
31 using base::required;
32 
33 template <typename Signature>
34 using Fn = std::function<Signature>;
35 
36 template <typename Signature>
37 using FnMut = base::unique_function<Signature>;
38 
39 //using uchar = unsigned char; // Qt has uchar
40 using int8 = qint8;
41 using uint8 = quint8;
42 using int16 = qint16;
43 using uint16 = quint16;
44 using int32 = qint32;
45 using uint32 = quint32;
46 using int64 = qint64;
47 using uint64 = quint64;
48 using float32 = float;
49 using float64 = double;
50 
51 using TimeId = int32;
52 
53 [[nodiscard]] inline QByteArray operator""_q(
54 		const char *data,
55 		std::size_t size) {
56 	return QByteArray::fromRawData(data, size);
57 }
58 
59 [[nodiscard]] inline QString operator""_q(
60 		const char16_t *data,
61 		std::size_t size) {
62 	return QString::fromRawData(
63 		reinterpret_cast<const QChar*>(data),
64 		size);
65 }
66