Update copyright year to 2015 for public api: core
[platform/core/uifw/dali-core.git] / dali / public-api / object / type-registry.h
index 1c5e2d0..97fe8f0 100644 (file)
@@ -2,7 +2,7 @@
 #define __DALI_TYPE_REGISTRY_H__
 
 /*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2015 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.
@@ -26,7 +26,7 @@
 #include <dali/public-api/object/base-handle.h>
 #include <dali/public-api/object/type-info.h>
 
-namespace Dali DALI_IMPORT_API
+namespace Dali
 {
 
 namespace Internal DALI_INTERNAL
@@ -88,7 +88,7 @@ class TypeRegistry;
  *   separated ie 'next-page'. This maintains consistency with the scripted interface.
  *
  */
-class TypeRegistry : public BaseHandle
+class DALI_IMPORT_API TypeRegistry : public BaseHandle
 {
 public:
   typedef std::vector<std::string> NameContainer; ///< Container of type names
@@ -111,9 +111,19 @@ public:
   ~TypeRegistry();
 
   /**
-   * @copydoc Dali::BaseHandle::operator=
+   * @brief This copy constructor is required for (smart) pointer semantics.
+   *
+   * @param [in] handle A reference to the copied handle
+   */
+  TypeRegistry(const TypeRegistry& handle);
+
+  /**
+   * @brief This assignment operator is required for (smart) pointer semantics.
+   *
+   * @param [in] rhs  A reference to the copied handle
+   * @return A reference to this
    */
-  using BaseHandle::operator=;
+  TypeRegistry& operator=(const TypeRegistry& rhs);
 
   /**
    * @brief Get TypeInfo for a registered type.
@@ -151,7 +161,7 @@ public: // Not intended for application developers
 /**
  * @brief Register a type from type info.
  */
-class TypeRegistration
+class DALI_IMPORT_API TypeRegistration
 {
 public:
   /**
@@ -202,7 +212,7 @@ private:
 /**
  * @brief Register a signal connector function to a registered type.
  */
-class SignalConnectorType
+class DALI_IMPORT_API SignalConnectorType
 {
 public:
   /**
@@ -212,13 +222,13 @@ public:
    * @param [in] name The signal name
    * @param [in] func The signal connector function
    */
-  SignalConnectorType( TypeRegistration& typeRegistration, const std::string& name, TypeInfo::SignalConnectorFunctionV2 func );
+  SignalConnectorType( TypeRegistration& typeRegistration, const std::string& name, TypeInfo::SignalConnectorFunction func );
 };
 
 /**
  * @brief Register an action function.
  */
-class TypeAction
+class DALI_IMPORT_API TypeAction
 {
 public:
   /**
@@ -234,7 +244,7 @@ public:
 /**
  * @brief Register a property for the given type.
  */
-class PropertyRegistration
+class DALI_IMPORT_API PropertyRegistration
 {
 public:
 
@@ -269,6 +279,30 @@ public:
                         TypeInfo::SetPropertyFunction setFunc, TypeInfo::GetPropertyFunction getFunc );
 };
 
+/**
+ * @brief Register an animatable property for the given type.
+ */
+class DALI_IMPORT_API AnimatablePropertyRegistration
+{
+public:
+
+  /**
+   * @brief This constructor registers the animatable property with the registered type.
+   *
+   * This constructor is for scene-graph only properties where the
+   * value of the property can be retrieved and set via specified
+   * functions.
+   *
+   * @param [in] registered The TypeRegistration object
+   * @param [in] name The name of the property
+   * @param [in] index The property index. Must be a value between ANIMATABLE_PROPERTY_REGISTRATION_START_INDEX and ANIMATABLE_PROPERTY_REGISTRATION_MAX_INDEX inclusive.
+   * @param [in] type The property value type.
+   *
+   * @pre "registered" must be registered with the TypeRegistry.
+   */
+  AnimatablePropertyRegistration( TypeRegistration& registered, const std::string& name, Property::Index index, Property::Type type );
+};
+
 } // namespace Dali
 
 #endif // header