Derive-C
Loading...
Searching...
No Matches
eq.h
Go to the documentation of this file.
1#pragma once
2
3#include <stdbool.h>
4
8
9#define DC_TRAIT_EQABLE(SELF) DC_REQUIRE_METHOD(bool, SELF, eq, (SELF const*, SELF const*));
10
11#define DC_MEM_EQ(SELF_1, SELF_2) (*(SELF_1) == *(SELF_2))
12
13#define _DC_DERIVE_EQ_MEMBER(MEMBER_TYPE, MEMBER_NAME) \
14 &&NS(MEMBER_TYPE, eq)(&self_1->MEMBER_NAME, &self_2->MEMBER_NAME)
15
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 }
20
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; }
23
#define _DC_DERIVE_STD_EQ(TYPE,...)
Definition eq.h:21
#define DC_STD_REFLECT(F,...)
Definition reflect.h:11