Derive-C
Loading...
Searching...
No Matches
eq.h File Reference
#include <stdbool.h>
#include <derive-c/core/namespace.h>
#include <derive-c/core/require.h>
#include <derive-c/core/std/reflect.h>

Go to the source code of this file.

Macros

#define DC_TRAIT_EQABLE(SELF)
#define DC_MEM_EQ(SELF_1, SELF_2)
#define _DC_DERIVE_EQ_MEMBER(MEMBER_TYPE, MEMBER_NAME)
#define DC_DERIVE_EQ(TYPE)
#define _DC_DERIVE_STD_EQ(TYPE, ...)

Macro Definition Documentation

◆ _DC_DERIVE_EQ_MEMBER

#define _DC_DERIVE_EQ_MEMBER ( MEMBER_TYPE,
MEMBER_NAME )
Value:
&&NS(MEMBER_TYPE, eq)(&self_1->MEMBER_NAME, &self_2->MEMBER_NAME)
#define NS(pre, post)
Definition namespace.h:4

Definition at line 13 of file eq.h.

13#define _DC_DERIVE_EQ_MEMBER(MEMBER_TYPE, MEMBER_NAME) \
14 &&NS(MEMBER_TYPE, eq)(&self_1->MEMBER_NAME, &self_2->MEMBER_NAME)

◆ _DC_DERIVE_STD_EQ

#define _DC_DERIVE_STD_EQ ( TYPE,
... )
Value:
static bool NS(TYPE, eq)(TYPE const* self_1, TYPE const* self_2) { return *self_1 == *self_2; }

Definition at line 21 of file eq.h.

21#define _DC_DERIVE_STD_EQ(TYPE, ...) \
22 static bool NS(TYPE, eq)(TYPE const* self_1, TYPE const* self_2) { return *self_1 == *self_2; }

◆ DC_DERIVE_EQ

#define DC_DERIVE_EQ ( TYPE)
Value:
static bool NS(TYPE, eq)(TYPE const* self_1, TYPE const* self_2) { \
return true NS(TYPE, REFLECT)(_DC_DERIVE_EQ_MEMBER); \
}
#define _DC_DERIVE_EQ_MEMBER(MEMBER_TYPE, MEMBER_NAME)
Definition eq.h:13

Definition at line 16 of file eq.h.

16#define DC_DERIVE_EQ(TYPE) \
17 static bool NS(TYPE, eq)(TYPE const* self_1, TYPE const* self_2) { \
18 return true NS(TYPE, REFLECT)(_DC_DERIVE_EQ_MEMBER); \
19 }

◆ DC_MEM_EQ

#define DC_MEM_EQ ( SELF_1,
SELF_2 )
Value:
(*(SELF_1) == *(SELF_2))

Definition at line 11 of file eq.h.

◆ DC_TRAIT_EQABLE

#define DC_TRAIT_EQABLE ( SELF)
Value:
DC_REQUIRE_METHOD(bool, SELF, eq, (SELF const*, SELF const*));
#define DC_REQUIRE_METHOD(ret, obj, name, args)
Definition require.h:17
#define SELF
Definition def.h:52

Definition at line 9 of file eq.h.