LibreOffice Module sal (master)
1
Toggle main menu visibility
Main Page
Related Pages
Namespaces
Namespace List
Namespace Members
All
Functions
Enumerations
Enumerator
Classes
Class List
Class Index
Class Members
All
Variables
Files
File List
File Members
All
c
e
g
i
o
r
s
Functions
Typedefs
Macros
i
s
include
sal
macros.h
Go to the documentation of this file.
1
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
/*
3
* This file is part of the LibreOffice 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
* This file incorporates work covered by the following license notice:
10
*
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 .
18
*/
19
20
/*
21
* This file is part of LibreOffice published API.
22
*/
23
24
#ifndef INCLUDED_SAL_MACROS_H
25
#define INCLUDED_SAL_MACROS_H
26
27
#include <stddef.h>
28
29
#ifndef SAL_N_ELEMENTS
30
# if defined(__cplusplus) && ( defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L )
31
/*
32
* Magic template to calculate at compile time the number of elements
33
* in an array. Enforcing that the argument must be an array and not
34
* a pointer, e.g.
35
* char *pFoo="foo";
36
* SAL_N_ELEMENTS(pFoo);
37
* fails while
38
* SAL_N_ELEMENTS("foo");
39
* or
40
* char aFoo[]="foo";
41
* SAL_N_ELEMENTS(aFoo);
42
* pass
43
*
44
* Unfortunately if arr is an array of an anonymous class then we need
45
* C++0x, i.e. see
46
* http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#757
47
*/
48
template
<
typename
T,
size_t
S> char (&sal_n_array_size( T(&)[S] ))[
S
];
49
# define SAL_N_ELEMENTS(arr) (sizeof(sal_n_array_size(arr)))
50
# else
51
# define SAL_N_ELEMENTS(arr) (sizeof (arr) / sizeof ((arr)[0]))
52
# endif
53
#endif
54
55
#ifndef SAL_STRINGIFY
56
# define SAL_STRINGIFY_ARG(x) #x
57
# define SAL_STRINGIFY(x) SAL_STRINGIFY_ARG(x)
58
#endif
59
60
#endif
61
62
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
RTFKeyword::S
@ S
Generated on Sun Jul 30 2023 04:33:47 for LibreOffice Module sal (master) by
1.9.3