Version 5.4.3.2, tag libreoffice-5.4.3.2
[LibreOffice.git] / include / cppu / macros.hxx
blob916fc8b4f0dbee138dae86c8ab17b969f3577954
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
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/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
19 #ifndef INCLUDED_CPPU_MACROS_HXX
20 #define INCLUDED_CPPU_MACROS_HXX
22 #include <sal/types.h>
24 /** Namespace name for compiler/ platform, e.g. gcc3, msci
26 @deprecated implementation detail, not to be used by client code
28 #define CPPU_CURRENT_NAMESPACE CPPU_ENV
30 /// @cond INTERNAL
32 /** Patching the GCC 3 incompatible alignment change for Linux.
34 This macro is appended by cppumaker to every first member of a struct, if
35 the struct inherits from a base struct and the first member is neither
36 double nor sal_[u]Int64. (The double/sal_[u]Int64 restriction is due to a
37 bug in GCC prior to version 3.3, which would cause __alignof__ of such a
38 struct to become 8 instead of 4 if CPPU_GCC3_ALIGN were added to its first
39 member.)
41 #if defined(__GNUC__)
42 #define CPPU_GCC3_ALIGN( base_struct ) __attribute__ ((aligned (__alignof__ (base_struct))))
43 #else
44 #define CPPU_GCC3_ALIGN( base_struct )
45 #endif
47 /**
48 Exporting the symbols necessary for exception handling on GCC.
50 These macros are used in the headers generated by cppumaker for UNO exception
51 types, to ensure that exception handling does not fail on GCC.
53 #define CPPU_GCC_DLLPUBLIC_EXPORT SAL_EXCEPTION_DLLPUBLIC_EXPORT
54 #define CPPU_GCC_DLLPRIVATE SAL_EXCEPTION_DLLPRIVATE
56 /// @endcond
58 #endif // INCLUDED_CPPU_MACROS_HXX
60 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */