/*
- * Copyright (c) 2022 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2024 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
{
bool done = false;
-#ifdef USE_INDEXED_MAP_CONTAINER_AT_TYPE_INFO
auto iter = mActions.Get(ConstString(actionName));
-#else
- ActionContainer::iterator iter = find_if(mActions.begin(), mActions.end(), PairFinder<std::string, ActionPair>(actionName));
-#endif
if(iter != mActions.end())
{
done = (iter->second)(object, actionName, properties);
{
bool connected(false);
-#ifdef USE_INDEXED_MAP_CONTAINER_AT_TYPE_INFO
auto iter = mSignalConnectors.Get(ConstString(signalName));
-#else
- ConnectorContainer::iterator iter = find_if(mSignalConnectors.begin(), mSignalConnectors.end(), PairFinder<std::string, ConnectionPair>(signalName));
-#endif
if(iter != mSignalConnectors.end())
{
connected = (iter->second)(object, connectionTracker, signalName, functor);
if(index < count)
{
-#ifdef USE_INDEXED_MAP_CONTAINER_AT_TYPE_INFO
name = std::string(mActions.GetKeyByIndex(index).GetStringView());
-#else
- name = mActions[index].first;
-#endif
}
else
{
if(index < count)
{
-#ifdef USE_INDEXED_MAP_CONTAINER_AT_TYPE_INFO
name = std::string(mSignalConnectors.GetKeyByIndex(index).GetStringView());
-#else
- name = mSignalConnectors[index].first;
-#endif
}
else
{
std::string_view TypeInfo::GetRegisteredPropertyName(Property::Index index) const
{
-#ifdef USE_INDEXED_MAP_CONTAINER_AT_TYPE_INFO
const auto& iter = mRegisteredProperties.Get(static_cast<std::uint32_t>(index));
-#else
- RegisteredPropertyContainer::const_iterator iter = find_if(mRegisteredProperties.begin(), mRegisteredProperties.end(), PairFinder<Property::Index, RegisteredPropertyPair>(index));
-#endif
if(iter != mRegisteredProperties.end())
{
return iter->second.name.GetStringView();
}
else
{
-#ifdef USE_INDEXED_MAP_CONTAINER_AT_TYPE_INFO
const auto& iter = mRegisteredProperties.Get(static_cast<std::uint32_t>(index));
-#else
- RegisteredPropertyContainer::const_iterator iter = find_if(mRegisteredProperties.begin(), mRegisteredProperties.end(), PairFinder<Property::Index, RegisteredPropertyPair>(index));
-#endif
if(iter != mRegisteredProperties.end())
{
return iter->second.name.GetStringView();
}
else
{
-#ifdef USE_INDEXED_MAP_CONTAINER_AT_TYPE_INFO
if(!mActions.Register(ConstString(actionName), function))
{
DALI_LOG_WARNING("Action already exists in TypeRegistry Type\n", actionName.c_str());
}
-#else
- ActionContainer::iterator iter = std::find_if(mActions.begin(), mActions.end(), PairFinder<std::string, ActionPair>(actionName));
-
- if(iter == mActions.end())
- {
- mActions.push_back(ActionPair(std::move(actionName), function));
- }
- else
- {
- DALI_LOG_WARNING("Action already exists in TypeRegistry Type\n", actionName.c_str());
- }
-#endif
}
}
}
else
{
-#ifdef USE_INDEXED_MAP_CONTAINER_AT_TYPE_INFO
if(!mSignalConnectors.Register(ConstString(signalName), function))
{
DALI_LOG_WARNING("Signal name already exists in TypeRegistry Type for signal connector function\n", signalName.c_str());
}
-#else
- ConnectorContainer::iterator iter = find_if(mSignalConnectors.begin(), mSignalConnectors.end(), PairFinder<std::string, ConnectionPair>(signalName));
-
- if(iter == mSignalConnectors.end())
- {
- mSignalConnectors.push_back(ConnectionPair(std::move(signalName), function));
- }
- else
- {
- DALI_LOG_WARNING("Signal name already exists in TypeRegistry Type for signal connector function\n", signalName.c_str());
- }
-#endif
}
}
}
else
{
-#ifdef USE_INDEXED_MAP_CONTAINER_AT_TYPE_INFO
if(!mRegisteredProperties.Register(static_cast<std::uint32_t>(index), RegisteredProperty(type, setFunc, getFunc, ConstString(name), Property::INVALID_INDEX, Property::INVALID_COMPONENT_INDEX)))
{
DALI_ASSERT_ALWAYS(!"Property index already added to Type");
}
-#else
- RegisteredPropertyContainer::iterator iter = find_if(mRegisteredProperties.begin(), mRegisteredProperties.end(), PairFinder<Property::Index, RegisteredPropertyPair>(index));
- if(iter == mRegisteredProperties.end())
- {
- mRegisteredProperties.push_back(RegisteredPropertyPair(index, RegisteredProperty(type, setFunc, getFunc, ConstString(name), Property::INVALID_INDEX, Property::INVALID_COMPONENT_INDEX)));
- }
- else
- {
- DALI_ASSERT_ALWAYS(!"Property index already added to Type");
- }
-#endif
}
}
}
else
{
-#ifdef USE_INDEXED_MAP_CONTAINER_AT_TYPE_INFO
if(!mRegisteredProperties.Register(static_cast<std::uint32_t>(index), RegisteredProperty(type, setFunc, getFunc, ConstString(name), Property::INVALID_INDEX, Property::INVALID_COMPONENT_INDEX)))
{
DALI_ASSERT_ALWAYS(!"Property index already added to Type");
}
-#else
- RegisteredPropertyContainer::iterator iter = find_if(mRegisteredProperties.begin(), mRegisteredProperties.end(), PairFinder<Property::Index, RegisteredPropertyPair>(index));
- if(iter == mRegisteredProperties.end())
- {
- mRegisteredProperties.push_back(RegisteredPropertyPair(index, RegisteredProperty(type, setFunc, getFunc, ConstString(name), Property::INVALID_INDEX, Property::INVALID_COMPONENT_INDEX)));
- }
- else
- {
- DALI_ASSERT_ALWAYS(!"Property index already added to Type");
- }
-#endif
}
}
void TypeInfo::AddAnimatableProperty(std::string name, Property::Index index, Property::Type type)
{
-#ifdef USE_INDEXED_MAP_CONTAINER_AT_TYPE_INFO
if(!mRegisteredProperties.Register(static_cast<std::uint32_t>(index), RegisteredProperty(type, ConstString(name), Property::INVALID_INDEX, Property::INVALID_COMPONENT_INDEX)))
{
DALI_ASSERT_ALWAYS(!"Property index already added to Type");
}
-#else
- RegisteredPropertyContainer::iterator iter = find_if(mRegisteredProperties.begin(), mRegisteredProperties.end(), PairFinder<Property::Index, RegisteredPropertyPair>(index));
- if(iter == mRegisteredProperties.end())
- {
- mRegisteredProperties.push_back(RegisteredPropertyPair(index, RegisteredProperty(type, ConstString(name), Property::INVALID_INDEX, Property::INVALID_COMPONENT_INDEX)));
- }
- else
- {
- DALI_ASSERT_ALWAYS(!"Property index already added to Type");
- }
-#endif
}
void TypeInfo::AddAnimatableProperty(std::string name, Property::Index index, Property::Value defaultValue)
{
-#ifdef USE_INDEXED_MAP_CONTAINER_AT_TYPE_INFO
if(!mRegisteredProperties.Register(static_cast<std::uint32_t>(index), RegisteredProperty(defaultValue.GetType(), ConstString(name), Property::INVALID_INDEX, Property::INVALID_COMPONENT_INDEX)))
{
DALI_ASSERT_ALWAYS(!"Property index already added to Type");
{
mPropertyDefaultValues.Register(static_cast<std::uint32_t>(index), std::move(defaultValue));
}
-#else
- RegisteredPropertyContainer::iterator iter = find_if(mRegisteredProperties.begin(), mRegisteredProperties.end(), PairFinder<Property::Index, RegisteredPropertyPair>(index));
- if(iter == mRegisteredProperties.end())
- {
- mRegisteredProperties.push_back(RegisteredPropertyPair(index, RegisteredProperty(defaultValue.GetType(), ConstString(name), Property::INVALID_INDEX, Property::INVALID_COMPONENT_INDEX)));
- mPropertyDefaultValues.push_back(PropertyDefaultValuePair(index, std::move(defaultValue)));
- }
- else
- {
- DALI_ASSERT_ALWAYS(!"Property index already added to Type");
- }
-#endif
}
void TypeInfo::AddAnimatablePropertyComponent(std::string name, Property::Index index, Property::Index baseIndex, uint32_t componentIndex)
bool success = false;
-#ifdef USE_INDEXED_MAP_CONTAINER_AT_TYPE_INFO
if(mRegisteredProperties.Get(static_cast<std::uint32_t>(index)) == mRegisteredProperties.end())
{
const auto& iter = find_if(mRegisteredProperties.begin(), mRegisteredProperties.end(), PropertyComponentFinder<RegisteredPropertyPair>(baseIndex, componentIndex));
success = true;
}
}
-#else
- RegisteredPropertyContainer::iterator iter = find_if(mRegisteredProperties.begin(), mRegisteredProperties.end(), PairFinder<Property::Index, RegisteredPropertyPair>(index));
- if(iter == mRegisteredProperties.end())
- {
- iter = find_if(mRegisteredProperties.begin(), mRegisteredProperties.end(), PropertyComponentFinder<RegisteredPropertyPair>(baseIndex, componentIndex));
-
- if(iter == mRegisteredProperties.end())
- {
- mRegisteredProperties.push_back(RegisteredPropertyPair(index, RegisteredProperty(type, ConstString(name), baseIndex, componentIndex)));
- success = true;
- }
- }
-#endif
DALI_ASSERT_ALWAYS(success && "Property component already registered");
}
void TypeInfo::AddChildProperty(std::string name, Property::Index index, Property::Type type)
{
-#ifdef USE_INDEXED_MAP_CONTAINER_AT_TYPE_INFO
if(!mRegisteredChildProperties.Register(static_cast<std::uint32_t>(index), RegisteredProperty(type, ConstString(name), Property::INVALID_INDEX, Property::INVALID_COMPONENT_INDEX)))
-#else
- RegisteredPropertyContainer::iterator iter = find_if(mRegisteredChildProperties.begin(), mRegisteredChildProperties.end(), PairFinder<Property::Index, RegisteredPropertyPair>(index));
- if(iter == mRegisteredChildProperties.end())
- {
- mRegisteredChildProperties.push_back(RegisteredPropertyPair(index, RegisteredProperty(type, ConstString(name), Property::INVALID_INDEX, Property::INVALID_COMPONENT_INDEX)));
- }
- else
-#endif
{
DALI_ASSERT_ALWAYS(!"Property index already added to Type");
}
{
Property::Index basePropertyIndex = Property::INVALID_INDEX;
-#ifdef USE_INDEXED_MAP_CONTAINER_AT_TYPE_INFO
const auto& iter = mRegisteredProperties.Get(static_cast<std::uint32_t>(index));
-#else
- RegisteredPropertyContainer::const_iterator iter = find_if(mRegisteredProperties.begin(), mRegisteredProperties.end(), PairFinder<Property::Index, RegisteredPropertyPair>(index));
-#endif
if(iter != mRegisteredProperties.end())
{
basePropertyIndex = iter->second.basePropertyIndex;
{
int componentIndex = Property::INVALID_COMPONENT_INDEX;
-#ifdef USE_INDEXED_MAP_CONTAINER_AT_TYPE_INFO
const auto& iter = mRegisteredProperties.Get(static_cast<std::uint32_t>(index));
-#else
- RegisteredPropertyContainer::const_iterator iter = find_if(mRegisteredProperties.begin(), mRegisteredProperties.end(), PairFinder<Property::Index, RegisteredPropertyPair>(index));
-#endif
if(iter != mRegisteredProperties.end())
{
componentIndex = iter->second.componentIndex;
std::string_view TypeInfo::GetChildPropertyName(Property::Index index) const
{
-#ifdef USE_INDEXED_MAP_CONTAINER_AT_TYPE_INFO
const auto& iter = mRegisteredChildProperties.Get(static_cast<std::uint32_t>(index));
-#else
- RegisteredPropertyContainer::const_iterator iter = find_if(mRegisteredChildProperties.begin(), mRegisteredChildProperties.end(), PairFinder<Property::Index, RegisteredPropertyPair>(index));
-#endif
if(iter != mRegisteredChildProperties.end())
{
return iter->second.name.GetStringView();
{
Property::Type type(Property::NONE);
-#ifdef USE_INDEXED_MAP_CONTAINER_AT_TYPE_INFO
const auto& iter = mRegisteredChildProperties.Get(static_cast<std::uint32_t>(index));
-#else
- RegisteredPropertyContainer::const_iterator iter = find_if(mRegisteredChildProperties.begin(), mRegisteredChildProperties.end(), PairFinder<Property::Index, RegisteredPropertyPair>(index));
-#endif
if(iter != mRegisteredChildProperties.end())
{
type = iter->second.type;
}
else
{
-#ifdef USE_INDEXED_MAP_CONTAINER_AT_TYPE_INFO
const auto& iter = mRegisteredProperties.Get(static_cast<std::uint32_t>(index));
-#else
- RegisteredPropertyContainer::const_iterator iter = find_if(mRegisteredProperties.begin(), mRegisteredProperties.end(), PairFinder<Property::Index, RegisteredPropertyPair>(index));
-#endif
if(iter != mRegisteredProperties.end())
{
writable = iter->second.setFunc ? true : false;
}
else
{
-#ifdef USE_INDEXED_MAP_CONTAINER_AT_TYPE_INFO
const auto& iter = mRegisteredProperties.Get(static_cast<std::uint32_t>(index));
-#else
- RegisteredPropertyContainer::const_iterator iter = find_if(mRegisteredProperties.begin(), mRegisteredProperties.end(), PairFinder<Property::Index, RegisteredPropertyPair>(index));
-#endif
if(iter != mRegisteredProperties.end())
{
if(iter->second.componentIndex == Property::INVALID_COMPONENT_INDEX)
Property::Value TypeInfo::GetPropertyDefaultValue(Property::Index index) const
{
-#ifdef USE_INDEXED_MAP_CONTAINER_AT_TYPE_INFO
const auto& iter = mPropertyDefaultValues.Get(static_cast<std::uint32_t>(index));
-#else
- PropertyDefaultValueContainer::const_iterator iter = find_if(mPropertyDefaultValues.begin(), mPropertyDefaultValues.end(), PairFinder<Property::Index, PropertyDefaultValuePair>(index));
-#endif
if(iter != mPropertyDefaultValues.end())
{
return iter->second;
void TypeInfo::SetProperty(BaseObject* object, Property::Index index, Property::Value value) const
{
-#ifdef USE_INDEXED_MAP_CONTAINER_AT_TYPE_INFO
const auto& iter = mRegisteredProperties.Get(static_cast<std::uint32_t>(index));
-#else
- RegisteredPropertyContainer::const_iterator iter = find_if(mRegisteredProperties.begin(), mRegisteredProperties.end(), PairFinder<Property::Index, RegisteredPropertyPair>(index));
-#endif
if(iter != mRegisteredProperties.end())
{
if(iter->second.setFunc)
Property::Value TypeInfo::GetProperty(const BaseObject* object, Property::Index index) const
{
-#ifdef USE_INDEXED_MAP_CONTAINER_AT_TYPE_INFO
const auto& iter = mRegisteredProperties.Get(static_cast<std::uint32_t>(index));
-#else
- RegisteredPropertyContainer::const_iterator iter = find_if(mRegisteredProperties.begin(), mRegisteredProperties.end(), PairFinder<Property::Index, RegisteredPropertyPair>(index));
-#endif
if(iter != mRegisteredProperties.end())
{
if(mCSharpType) // using csharp property get which returns a pointer to a Property::Value