Don't hide errors in QDirIterator
[qt-netbsd.git] / src / script / qscriptstring.cpp
blob23ba729cb537e81ccc20876ee5944f9f563239e1
1 /****************************************************************************
2 **
3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
4 ** Contact: Nokia Corporation (qt-info@nokia.com)
5 **
6 ** This file is part of the QtScript module of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:LGPL$
9 ** No Commercial Usage
10 ** This file contains pre-release code and may not be distributed.
11 ** You may use this file in accordance with the terms and conditions
12 ** contained in the either Technology Preview License Agreement or the
13 ** Beta Release License Agreement.
15 ** GNU Lesser General Public License Usage
16 ** Alternatively, this file may be used under the terms of the GNU Lesser
17 ** General Public License version 2.1 as published by the Free Software
18 ** Foundation and appearing in the file LICENSE.LGPL included in the
19 ** packaging of this file. Please review the following information to
20 ** ensure the GNU Lesser General Public License version 2.1 requirements
21 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
23 ** In addition, as a special exception, Nokia gives you certain
24 ** additional rights. These rights are described in the Nokia Qt LGPL
25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
26 ** package.
28 ** GNU General Public License Usage
29 ** Alternatively, this file may be used under the terms of the GNU
30 ** General Public License version 3.0 as published by the Free Software
31 ** Foundation and appearing in the file LICENSE.GPL included in the
32 ** packaging of this file. Please review the following information to
33 ** ensure the GNU General Public License version 3.0 requirements will be
34 ** met: http://www.gnu.org/copyleft/gpl.html.
36 ** If you are unsure which license is appropriate for your use, please
37 ** contact the sales department at http://www.qtsoftware.com/contact.
38 ** $QT_END_LICENSE$
40 ****************************************************************************/
42 #include "qscriptstring.h"
44 #ifndef QT_NO_SCRIPT
46 #include "qscriptstring_p.h"
47 #include "qscriptnameid_p.h"
48 #include "qscriptvalue_p.h"
49 #include "qscriptengine_p.h"
50 #include "qscriptvalueimpl_p.h"
51 #include "qscriptcontext_p.h"
52 #include "qscriptmember_p.h"
53 #include "qscriptobject_p.h"
55 QT_BEGIN_NAMESPACE
57 /*!
58 \since 4.4
59 \class QScriptString
61 \brief The QScriptString class acts as a handle to "interned" strings in a QScriptEngine.
63 \ingroup script
64 \mainclass
66 QScriptString can be used to achieve faster (repeated)
67 property getting/setting, and comparison of property names, of
68 script objects.
70 To get a QScriptString representation of a string, pass the string
71 to QScriptEngine::toStringHandle(). The typical usage pattern is to
72 register one or more pre-defined strings when setting up your script
73 environment, then subsequently use the relevant QScriptString as
74 argument to e.g. QScriptValue::property().
76 Call the toString() function to obtain the string that a
77 QScriptString represents.
80 /*!
81 \internal
83 QScriptStringPrivate::QScriptStringPrivate()
84 : nameId(0), engine(0), q_ptr(0)
86 ref = 0;
89 /*!
90 \internal
92 QScriptStringPrivate *QScriptStringPrivate::create()
94 return new QScriptStringPrivate();
97 /*!
98 \internal
100 QScriptStringPrivate *QScriptStringPrivate::get(const QScriptString &q)
102 return const_cast<QScriptStringPrivate*>(q.d_func());
106 \internal
108 void QScriptStringPrivate::init(QScriptString &q, QScriptStringPrivate *d)
110 Q_ASSERT(q.d_ptr == 0);
111 q.d_ptr = d;
112 q.d_ptr->ref.ref();
116 Constructs an invalid QScriptString.
118 QScriptString::QScriptString()
119 : d_ptr(0)
124 Constructs a new QScriptString that is a copy of \a other.
126 QScriptString::QScriptString(const QScriptString &other)
127 : d_ptr(other.d_ptr)
129 if (d_ptr)
130 d_ptr->ref.ref();
134 Destroys this QScriptString.
136 QScriptString::~QScriptString()
138 if (d_ptr && !d_ptr->ref.deref()) {
139 if (isValid()) {
140 d_ptr->engine->uninternString(d_ptr);
141 } else {
142 // the engine has already been deleted
143 delete d_ptr;
145 d_ptr = 0;
150 Assigns the \a other value to this QScriptString.
152 QScriptString &QScriptString::operator=(const QScriptString &other)
154 if (d_ptr == other.d_ptr)
155 return *this;
156 if (d_ptr && !d_ptr->ref.deref()) {
157 if (isValid()) {
158 d_ptr->engine->uninternString(d_ptr);
159 } else {
160 // the engine has already been deleted
161 delete d_ptr;
164 d_ptr = other.d_ptr;
165 if (d_ptr)
166 d_ptr->ref.ref();
167 return *this;
171 Returns true if this QScriptString is valid; otherwise
172 returns false.
174 bool QScriptString::isValid() const
176 Q_D(const QScriptString);
177 return (d && d->nameId);
181 Returns true if this QScriptString is equal to \a other;
182 otherwise returns false.
184 bool QScriptString::operator==(const QScriptString &other) const
186 Q_D(const QScriptString);
187 return (d == other.d_func());
191 Returns true if this QScriptString is not equal to \a other;
192 otherwise returns false.
194 bool QScriptString::operator!=(const QScriptString &other) const
196 Q_D(const QScriptString);
197 return (d != other.d_func());
201 Returns the string that this QScriptString represents, or a
202 null string if this QScriptString is not valid.
204 \sa isValid()
206 QString QScriptString::toString() const
208 Q_D(const QScriptString);
209 if (!d || !d->nameId)
210 return QString();
211 return d->nameId->s;
215 Returns the string that this QScriptString represents, or a
216 null string if this QScriptString is not valid.
218 \sa toString()
220 QScriptString::operator QString() const
222 return toString();
225 QT_END_NAMESPACE
227 #endif // QT_NO_SCRIPT