Remove QT3_SUPPORT from qsql, qxml
[profile/ivi/qtbase.git] / src / sql / kernel / qsqlindex.cpp
1 /****************************************************************************
2 **
3 ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
4 ** All rights reserved.
5 ** Contact: Nokia Corporation (qt-info@nokia.com)
6 **
7 ** This file is part of the QtSql module of the Qt Toolkit.
8 **
9 ** $QT_BEGIN_LICENSE:LGPL$
10 ** GNU Lesser General Public License Usage
11 ** This file may be used under the terms of the GNU Lesser General Public
12 ** License version 2.1 as published by the Free Software Foundation and
13 ** appearing in the file LICENSE.LGPL included in the packaging of this
14 ** file. Please review the following information to ensure the GNU Lesser
15 ** General Public License version 2.1 requirements will be met:
16 ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
17 **
18 ** In addition, as a special exception, Nokia gives you certain additional
19 ** rights. These rights are described in the Nokia Qt LGPL Exception
20 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
21 **
22 ** GNU General Public License Usage
23 ** Alternatively, this file may be used under the terms of the GNU General
24 ** Public License version 3.0 as published by the Free Software Foundation
25 ** and appearing in the file LICENSE.GPL included in the packaging of this
26 ** file. Please review the following information to ensure the GNU General
27 ** Public License version 3.0 requirements will be met:
28 ** http://www.gnu.org/copyleft/gpl.html.
29 **
30 ** Other Usage
31 ** Alternatively, this file may be used in accordance with the terms and
32 ** conditions contained in a signed written agreement between you and Nokia.
33 **
34 **
35 **
36 **
37 **
38 ** $QT_END_LICENSE$
39 **
40 ****************************************************************************/
41
42 #include "qsqlindex.h"
43
44 #include "qsqlfield.h"
45 #include "qstringlist.h"
46
47 QT_BEGIN_NAMESPACE
48
49 /*!
50     \class QSqlIndex
51     \brief The QSqlIndex class provides functions to manipulate and
52     describe database indexes.
53
54     \ingroup database
55     \inmodule QtSql
56
57     An \e index refers to a single table or view in a database.
58     Information about the fields that comprise the index can be used
59     to generate SQL statements.
60 */
61
62 /*!
63     Constructs an empty index using the cursor name \a cursorname and
64     index name \a name.
65 */
66
67 QSqlIndex::QSqlIndex(const QString& cursorname, const QString& name)
68     : cursor(cursorname), nm(name)
69 {
70 }
71
72 /*!
73     Constructs a copy of \a other.
74 */
75
76 QSqlIndex::QSqlIndex(const QSqlIndex& other)
77     : QSqlRecord(other), cursor(other.cursor), nm(other.nm), sorts(other.sorts)
78 {
79 }
80
81 /*!
82     Sets the index equal to \a other.
83 */
84
85 QSqlIndex& QSqlIndex::operator=(const QSqlIndex& other)
86 {
87     cursor = other.cursor;
88     nm = other.nm;
89     sorts = other.sorts;
90     QSqlRecord::operator=(other);
91     return *this;
92 }
93
94 /*!
95     Destroys the object and frees any allocated resources.
96 */
97
98 QSqlIndex::~QSqlIndex()
99 {
100
101 }
102
103 /*!
104     Sets the name of the index to \a name.
105 */
106
107 void QSqlIndex::setName(const QString& name)
108 {
109     nm = name;
110 }
111
112 /*!
113     \fn QString QSqlIndex::name() const
114
115     Returns the name of the index.
116 */
117
118 /*!
119     Appends the field \a field to the list of indexed fields. The
120     field is appended with an ascending sort order.
121 */
122
123 void QSqlIndex::append(const QSqlField& field)
124 {
125     append(field, false);
126 }
127
128 /*!
129     \overload
130
131     Appends the field \a field to the list of indexed fields. The
132     field is appended with an ascending sort order, unless \a desc is
133     true.
134 */
135
136 void QSqlIndex::append(const QSqlField& field, bool desc)
137 {
138     sorts.append(desc);
139     QSqlRecord::append(field);
140 }
141
142
143 /*!
144     Returns true if field \a i in the index is sorted in descending
145     order; otherwise returns false.
146 */
147
148 bool QSqlIndex::isDescending(int i) const
149 {
150     if (i >= 0 && i < sorts.size())
151         return sorts[i];
152     return false;
153 }
154
155 /*!
156     If \a desc is true, field \a i is sorted in descending order.
157     Otherwise, field \a i is sorted in ascending order (the default).
158     If the field does not exist, nothing happens.
159 */
160
161 void QSqlIndex::setDescending(int i, bool desc)
162 {
163     if (i >= 0 && i < sorts.size())
164         sorts[i] = desc;
165 }
166
167 /*! \internal
168
169   Creates a string representing the field number \a i using prefix \a
170   prefix. If \a verbose is true, ASC or DESC is included in the field
171   description if the field is sorted in ASCending or DESCending order.
172 */
173
174 QString QSqlIndex::createField(int i, const QString& prefix, bool verbose) const
175 {
176     QString f;
177     if (!prefix.isEmpty())
178         f += prefix + QLatin1Char('.');
179     f += field(i).name();
180     if (verbose)
181         f += QLatin1Char(' ') + QString((isDescending(i)
182                     ? QLatin1String("DESC") : QLatin1String("ASC")));
183     return f;
184 }
185
186 /*!
187     \fn QString QSqlIndex::cursorName() const
188
189     Returns the name of the cursor which the index is associated with.
190 */
191
192
193 /*!
194     Sets the name of the cursor that the index is associated with to
195     \a cursorName.
196 */
197 void QSqlIndex::setCursorName(const QString& cursorName)
198 {
199     cursor = cursorName;
200 }
201
202 QT_END_NAMESPACE