finalise interface & documentation

Signed-off-by: Folling <mail@folling.io>
This commit is contained in:
folling 2023-11-06 13:14:39 +01:00 committed by Folling
parent c5157bd849
commit 52580a4382
Signed by: folling
SSH key fingerprint: SHA256:S9qEx5WCFFLK49tE/LKnKuJYM5sw+++Dn6qJbbyxnCY
56 changed files with 2074 additions and 780 deletions

View file

@ -4,28 +4,28 @@
#include <ikarus/objects/object_type.h>
IkarusId ikarus_id_from_data(int64_t data) {
return IkarusId{.data = data};
uint64_t const IKARUS_ID_OBJECT_TYPE_BITS = 8;
uint64_t const IKARUS_ID_OBJECT_RANDOM_BITS = sizeof(IkarusId) - IKARUS_ID_OBJECT_TYPE_BITS;
auto ikarus_id_get_object_type(IkarusId id) -> IkarusObjectType {
return static_cast<IkarusObjectType>(id >> IKARUS_ID_OBJECT_RANDOM_BITS);
}
IkarusObjectType ikarus_id_get_object_type(IkarusId id) {
return static_cast<IkarusObjectType>(id.data >> 56);
auto ikarus_id_is_equal(IkarusId left, IkarusId right) -> bool {
return left == right;
}
bool ikarus_id_is_equal(IkarusId left, IkarusId right) {
return left.data == right.data;
}
bool ikarus_id_is_none(IkarusId id) {
auto ikarus_id_is_none(IkarusId id) -> bool {
return ikarus_id_is_equal(id, IKARUS_ID_NONE);
}
bool ikarus_id_is_unspecified(IkarusId id) {
auto ikarus_id_is_unspecified(IkarusId id) -> bool {
return ikarus_id_is_equal(id, IKARUS_ID_UNSPECIFIED);
}
TEST_CASE("id_object_type", "[id]") {
auto id = ikarus_id_from_data(static_cast<uint64_t>(IkarusObjectType_Blueprint) << 56);
// NOLINTNEXTLINE(readability-magic-numbers)
auto id = static_cast<uint64_t>(IkarusObjectType_Blueprint) << IKARUS_ID_OBJECT_RANDOM_BITS;
REQUIRE(ikarus_id_get_object_type(id) == IkarusObjectType_Blueprint);
REQUIRE(!ikarus_id_is_none(id) == IkarusObjectType_Blueprint);
@ -33,9 +33,9 @@ TEST_CASE("id_object_type", "[id]") {
}
TEST_CASE("id_equal", "[id]") {
auto id = ikarus_id_from_data(static_cast<uint64_t>(IkarusObjectType_Blueprint) << 56);
auto id = static_cast<uint64_t>(IkarusObjectType_Blueprint) << IKARUS_ID_OBJECT_RANDOM_BITS;
auto copy = id;
auto third = ikarus_id_from_data(static_cast<uint64_t>(IkarusObjectType_Property) << 56);
auto third = static_cast<uint64_t>(IkarusObjectType_Property) << IKARUS_ID_OBJECT_RANDOM_BITS;
REQUIRE(ikarus_id_is_equal(id, copy));
REQUIRE(!ikarus_id_is_equal(id, third));