Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
emscripten-core
GitHub Repository: emscripten-core/emscripten
Path: blob/main/system/lib/llvm-libc/include/llvm-libc-macros/containerof-macro.h
6193 views
1
//===-- Definition of the containerof macro -------------------------------===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
9
#ifndef LLVM_LIBC_MACROS_CONTAINEROF_MACRO_H
10
#define LLVM_LIBC_MACROS_CONTAINEROF_MACRO_H
11
12
#include "offsetof-macro.h"
13
14
#define __containerof(ptr, type, member) \
15
({ \
16
const __typeof(((type *)0)->member) *__ptr = (ptr); \
17
(type *)(void *)((const char *)__ptr - offsetof(type, member)); \
18
})
19
20
#endif // LLVM_LIBC_MACROS_CONTAINEROF_MACRO_H
21
22