NuriaProject Framework  0.1
The NuriaProject Framework
All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Modules
core_global.hpp
1 /* Copyright (c) 2014-2015, The Nuria Project
2  * The NuriaProject Framework is free software: you can redistribute it and/or
3  * modify it under the terms of the GNU Lesser General Public License as
4  * published by the Free Software Foundation, either version 3 of the License,
5  * or (at your option) any later version.
6  *
7  * The NuriaProject Framework is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU Lesser General Public License for more details.
11  *
12  * You should have received a copy of the GNU Lesser General Public License
13  * along with The NuriaProject Framework.
14  * If not, see <http://www.gnu.org/licenses/>.
15  */
16 
17 #ifndef NURIA_CORE_GLOBAL_HPP
18 #define NURIA_CORE_GLOBAL_HPP
19 
20 #include <qglobal.h>
21 
22 // Version info
23 #define NURIA_VERSION 0x000100
24 #define NURIA_VERSION_STR "0.1.0"
25 
26 // Tria annotations.
27 // See Nuria::MetaObject for information.
28 #ifdef TRIA_RUN
29 // Clang parses attributes in reversed order
30 #define NURIA_ANNOTATE(name, ...) \
31  __attribute__((annotate("nuria_annotate:" QT_STRINGIFY(#name) "=" #__VA_ARGS__)))
32 #define NURIA_INTROSPECT __attribute__((annotate("nuria_introspect")))
33 #define NURIA_SKIP __attribute__((annotate("nuria_skip")))
34 #define NURIA_READ(field) __attribute__((annotate("nuria_read:" #field)))
35 #define NURIA_WRITE(field) __attribute__((annotate("nuria_write:" #field)))
36 #define NURIA_REQUIRE(...) __attribute__((annotate("nuria_require:" #__VA_ARGS__)))
37 #else
38 #define NURIA_ANNOTATE(name, ...)
39 #define NURIA_INTROSPECT
40 #define NURIA_SKIP
41 #define NURIA_READ(field)
42 #define NURIA_WRITE(field)
43 #define NURIA_REQUIRE(...)
44 #endif
45 
46 //
47 #if defined(NuriaCore_EXPORTS)
48 # define NURIA_CORE_EXPORT Q_DECL_EXPORT
49 #else
50 # define NURIA_CORE_EXPORT Q_DECL_IMPORT
51 #endif
52 
53 #endif // NURIA_CORE_GLOBAL_HPP