From 5058bb164a0d9f7aaaf06bc3a42114f6b1d1daa5 Mon Sep 17 00:00:00 2001 From: Max Wash Date: Mon, 25 May 2026 17:20:36 +0100 Subject: [PATCH] fx: add interface for comparaing two values --- fx/comparable.c | 15 +++++++++++++++ fx/include/fx/comparable.h | 22 ++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 fx/comparable.c create mode 100644 fx/include/fx/comparable.h diff --git a/fx/comparable.c b/fx/comparable.c new file mode 100644 index 0000000..fb1c21c --- /dev/null +++ b/fx/comparable.c @@ -0,0 +1,15 @@ +#include +#include + +FX_TYPE_CLASS_BEGIN(fx_comparable) + FX_TYPE_VTABLE_INTERFACE_BEGIN(fx_object, FX_TYPE_OBJECT) + FX_INTERFACE_ENTRY(to_string) = NULL; + FX_TYPE_VTABLE_INTERFACE_END(fx_object, FX_TYPE_OBJECT) +FX_TYPE_CLASS_END(fx_comparable) + +FX_TYPE_DEFINITION_BEGIN(fx_comparable) + FX_TYPE_FLAGS(FX_TYPE_F_ABSTRACT); + FX_TYPE_ID(0xb25ab0c6, 0xfddb, 0x447f, 0xa54d, 0x44c4a0ef74a1); + FX_TYPE_NAME("fx.comparable"); + FX_TYPE_CLASS(fx_comparable_class); +FX_TYPE_DEFINITION_END(fx_comparable) diff --git a/fx/include/fx/comparable.h b/fx/include/fx/comparable.h new file mode 100644 index 0000000..c8abdf6 --- /dev/null +++ b/fx/include/fx/comparable.h @@ -0,0 +1,22 @@ +#ifndef FX_COMPARABLE_H_ +#define FX_COMPARABLE_H_ + +#include +#include +#include + +FX_DECLS_BEGIN; + +#define FX_TYPE_COMPARABLE (fx_comparable_get_type()) + +FX_DECLARE_TYPE(fx_comparable); + +FX_TYPE_CLASS_DECLARATION_BEGIN(fx_comparable) + i32 (*c_compare)(const fx_value *a, const fx_value *b); +FX_TYPE_CLASS_DECLARATION_END(fx_comparable) + +FX_API fx_type_id fx_comparable_get_type(void); + +FX_DECLS_END; + +#endif