expose id getters

Signed-off-by: Folling <mail@folling.io>
This commit is contained in:
folling 2024-02-12 12:06:22 +01:00 committed by Folling
parent d43dbe9b50
commit 9fe8cbba40
Signed by: folling
SSH key fingerprint: SHA256:S9qEx5WCFFLK49tE/LKnKuJYM5sw+++Dn6qJbbyxnCY
7 changed files with 55 additions and 0 deletions

View file

@ -4,6 +4,7 @@
/// \author Folling <folling@ikarus.world> /// \author Folling <folling@ikarus.world>
#include <ikarus/errors.h> #include <ikarus/errors.h>
#include <ikarus/id.h>
#include <ikarus/macros.h> #include <ikarus/macros.h>
#include <ikarus/stdtypes.h> #include <ikarus/stdtypes.h>
@ -38,6 +39,14 @@ IKA_API IkarusBlueprint * ikarus_blueprint_create(struct IkarusProject * project
/// \remark The blueprint must not be accessed after deletion. /// \remark The blueprint must not be accessed after deletion.
IKA_API void ikarus_blueprint_delete(IkarusBlueprint * blueprint, IkarusErrorData * error_out); IKA_API void ikarus_blueprint_delete(IkarusBlueprint * blueprint, IkarusErrorData * error_out);
/// \brief Gets the ID of a blueprint.
/// \param blueprint The blueprint to get the ID of.
/// \pre \li Must not be null.
/// \pre \li Must exist.
/// \param error_out \see errors.h
/// \return The ID of the blueprint or 0 if an error occurs.
IKA_API IkarusId ikarus_blueprint_get_id(IkarusBlueprint const * blueprint, IkarusErrorData * error_out);
/// \brief Gets the project a blueprint is part of. /// \brief Gets the project a blueprint is part of.
/// \param blueprint The blueprint to get the project of. /// \param blueprint The blueprint to get the project of.
/// \pre \li Must not be null. /// \pre \li Must not be null.

View file

@ -1,6 +1,7 @@
#pragma once #pragma once
#include <ikarus/errors.h> #include <ikarus/errors.h>
#include <ikarus/id.h>
#include <ikarus/macros.h> #include <ikarus/macros.h>
#include <ikarus/stdtypes.h> #include <ikarus/stdtypes.h>
@ -54,6 +55,14 @@ IKA_API IkarusEntity * ikarus_entity_create(struct IkarusProject * project, char
/// \remark The entity must not be accessed after deletion. /// \remark The entity must not be accessed after deletion.
IKA_API void ikarus_entity_delete(IkarusEntity * entity, IkarusErrorData * error_out); IKA_API void ikarus_entity_delete(IkarusEntity * entity, IkarusErrorData * error_out);
/// \brief Gets the ID of an entity.
/// \param entity The entity to get the ID of.
/// \pre \li Must not be null.
/// \pre \li Must exist.
/// \param error_out \see errors.h
/// \return The ID of the entity or 0 if an error occurs.
IKA_API IkarusId ikarus_entity_get_id(IkarusEntity const * entity, IkarusErrorData * error_out);
/// \brief Gets the project an entity is part of. /// \brief Gets the project an entity is part of.
/// \param entity The entity to get the project of. /// \param entity The entity to get the project of.
/// \pre \li Must not be null. /// \pre \li Must not be null.

View file

@ -4,6 +4,7 @@
/// \author Folling <folling@ikarus.world> /// \author Folling <folling@ikarus.world>
#include <ikarus/errors.h> #include <ikarus/errors.h>
#include <ikarus/id.h>
#include <ikarus/macros.h> #include <ikarus/macros.h>
#include <ikarus/objects/properties/property_type.h> #include <ikarus/objects/properties/property_type.h>
#include <ikarus/stdtypes.h> #include <ikarus/stdtypes.h>
@ -64,6 +65,22 @@ struct IkarusProperty;
/// \remark The property must not be accessed after deletion. /// \remark The property must not be accessed after deletion.
IKA_API void ikarus_property_delete(IkarusProperty * property, IkarusErrorData * error_out); IKA_API void ikarus_property_delete(IkarusProperty * property, IkarusErrorData * error_out);
/// \brief Gets the ID of a property.
/// \param property The property to get the ID of.
/// \pre \li Must not be null.
/// \pre \li Must exist.
/// \param error_out \see errors.h
/// \return The ID of the property or 0 if an error occurs.
IKA_API IkarusId ikarus_property_get_id(IkarusProperty const * property, IkarusErrorData * error_out);
/// \brief Gets the project of a property.
/// \param property The property to get the project of.
/// \pre \li Must not be null.
/// \pre \li Must exist.
/// \param error_out \see errors.h
/// \return The project of the property or null if an error occurs.
IKA_API struct IkarusProject * ikarus_property_get_project(IkarusProperty const * property, IkarusErrorData * error_out);
/// \brief Gets the type info of a property. /// \brief Gets the type info of a property.
/// \param property The property to get the type info of. /// \param property The property to get the type info of.
/// \pre \li Must not be null. /// \pre \li Must not be null.

View file

@ -49,6 +49,10 @@ void ikarus_blueprint_delete(IkarusBlueprint * blueprint, IkarusErrorData * erro
blueprint->project->uncache(blueprint); blueprint->project->uncache(blueprint);
} }
IkarusId ikarus_blueprint_get_id(IkarusBlueprint const * blueprint, IkarusErrorData * error_out) {
return ikarus::util::object_get_id(blueprint, error_out);
}
IkarusProject * ikarus_blueprint_get_project(IkarusBlueprint const * blueprint, IkarusErrorData * error_out) { IkarusProject * ikarus_blueprint_get_project(IkarusBlueprint const * blueprint, IkarusErrorData * error_out) {
return ikarus::util::object_get_project(blueprint, error_out); return ikarus::util::object_get_project(blueprint, error_out);
} }

View file

@ -45,6 +45,10 @@ void ikarus_entity_delete(IkarusEntity * entity, IkarusErrorData * error_out) {
entity->project->uncache(entity); entity->project->uncache(entity);
} }
IkarusId ikarus_entity_get_id(IkarusEntity const * entity, IkarusErrorData * error_out) {
return ikarus::util::object_get_id(entity, error_out);
}
IkarusProject * ikarus_entity_get_project(IkarusEntity const * entity, IkarusErrorData * error_out) { IkarusProject * ikarus_entity_get_project(IkarusEntity const * entity, IkarusErrorData * error_out) {
return ikarus::util::object_get_project(entity, error_out); return ikarus::util::object_get_project(entity, error_out);
} }

View file

@ -28,6 +28,10 @@ IKA_API void ikarus_property_delete(IkarusProperty * property, IkarusErrorData *
property->project->uncache(property); property->project->uncache(property);
} }
IkarusId ikarus_property_get_id(IkarusProperty const * property, IkarusErrorData * error_out) {
return ikarus::util::object_get_id(property, error_out);
}
IkarusProject * ikarus_property_get_project(IkarusProperty const * property, IkarusErrorData * error_out) { IkarusProject * ikarus_property_get_project(IkarusProperty const * property, IkarusErrorData * error_out) {
return ikarus::util::object_get_project(property, error_out); return ikarus::util::object_get_project(property, error_out);
} }

View file

@ -16,6 +16,14 @@
namespace ikarus::util { namespace ikarus::util {
template<typename O>
[[nodiscard]] IkarusId object_get_id(O const * object, IkarusErrorData * error_out) {
IKARUS_FAIL_IF_NULL(object, 0);
IKARUS_FAIL_IF_OBJECT_MISSING(object, 0);
return object->id;
}
template<typename O> template<typename O>
[[nodiscard]] IkarusProject * object_get_project(O const * object, IkarusErrorData * error_out) { [[nodiscard]] IkarusProject * object_get_project(O const * object, IkarusErrorData * error_out) {
IKARUS_FAIL_IF_NULL(object, nullptr); IKARUS_FAIL_IF_NULL(object, nullptr);