Purge underscored header file barriers
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / devel-api / controls / control-wrapper.h
1 #ifndef DALI_TOOLKIT_CONTROL_WRAPPER_H
2 #define DALI_TOOLKIT_CONTROL_WRAPPER_H
3
4 /*
5  * Copyright (c) 2018 Samsung Electronics Co., Ltd.
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  */
20
21 // INTERNAL INCLUDES
22 #include <dali-toolkit/public-api/controls/control.h>
23
24 namespace Dali
25 {
26
27 namespace Toolkit
28 {
29
30 namespace Internal DALI_INTERNAL
31 {
32 class ControlWrapper;
33 }
34
35 /**
36  * @brief ControlWrapper is a base class for custom UI controls developed in managed code (i.e. C#.NET).
37  *
38  * The implementation of the ControlWrapper must be supplied; see Internal::ControlWrapper for more details.
39  */
40 class DALI_TOOLKIT_API ControlWrapper : public Control
41 {
42
43 public:
44
45   /**
46    * @brief Create a new instance of a ControlWrapper.
47    *
48    * @param[in] typeName The name of the type that is registered with this control
49    * @param[in] implementation The implementation of this control
50    *
51    * @return A handle to a new ControlWrapper.
52    */
53   static ControlWrapper New( const std::string& typeName, Internal::ControlWrapper& implementation );
54
55   /**
56    * @brief Creates an empty ControlWrapper handle.
57    */
58   ControlWrapper();
59
60   /**
61    * @brief Destructor
62    *
63    * This is non-virtual since derived Handle types must not contain data or virtual methods.
64    */
65   ~ControlWrapper();
66
67   /**
68    * @brief Copy constructor.
69    *
70    * Creates another handle that points to the same real object
71    * @param[in] handle Handle to the copied object
72    */
73   ControlWrapper( const ControlWrapper& handle );
74
75   /**
76    * @brief Assignment operator.
77    *
78    * Changes this handle to point to another real object
79    * @param[in] handle Handle to the object
80    * @return A reference to this
81    */
82   ControlWrapper& operator=( const ControlWrapper& handle );
83
84   /**
85    * @brief Downcast an Object handle to ControlWrapper.
86    *
87    * If handle points to a ControlWrapper the
88    * downcast produces valid handle. If not the returned handle is left uninitialized.
89    * @param[in] handle Handle to an object
90    * @return handle to a ControlWrapper or an uninitialized handle
91    */
92   static ControlWrapper DownCast( BaseHandle handle );
93
94 public: // Not intended for application developers
95
96   /**
97    * @brief Creates a handle using the Toolkit::Internal implementation.
98    *
99    * @param[in]  implementation  The Control implementation.
100    */
101   ControlWrapper( Internal::ControlWrapper& implementation );
102
103   /**
104    * @brief Allows the creation of this Control from an Internal::CustomActor pointer.
105    *
106    * @param[in]  internal  A pointer to the internal CustomActor.
107    */
108   explicit ControlWrapper( Dali::Internal::CustomActor* internal );
109 };
110
111 } // namespace Toolkit
112
113 } // namespace Dali
114
115 #endif // DALI_TOOLKIT_CONTROL_WRAPPER_H