#ifndef BASE_CONTAINER_OF_H #define BASE_CONTAINER_OF_H #include //---------------------------------------------------------------- namespace base { template size_t offsetof__(const M P::*member) { return (size_t) &( reinterpret_cast(0)->*member); } template P *container_of(M *ptr, M const P::*member) { return (P *)((char *)(ptr) - offsetof__(member)); } } //---------------------------------------------------------------- #endif