847969996f00cee13bbfeebbc8ef6efab4c675cd
[platform/framework/native/appfw.git] / inc / FBaseColAllElementsDeleter.h
1 //
2 // Open Service Platform
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 //
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 // http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17
18 /**
19  * @file                FBaseColAllElementsDeleter.h
20  * @brief               This is the header file for the %AllElementsDeleter struct.
21  *
22  * This header file contains the declarations of the %AllElementsDeleter struct.
23  */
24
25 #ifndef _FBASE_COL_ALL_ELEMENTS_DELETER_H_
26 #define _FBASE_COL_ALL_ELEMENTS_DELETER_H_
27
28 namespace Tizen { namespace Base { namespace Collection
29 {
30 /**
31  * @struct      AllElementsDeleter
32  * @brief       This function object provides a resource clean-up function for collection.
33  *
34  * This can be used with unique_ptr as a custom deleter.
35  *
36  * @since 2.0
37  */
38 struct AllElementsDeleter
39 {
40         /**
41          * Deletes every element of the collection and the collection itself.
42          *
43          * @since 2.0
44          *
45          * @param[in] c         The collection to clean up
46          * @remarks             The collection should be destructible and support the RemoveAll(bool) method.
47          *                      IList, IMap, and IMultiMap support this concept.
48          */
49         template< typename Collection >
50         void operator ()(Collection* c)
51         {
52                 c->RemoveAll(true);
53                 delete c;
54         }
55 };
56 }}}
57
58 #endif // _FBASE_COL_ALL_ELEMENTS_DELETER_H_