Merge branch 'devel/master' into devel/graphics
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / helpers / property-helper.cpp
1 /*
2  * Copyright (c) 2021 Samsung Electronics Co., Ltd.
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  *
16  */
17
18 // HEADER
19 #include <dali-toolkit/internal/helpers/property-helper.h>
20
21 // EXTERNAL INCLUDES
22 #include <dali/public-api/object/property-array.h>
23
24 namespace Dali
25 {
26 namespace Toolkit
27 {
28 namespace Internal
29 {
30 bool GetStringFromProperty(const Property::Value& value, std::string& output)
31 {
32   bool extracted = false;
33   if(value.Get(output))
34   {
35     extracted = true;
36   }
37   else
38   {
39     const Property::Array* array = value.GetArray();
40     if(array)
41     {
42       const unsigned int arraySize = array->Size();
43       for(unsigned int i = 0; i < arraySize; ++i)
44       {
45         std::string element;
46         if(array->GetElementAt(i).Get(element))
47         {
48           extracted = true;
49           output += element + '\n';
50         }
51         else
52         {
53           // If property in array is anything other than a string, then it is invalid so break and clear output.
54           output.clear();
55           extracted = false;
56           break;
57         }
58       }
59     }
60   }
61
62   return extracted;
63 }
64
65 } // namespace Internal
66
67 } // namespace Toolkit
68
69 } // namespace Dali