MOS Source Code
Loading...
Searching...
No Matches
types.hpp File Reference
#include <atomic>
#include <cstddef>
#include <mos/type_utils.hpp>
#include <mos/types.h>
#include <stdnoreturn.h>
#include <type_traits>
Include dependency graph for types.hpp:

Go to the source code of this file.

Classes

struct  PtrResultBase
struct  PtrResult< T >
struct  PtrResult< void >
struct  Flags< E >

Macros

#define container_of(ptr, type, member)
#define MOS_ENUM_FLAGS(enum, flags)

Typedefs

typedef std::atomic_size_t atomic_t

Functions

template<class P, class M>
constexpr size_t __offsetof (const M P::*member)
template<class P, class M>
constexpr P * __container_of (M *ptr, const M P::*member)
template<class P, class M>
constexpr const P * __container_of (const M *ptr, const M P::*member)
template<typename TOut, typename TIn>
TOut * cast (TIn *value)
template<typename TOut, typename TIn>
const TOut * cast (const TIn *value)
template<typename E>
requires std::is_enum_v<E>
constexpr Flags< E > operator| (E a, E b)
template<typename E>
requires std::is_enum_v<E>
constexpr void operator~ (E a)=delete
template<typename E>
requires std::is_enum_v<E>
constexpr void operator& (E a, E b)=delete

Macro Definition Documentation

◆ container_of

◆ MOS_ENUM_FLAGS

#define MOS_ENUM_FLAGS ( enum,
flags )
Value:
using flags = Flags<enum>

Definition at line 236 of file types.hpp.

Typedef Documentation

◆ atomic_t

typedef std::atomic_size_t atomic_t

Definition at line 13 of file types.hpp.

Function Documentation

◆ __offsetof()

template<class P, class M>
size_t __offsetof ( const M P::* member)
constexpr

Definition at line 16 of file types.hpp.

Referenced by __container_of(), and __container_of().

◆ __container_of() [1/2]

template<class P, class M>
P * __container_of ( M * ptr,
const M P::* member )
inlineconstexpr

Definition at line 22 of file types.hpp.

Here is the call graph for this function:

◆ __container_of() [2/2]

template<class P, class M>
const P * __container_of ( const M * ptr,
const M P::* member )
inlineconstexpr

Definition at line 28 of file types.hpp.

Here is the call graph for this function:

◆ cast() [1/2]

◆ cast() [2/2]

template<typename TOut, typename TIn>
const TOut * cast ( const TIn * value)
inline

Definition at line 42 of file types.hpp.

◆ operator|()

template<typename E>
requires std::is_enum_v<E>
Flags< E > operator| ( E a,
E b )
constexpr

Definition at line 239 of file types.hpp.

◆ operator~()

template<typename E>
requires std::is_enum_v<E>
void operator~ ( E a)
constexprdelete

◆ operator&()

template<typename E>
requires std::is_enum_v<E>
void operator& ( E a,
E b )
constexprdelete