// This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at https://mozilla.org/MPL/2.0/. #pragma once #include #include "typecheck.h" #define TLSL_CONTAINER_OF(PTR, TYPE, MEMBER) ({ \ TLSL_TYPEOFS_EQ(((TYPE *)NULL)->MEMBER, *(PTR)); \ (TYPE *)((char *)(PTR) - offsetof(TYPE, MEMBER)); \ })