}
/**
- * @brief Virtual destructor.
+ * @brief Destructor
+ *
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
+ */
+ ~Light();
+
+ /**
+ * @brief This copy constructor is required for (smart) pointer semantics.
+ *
+ * @param [in] handle A reference to the copied handle
*/
- virtual ~Light();
+ Light(const Light& handle);
/**
- * @copydoc Dali::BaseHandle::operator=
+ * @brief This assignment operator is required for (smart) pointer semantics.
+ *
+ * @param [in] rhs A reference to the copied handle
+ * @return A reference to this
+ */
+ Light& operator=(const Light& rhs);
+
+ /**
+ * @brief This method is defined to allow assignment of the NULL value,
+ * and will throw an exception if passed any other value.
+ *
+ * Assigning to NULL is an alias for Reset().
+ * @param [in] rhs A NULL pointer
+ * @return A reference to this handle
*/
- using BaseHandle::operator=;
+ Light& operator=(BaseHandle::NullType* rhs);
/**
* @brief Set the light's name.