2 * Copyright (c) 2021 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #include "dali-scene-loader/public-api/customization.h"
18 #include "dali/devel-api/common/map-wrapper.h"
24 struct Customization::Map::Impl
26 std::map<Tag, Customization> mCustomizations;
29 Customization::Map::Map()
34 Customization::Map::~Map() = default;
36 Customization* Customization::Map::Set(Tag tag, Customization&& customization)
38 auto& result = (mImpl->mCustomizations[tag] = customization);
42 const Customization* Customization::Map::Get(Tag tag) const
44 auto& customizations = mImpl->mCustomizations;
45 auto iFind = customizations.find(tag);
46 if(iFind != customizations.end())
48 return &iFind->second;
53 Customization* Customization::Map::Get(Tag tag)
55 auto& customizations = mImpl->mCustomizations;
56 auto iFind = customizations.find(tag);
57 if(iFind != customizations.end())
59 return &iFind->second;
64 uint32_t Customization::Map::Size() const
66 return mImpl->mCustomizations.size();
69 void Customization::Map::Clear()
71 mImpl->mCustomizations.clear();
74 struct Customization::Choices::Impl
76 std::map<Tag, OptionType> mOptions;
79 Customization::Choices::Choices()
84 Customization::Choices::~Choices() = default;
86 void Customization::Choices::Set(Tag tag, OptionType option)
88 mImpl->mOptions[tag] = option;
91 Customization::OptionType Customization::Choices::Get(Tag tag) const
93 auto& options = mImpl->mOptions;
94 auto iFind = options.find(tag);
95 if(iFind != options.end())
102 uint32_t Customization::Choices::Size() const
104 return mImpl->mOptions.size();
107 void Customization::Choices::Clear()
109 mImpl->mOptions.clear();
112 } // namespace SceneLoader