summaryrefslogtreecommitdiff
path: root/libmisc/include/libmisc/private.h
blob: c5382a7887d585a173efee3f3d4e6a0a005e9971 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/* libmisc/private.h - Utilities to hide struct fields
 *
 * Copyright (C) 2024-2025  Luke T. Shumaker <lukeshu@lukeshu.com>
 * SPDX-License-Identifier: AGPL-3.0-or-later
 */

#ifndef _LIBMISC_PRIVATE_H_
#define _LIBMISC_PRIVATE_H_

#include <libmisc/macro.h>

#define YES LM_SENTINEL()
#define IS_IMPLEMENTATION_FOR(name) LM_IS_SENTINEL(IMPLEMENTATION_FOR_##name)
#define BEGIN_PRIVATE(name) LM_IF(IS_IMPLEMENTATION_FOR(name))()(struct {)
#define END_PRIVATE(name)   LM_IF(IS_IMPLEMENTATION_FOR(name))()(} LM_CAT2_(_HIDDEN_, __COUNTER__);)

#endif /* _LIBMISC_PRIVATE_H_ */