libqi-api  2.8.7.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
api.hpp
Go to the documentation of this file.
1 #pragma once
2 /*
3  * Copyright (c) 2012 Aldebaran Robotics. All rights reserved.
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the COPYING file.
6  */
7 
13 #ifndef _QI_API_HPP_
14 # define _QI_API_HPP_
15 
16 # include <qi/macro.hpp>
17 # include <qi/config.hpp>
18 
33 # define QI_API QI_LIB_API(qi)
34 
35 /* The `QI_API_TESTONLY` macro exports/imports types when compiling tests only.
36  *
37  * This is for instance useful to unit-test internal components of libqi.
38  *
39  * This macro definition depends on the `QI_WITH_TESTS` macro.
40  *
41  * Example: Making an internal type available for unit testing.
42  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
43  * class QI_API_TESTONLY StuffPrivate
44  * {
45  * ...
46  * };
47  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
48  */
49 #ifdef QI_WITH_TESTS
50 # define QI_API_TESTONLY QI_API
51 #else
52 # define QI_API_TESTONLY
53 #endif
54 
55 # define QI_API_LEVEL 2
56 
57 /* dynamic_casting template partial specializations
58  * between shared objects poses problems with
59  * clang under macos.
60  * This macro is a workaround that seems to work
61  * for now.
62  */
63 #ifdef __clang__
64 # define QITYPE_TEMPLATE_API QI_API
65 #else
66 # define QITYPE_TEMPLATE_API
67 #endif
68 
69 
70 
71 #endif // _QI_API_HPP_
Various macros for qi. (deprecated, export API, disallow copy, ..) <includename>qi/macro.hpp</includename> .