Coverage Report

Created: 2025-11-16 06:06

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/glib/glib/gutilsprivate.h
Line
Count
Source
1
/*
2
 * Copyright © 2018 Endless Mobile, Inc.
3
 *
4
 * SPDX-License-Identifier: LGPL-2.1-or-later
5
 *
6
 * This library is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU Lesser General Public
8
 * License as published by the Free Software Foundation; either
9
 * version 2.1 of the License, or (at your option) any later version.
10
 *
11
 * This library is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14
 * Lesser General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU Lesser General Public
17
 * License along with this library; if not, see <http://www.gnu.org/licenses/>.
18
 *
19
 * Author: Philip Withnall <withnall@endlessm.com>
20
 */
21
22
#ifndef __G_UTILS_PRIVATE_H__
23
#define __G_UTILS_PRIVATE_H__
24
25
#include "glibconfig.h"
26
#include "gtypes.h"
27
#include "gtestutils.h"
28
29
#include <math.h>
30
#include <time.h>
31
32
G_BEGIN_DECLS
33
34
void g_set_user_dirs (const gchar *first_dir_type,
35
                      ...) G_GNUC_NULL_TERMINATED;
36
37
/* Returns the smallest power of 2 greater than or equal to n,
38
 * or 0 if such power does not fit in a gsize
39
 */
40
static inline gsize
41
g_nearest_pow (gsize num)
42
8.73M
{
43
8.73M
  gsize n = num - 1;
44
45
8.73M
  g_assert (num > 0 && num <= G_MAXSIZE / 2);
46
47
8.73M
  n |= n >> 1;
48
8.73M
  n |= n >> 2;
49
8.73M
  n |= n >> 4;
50
8.73M
  n |= n >> 8;
51
8.73M
  n |= n >> 16;
52
8.73M
#if GLIB_SIZEOF_SIZE_T == 8
53
8.73M
  n |= n >> 32;
54
8.73M
#endif
55
56
8.73M
  return n + 1;
57
8.73M
}
Unexecuted instantiation: garray.c:g_nearest_pow
Unexecuted instantiation: gdataset.c:g_nearest_pow
Unexecuted instantiation: gdate.c:g_nearest_pow
Unexecuted instantiation: gdatetime.c:g_nearest_pow
Unexecuted instantiation: glib-private.c:g_nearest_pow
Unexecuted instantiation: gmessages.c:g_nearest_pow
Unexecuted instantiation: goption.c:g_nearest_pow
gstring.c:g_nearest_pow
Line
Count
Source
42
8.73M
{
43
8.73M
  gsize n = num - 1;
44
45
8.73M
  g_assert (num > 0 && num <= G_MAXSIZE / 2);
46
47
8.73M
  n |= n >> 1;
48
8.73M
  n |= n >> 2;
49
8.73M
  n |= n >> 4;
50
8.73M
  n |= n >> 8;
51
8.73M
  n |= n >> 16;
52
8.73M
#if GLIB_SIZEOF_SIZE_T == 8
53
8.73M
  n |= n >> 32;
54
8.73M
#endif
55
56
8.73M
  return n + 1;
57
8.73M
}
Unexecuted instantiation: gtestutils.c:g_nearest_pow
Unexecuted instantiation: gutils.c:g_nearest_pow
58
59
void _g_unset_cached_tmp_dir (void);
60
61
gboolean _g_localtime (time_t timet, struct tm *tm);
62
63
gboolean g_set_prgname_once (const gchar *prgname);
64
65
/* Although isnan() is defined as a type-independent macro in C99, mingw32
66
 * doesn’t seem to support that (it defines `isnan (float d)` only). Older
67
 * MSVC toolchains don’t support C99 either. So we provide an internal
68
 * abstraction macro.
69
 *
70
 * This should not be made public; toolchains will soon enough catch up with
71
 * C99, so third party code should just use isnan(). */
72
static inline int
73
g_isnan (double d)
74
0
{
75
#if (defined (_MSC_VER) && (_MSC_VER < 1800)) || defined(__MINGW32__)
76
  return _isnan (d);
77
#else
78
  return isnan (d);
79
0
#endif
80
0
}
Unexecuted instantiation: garray.c:g_isnan
Unexecuted instantiation: gdataset.c:g_isnan
Unexecuted instantiation: gdate.c:g_isnan
Unexecuted instantiation: gdatetime.c:g_isnan
Unexecuted instantiation: glib-private.c:g_isnan
Unexecuted instantiation: gmessages.c:g_isnan
Unexecuted instantiation: goption.c:g_isnan
Unexecuted instantiation: gstring.c:g_isnan
Unexecuted instantiation: gtestutils.c:g_isnan
Unexecuted instantiation: gutils.c:g_isnan
81
82
G_END_DECLS
83
84
#endif /* __G_UTILS_PRIVATE_H__ */