diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/container.cpp | 17 | ||||
-rw-r--r-- | src/object_type.cpp | 27 |
2 files changed, 44 insertions, 0 deletions
diff --git a/src/container.cpp b/src/container.cpp new file mode 100644 index 0000000..d906f1e --- /dev/null +++ b/src/container.cpp @@ -0,0 +1,17 @@ +#include "yacppdic/container.hpp" + +#include "yacppdic/detail/internal/wrapper/function_wrapper.hpp" +#include "yacppdic/detail/internal/wrapper/object_wrapper.hpp" + +namespace yacppdic +{ + +void Container::add( + BaseObjectType type, + const WrapperPtr<IGenericWrapper> &wrapper +) noexcept +{ + _bindings.insert({ type, wrapper }); +} + +} // namespace yacppdic diff --git a/src/object_type.cpp b/src/object_type.cpp new file mode 100644 index 0000000..4384e37 --- /dev/null +++ b/src/object_type.cpp @@ -0,0 +1,27 @@ +#include "yacppdic/object_type.hpp" + +BaseObjectType::BaseObjectType(const std::type_info &type_info) noexcept + : _type_info(type_info) +{ +} + +auto BaseObjectType::operator==(const BaseObjectType &object_type) const noexcept -> bool +{ + return hash() == object_type.hash(); +} + +auto BaseObjectType::hash() const noexcept -> std::size_t +{ + return _type_info.hash_code(); +} + +auto BaseObjectType::name() const noexcept -> std::string_view +{ + return { _type_info.name() }; +} + +auto ObjectTypeHasher::operator()(const BaseObjectType &object_type) const noexcept + -> std::size_t +{ + return object_type.hash(); +} |