Merge "Fix Dataset for exception case" into tizen_2.1
[platform/framework/native/appfw.git] / src / io / inc / FIo_DataSetEnumeratorImpl.h
1 //
2 // Open Service Platform
3 // Copyright (c) 2013 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        FIo_DataSetEnumeratorImpl.h
20  * @brief       This is the header file for the %_DataSetEnumeratorImpl class.
21  *
22  * This header file contains declarations of the %_DataSetEnumeratorImpl class.
23  */
24
25 #ifndef _FIO_INTERNAL_DATASETENUMERATOR_IMPL_H_
26 #define _FIO_INTERNAL_DATASETENUMERATOR_IMPL_H_
27
28 #include <FBaseObject.h>
29 #include <FBaseString.h>
30 #include <FBaseByteBuffer.h>
31 #include <FBaseDateTime.h>
32 #include <FBaseColLinkedList.h>
33 #include <FIoDataSetEnumerator.h>
34
35 namespace Tizen { namespace Base
36 {
37 class String;
38 class ByteBuffer;
39 class DateTime;
40 }}
41
42 namespace Tizen { namespace Io
43 {
44
45 class _DataSetRow;
46
47 /**
48  * @class   _DataSetEnumeratorImpl
49  * @brief       This class implements the DataSetEnumerator.
50  * @since 2.1
51  *
52  * @see Tizen::Io::DataSetEnumerator
53  */
54 class _DataSetEnumeratorImpl
55         : public Tizen::Base::Object
56 {
57
58 public:
59         /**
60         * This is the default constructor for this class.
61         */
62         _DataSetEnumeratorImpl(void);
63
64         /**
65         * This is the default destructor for this class.
66         */
67         virtual ~_DataSetEnumeratorImpl(void);
68
69         /**
70         * @see          DataSetEnumerator::MoveNext()
71         */
72         result MoveNext(void);
73
74         /**
75         * @see          DataSetEnumerator::MovePrevious()
76         */
77         result MovePrevious(void);
78
79         /**
80         * @see          DataSetEnumerator::MoveFirst()
81         */
82         result MoveFirst(void);
83
84         /**
85         * @see          DataSetEnumerator::MoveLast()
86         */
87         result MoveLast(void);
88
89         /**
90         * @see          DataSetEnumerator::Reset()
91         */
92         result Reset(void);
93
94         /**
95         * @see          DataSetEnumerator::GetIntAt()
96         */
97         result GetIntAt(int columnIndex, int& value) const;
98
99         /**
100         * @see          DataSetEnumerator::GetInt64At()
101         */
102         result GetInt64At(int columnIndex, long long& value) const;
103
104         /**
105         * @see          DataSetEnumerator::GetDoubleAt()
106         */
107         result GetDoubleAt(int columnIndex, double& value) const;
108
109         /**
110         * @see          DataSetEnumerator::GetStringAt()
111         */
112         result GetStringAt(int columnIndex, Tizen::Base::String& value) const;
113
114         /**
115         * @see          DataSetEnumerator::GetBlobAt()
116         */
117         result GetBlobAt(int columnIndex, Tizen::Base::ByteBuffer& value) const;
118
119         /**
120         * @see          DataSetEnumerator::GetBlobAt()
121         */
122         result GetBlobAt(int columnIndex, void* buffer, int size) const;
123
124         /**
125         * @see          DataSetEnumerator::GetDateTimeAt()
126         */
127         result GetDateTimeAt(int columnIndex, Tizen::Base::DateTime& value) const;
128
129         /**
130         * @see          DataSetEnumerator::GetColumnCount()
131         */
132         int GetColumnCount(void) const;
133
134         /**
135         * @see          DataSetEnumerator::GetColumnType()
136         */
137         DbColumnType GetColumnType(int columnIndex) const;
138
139         /**
140         * @see          DataSetEnumerator::GetColumnName()
141         */
142         Tizen::Base::String GetColumnName(int columnIndex) const;
143
144         /**
145         * @see          DataSetEnumerator::GetColumnSize()
146         */
147         int GetColumnSize(int columnIndex) const;
148
149         static _DataSetEnumeratorImpl* GetInstance(DataSetEnumerator& dataSetEnumerator);
150
151         static const _DataSetEnumeratorImpl* GetInstance(const DataSetEnumerator& dataSetEnumerator);
152
153         static DataSetEnumerator* CreateDataSetEnumeratorInstanceN(void);
154
155 private:
156         _DataSetEnumeratorImpl(_DataSetEnumeratorImpl& dataSetEnumeratorImpl);
157
158         _DataSetEnumeratorImpl& operator =(const _DataSetEnumeratorImpl& dataSetEnumeratorImpl);
159
160         Tizen::Base::Collection::LinkedList* __pDataSet;
161         Tizen::Base::Collection::ArrayList* __pColumnList;
162         Tizen::Base::Collection::ArrayList* __pCurrentRow;
163
164         int __columnCount;
165         int __rowCount;
166         int __currentRowIndex;
167
168         int __dataSetDeleted;
169         Tizen::Base::Collection::LinkedList* __pEnumImplList;
170         friend class _DataSetImpl;
171
172 }; // _DataSetEnumeratorImpl
173
174 }} // Tizen::Io
175
176 #endif  //_FIO_INTERNAL_DATASETENUMERATOR_IMPL_H_
177