1 /****************************************************************************
3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
4 ** Contact: Nokia Corporation (qt-info@nokia.com)
6 ** This file is part of the QtScript module of the Qt Toolkit.
8 ** $QT_BEGIN_LICENSE:LGPL$
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
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.
40 ****************************************************************************/
42 #include "qscriptstring.h"
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"
61 \brief The QScriptString class acts as a handle to "interned" strings in a QScriptEngine.
66 QScriptString can be used to achieve faster (repeated)
67 property getting/setting, and comparison of property names, of
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.
83 QScriptStringPrivate::QScriptStringPrivate()
84 : nameId(0), engine(0), q_ptr(0)
92 QScriptStringPrivate
*QScriptStringPrivate::create()
94 return new QScriptStringPrivate();
100 QScriptStringPrivate
*QScriptStringPrivate::get(const QScriptString
&q
)
102 return const_cast<QScriptStringPrivate
*>(q
.d_func());
108 void QScriptStringPrivate::init(QScriptString
&q
, QScriptStringPrivate
*d
)
110 Q_ASSERT(q
.d_ptr
== 0);
116 Constructs an invalid QScriptString.
118 QScriptString::QScriptString()
124 Constructs a new QScriptString that is a copy of \a other.
126 QScriptString::QScriptString(const QScriptString
&other
)
134 Destroys this QScriptString.
136 QScriptString::~QScriptString()
138 if (d_ptr
&& !d_ptr
->ref
.deref()) {
140 d_ptr
->engine
->uninternString(d_ptr
);
142 // the engine has already been deleted
150 Assigns the \a other value to this QScriptString.
152 QScriptString
&QScriptString::operator=(const QScriptString
&other
)
154 if (d_ptr
== other
.d_ptr
)
156 if (d_ptr
&& !d_ptr
->ref
.deref()) {
158 d_ptr
->engine
->uninternString(d_ptr
);
160 // the engine has already been deleted
171 Returns true if this QScriptString is valid; otherwise
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.
206 QString
QScriptString::toString() const
208 Q_D(const QScriptString
);
209 if (!d
|| !d
->nameId
)
215 Returns the string that this QScriptString represents, or a
216 null string if this QScriptString is not valid.
220 QScriptString::operator QString() const
227 #endif // QT_NO_SCRIPT