Merge "Update deprecated libprivilege-control API functions." into tizen
[platform/framework/native/appfw.git] / inc / FBaseColICollection.h
1 //
2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
3 //
4 // Licensed under the Apache License, Version 2.0 (the License);
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 // http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 //
16
17 /**
18  * @file                FBaseColICollection.h
19  * @brief               This is the header file for the %ICollection interface.
20  *
21  * This header file contains the declarations of the %ICollection interface.
22  *
23  */
24 #ifndef _FBASE_COL_ICOLLECTION_H_
25 #define _FBASE_COL_ICOLLECTION_H_
26
27 #ifdef ICollection
28 #undef ICollection
29 #endif
30
31 #include <FBaseTypes.h>
32 #include <FBaseColIEnumerator.h>
33 #include <FBaseRtMutex.h>
34
35 #ifdef ICollection
36 #undef ICollection
37 #endif
38
39 namespace Tizen { namespace Base { namespace Collection
40 {
41
42 /**
43  * @interface   ICollection
44  * @brief               This interface represents a collection of objects. @n
45  *                              It defines the size, enumerators, and the synchronization mechanism of a collection.
46  *
47  * @since 2.0
48  *
49  * The %ICollection interface represents a collection of objects. It defines the size, enumerators, and the synchronization mechanism of a collection.
50  *
51  */
52 class _OSP_EXPORT_ ICollection
53 {
54 public:
55         /**
56          * This polymorphic destructor should be overridden if required. @n
57          * This way, the destructors of the derived classes are called when the destructor of this interface is called.
58          *
59          * @since 2.0
60          */
61         virtual ~ICollection(void) {}
62
63         /**
64          * Gets the number of objects currently stored in the collection.
65          *
66          * @since 2.0
67          *
68          * @return              An integer value indicating the number of objects currently stored in the collection
69          */
70         virtual int GetCount(void) const = 0;
71
72         /**
73          * Gets the enumerator of the %ICollection derived class,
74          * or returns @c null if some exception occurs.
75          *
76          * @since 2.0
77          *
78          * @return          A pointer to an enumerator interface of the %ICollection derived class, @n
79          *                              else @c null if an exception occurs
80          * @exception   E_SUCCESS                       The method is successful.
81          * @exception   E_OUT_OF_MEMORY     The memory is insufficient.
82          * @remarks             Use this method to obtain an enumerator (an instance of the IEnumerator derived class)
83          *                              to iterate over a collection (an instance of the %ICollection derived class).
84          * @remarks             The specific error code can be accessed using GetLastResult() method.
85          * @see                 Tizen::Base::Collection::IEnumerator
86          *
87          */
88         virtual IEnumerator* GetEnumeratorN(void) const = 0;
89
90 protected:
91         //
92         // This method is for internal use only. Using this method can cause behavioral, security-related,
93         // and consistency-related issues in the application.
94         // This method is reserved and may change its name at any time without prior notice.
95         //
96         // @since 2.0
97         //
98         virtual void ICollection_Reserved1(void) { }
99
100         //
101         // This method is for internal use only. Using this method can cause behavioral, security-related,
102         // and consistency-related issues in the application.
103         // This method is reserved and may change its name at any time without prior notice.
104         //
105         // @since 2.0
106         //
107         virtual void ICollection_Reserved2(void) { }
108
109 }; // ICollection
110
111 }}} // Tizen::Base::Collection
112
113 #endif // _FBASE_COL_ICOLLECTION_H_