Toggle navigation
Documentation
The friendly Operating System for the Internet of Things
Loading...
Searching...
No Matches
binsearch.h
1
/*
2
* Copyright (C) 2018 Freie Universität Berlin
3
*
4
* This file is subject to the terms and conditions of the GNU Lesser
5
* General Public License v2.1. See the file LICENSE in the top level
6
* directory for more details.
7
*/
8
9
#pragma once
10
45
46
#include <stdint.h>
47
#include <
errno.h
>
48
49
#ifdef __cplusplus
50
extern
"C"
{
51
#endif
52
56
#define _ENSURE_LVALUE(x) ((void)sizeof(&(x)))
57
62
#define _ARRAY_STRIDE(arr) ((size_t)((const uint8_t *)((arr) + 1) - (const uint8_t *)(arr)))
63
68
#define _ARRAY_MEMBER_OFFS(arr, member) \
69
((size_t)((const uint8_t *)(&((arr)->member)) - (const uint8_t *)(arr)))
70
81
#define BINSEARCH_STR(arr, nmemb, member, str, n) \
82
(_ENSURE_LVALUE(arr), \
83
(binsearch_str((arr), _ARRAY_MEMBER_OFFS(arr, member), _ARRAY_STRIDE(arr), \
84
(nmemb), (str), (n))) \
85
)
86
94
#define BINSEARCH_STR_P(arr, nmemb, member, str, n) \
95
(_ENSURE_LVALUE(arr), \
96
(binsearch_str_p((arr), _ARRAY_MEMBER_OFFS(arr, member), _ARRAY_STRIDE(arr), \
97
(nmemb), (str), (n))) \
98
)
99
119
int
binsearch_str(
const
void
*start,
size_t
offset,
size_t
stride,
size_t
nmemb,
120
const
char
*str,
size_t
n);
121
128
const
void
*binsearch_str_p(
const
void
*start,
size_t
offset,
size_t
stride,
129
size_t
nmemb,
const
char
*str,
size_t
n);
130
131
#ifdef __cplusplus
132
}
133
#endif
134
errno.h
Generated on Thu Nov 6 2025 16:38:23 by
1.13.2