Toggle navigation
Documentation
The friendly Operating System for the Internet of Things
Loading...
Searching...
No Matches
binsearch.h
1
/*
2
* SPDX-FileCopyrightText: 2018 Freie Universität Berlin
3
* SPDX-License-Identifier: LGPL-2.1-only
4
*/
5
6
#pragma once
7
42
43
#include <stdint.h>
44
#include <
errno.h
>
45
46
#ifdef __cplusplus
47
extern
"C"
{
48
#endif
49
53
#define _ENSURE_LVALUE(x) ((void)sizeof(&(x)))
54
59
#define _ARRAY_STRIDE(arr) ((size_t)((const uint8_t *)((arr) + 1) - (const uint8_t *)(arr)))
60
65
#define _ARRAY_MEMBER_OFFS(arr, member) \
66
((size_t)((const uint8_t *)(&((arr)->member)) - (const uint8_t *)(arr)))
67
78
#define BINSEARCH_STR(arr, nmemb, member, str, n) \
79
(_ENSURE_LVALUE(arr), \
80
(binsearch_str((arr), _ARRAY_MEMBER_OFFS(arr, member), _ARRAY_STRIDE(arr), \
81
(nmemb), (str), (n))) \
82
)
83
91
#define BINSEARCH_STR_P(arr, nmemb, member, str, n) \
92
(_ENSURE_LVALUE(arr), \
93
(binsearch_str_p((arr), _ARRAY_MEMBER_OFFS(arr, member), _ARRAY_STRIDE(arr), \
94
(nmemb), (str), (n))) \
95
)
96
116
int
binsearch_str(
const
void
*start,
size_t
offset,
size_t
stride,
size_t
nmemb,
117
const
char
*str,
size_t
n);
118
125
const
void
*binsearch_str_p(
const
void
*start,
size_t
offset,
size_t
stride,
126
size_t
nmemb,
const
char
*str,
size_t
n);
127
128
#ifdef __cplusplus
129
}
130
#endif
131
errno.h
Generated on Sat Oct 3 2026 14:10:59 by
1.13.2