[Tizen][ATSPI] Adds support for enumeration in Property::Value 64/176664/4
authorRadoslaw Cybulski <r.cybulski@partner.samsung.com>
Fri, 20 Apr 2018 11:14:57 +0000 (13:14 +0200)
committerdongsug song <dongsug.song@samsung.com>
Mon, 30 Apr 2018 11:05:25 +0000 (11:05 +0000)
Property::Value can now be initialized with enumeration value. It will
be converted into int. Similarly user can retrieve int value as
enumeration. Note, that no attempt is made to check, if enumeration
types for setting and retrieving match - user can set with one
enumeration type and retrieve with another.

Change-Id: Ib2eca2f1102b257f0f718b326999cc9a8ba42654

dali/public-api/object/property-value.h

index 5f2fa8e..cb8d9a6 100644 (file)
@@ -25,6 +25,8 @@
 #include <dali/public-api/object/property.h>
 #include <dali/public-api/math/rect.h>
 
+#include <type_traits>
+
 namespace Dali
 {
 /**
@@ -186,6 +188,15 @@ public:
   Value( const Extents& extentsValue );
 
   /**
+   * @brief Creates an enumeration property value.
+   *
+   * @SINCE_1_2.62
+   * @param[in] extentsValue A collection of 4 uint16_t values
+   */
+  template <typename T, typename std::enable_if<std::is_enum<typename std::remove_reference<typename std::remove_cv<T>::type>::type>::value>::type* = nullptr>
+  Value(T t) : Value(static_cast<int>(t)) { }
+
+  /**
    * @brief Explicitly sets a type and initialize it.
    *
    * @SINCE_1_0.0
@@ -229,7 +240,7 @@ public:
   /**
    * @brief Retrieves a specific value.
    *
-   * Works on a best-effort approach; if value type is not convertible returns a default value of the type.
+   * Works on a best-effort approach; if value type is different returns a default value of the type.
    *
    * @SINCE_1_0.0
    * @return A value of type T
@@ -243,6 +254,22 @@ public:
   }
 
   /**
+   * @brief Retrieves an enumeration value.
+   *
+   * @SINCE_1_0.0
+   * @param[out] boolValue On return, an enumeration value
+   * @return @c true if the value is successfully retrieved, @c false if the type is different
+   * @pre GetType() is a type convertible to bool.
+   */
+  template <typename T, typename std::enable_if<std::is_enum<typename std::remove_reference<typename std::remove_cv<T>::type>::type>::value>::type* = nullptr>
+  bool Get(T &t) const
+  {
+    int temp = 0;
+    if (!Get(temp)) return false;
+    t = static_cast<T>(temp);
+    return true;
+  }
+  /**
    * @brief Retrieves a boolean value.
    *
    * @SINCE_1_0.0