Use modern construct 'using' instead of typedef.
[platform/core/uifw/dali-core.git] / dali / public-api / object / property-map.h
index aa7498d..259aaae 100644 (file)
@@ -1,8 +1,8 @@
-#ifndef __DALI_PROPERTY_MAP_H__
-#define __DALI_PROPERTY_MAP_H__
+#ifndef DALI_PROPERTY_MAP_H
+#define DALI_PROPERTY_MAP_H
 
 /*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2019 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.
@@ -21,6 +21,7 @@
 // EXTERNAL INCLUDES
 #include <string>
 #include <sstream>
+#include <initializer_list>
 
 // INTERNAL INCLUDES
 #include <dali/public-api/common/dali-common.h>
@@ -35,18 +36,17 @@ namespace Dali
  * @{
  */
 
-typedef std::pair< Property::Key, Property::Value > KeyValuePair;
-typedef std::pair<std::string, Property::Value> StringValuePair;
+using KeyValuePair    = std::pair<Property::Key, Property::Value>;
+using StringValuePair = std::pair<std::string, Property::Value>;
 
 /**
  * @brief A Map of property values, the key type could be String or Property::Index.
  * @SINCE_1_0.0
  */
-class DALI_IMPORT_API Property::Map
+class DALI_CORE_API Property::Map
 {
 public:
-
-  typedef std::size_t SizeType;
+  using SizeType = std::size_t;
 
   /**
    * @brief Default constructor.
@@ -55,7 +55,15 @@ public:
   Map();
 
   /**
-   * @brief Copy Constructor.
+   * @brief Constructor from initializer_list.
+   *
+   * @SINCE_1_4.17
+   * @param[in] values An initializer_list of pairs of index and value.
+   */
+  Map( const std::initializer_list< KeyValuePair >& values );
+
+  /**
+   * @brief Copy constructor.
    *
    * @SINCE_1_0.0
    * @param[in] other The Map to copy from
@@ -63,6 +71,15 @@ public:
   Map( const Map& other );
 
   /**
+   * @brief Move constructor.
+   *
+   * @SINCE_1_4.17
+   * @param[in] other The Map to move from
+   * @note After the @a other array is used, it becomes invalid and is no longer usable.
+   */
+  Map( Map&& other );
+
+  /**
    * @brief Non-virtual destructor.
    * @SINCE_1_0.0
    */
@@ -350,7 +367,7 @@ public:
   Value& operator[]( Property::Index key );
 
   /**
-   * @brief Assignment Operator.
+   * @brief Assignment operator.
    *
    * @SINCE_1_0.0
    * @param[in] other The map to copy from
@@ -360,10 +377,22 @@ public:
   Map& operator=( const Map& other );
 
   /**
+   * @brief Move assignment operator.
+   *
+   * @SINCE_1_4.17
+   * @param[in] other The map to move from
+   *
+   * @return The moved map
+   *
+   * @note The other array is an r-value so becomes invalid and is no longer usable.
+   */
+  Map& operator=( Map&& other );
+
+  /**
    * @brief Output to stream.
    * @SINCE_1_1.28
    */
-  friend std::ostream& operator<<( std::ostream& stream, const Property::Map& map );
+  friend DALI_CORE_API std::ostream& operator<<( std::ostream& stream, const Property::Map& map );
 
 private:
   struct DALI_INTERNAL Impl; ///< Private data
@@ -378,11 +407,11 @@ private:
  * @param[in] map The map to insert
  * @return The output stream operator
  */
-DALI_IMPORT_API std::ostream& operator<<( std::ostream& stream, const Property::Map& map );
+DALI_CORE_API std::ostream& operator<<( std::ostream& stream, const Property::Map& map );
 
 /**
  * @}
  */
 } // namespace Dali
 
-#endif // __DALI_PROPERTY_MAP_H__
+#endif // DALI_PROPERTY_MAP_H