24 T* ret = qscriptvalue_cast<T*>(v);
41 if (ret==NULL && !v.isNull()) {
42 QScriptValue prototype = v.prototype();
43 ret = qscriptvalue_cast<T*>(prototype);
48 if (ret==NULL && !v.isNull()) {
49 QScriptValue fBaseClasses = v.property(
"getBaseClasses");
50 if (!fBaseClasses.isValid()) {
53 QScriptValue baseClasses = fBaseClasses.call(v);
58 QScriptValue baseClass = baseClasses.property(i);
59 if (baseClass.toString().isEmpty()) {
65 ret = qscriptvalue_cast<T*>(v.property(QString(
"get") + baseClass.toString()).call(v));
97 static QScriptValue
throwError(
const QString& message, QScriptContext* context);
99 static QScriptValue
toScriptValue(QScriptEngine* engine,
const QMap<QString, QString>& cppValue);
103 template<
class T1,
class T2>
107 for (
int i=0; i<cppValue.size(); ++i) {
110 QPair<T1, T2> item = cppValue.at(i);
115 v.setValue(item.first);
118 v.setValue(item.second);
125 return qScriptValueFromValue(engine, vl);
144 static QScriptValue
listToScriptValue(QScriptEngine* engine,
const QList<QSharedPointer<RShape> >& cppValue);
149 for (
int i = 0; i < cppValue.size(); ++i) {
151 v.setValue(cppValue.at(i));
154 return qScriptValueFromValue(engine, vl);
160 typename QSet<T>::const_iterator it;
161 for (it=cppValue.begin(); it!=cppValue.end(); it++) {
166 return qScriptValueFromValue(engine, vl);
180 static QScriptValue
toScriptValue(QScriptEngine* engine, QSharedPointer<RShape>& cppValue);
181 static QScriptValue
toScriptValue(QScriptEngine* engine, QSharedPointer<REntity>& cppValue);
183 static QScriptValue
toScriptValue(QScriptEngine* engine, QSharedPointer<REntityData>& cppValue);
185 static QScriptValue
toScriptValue(QScriptEngine* engine,
const QVariant& cppValue);
188 static QScriptValue
tryCast(QScriptEngine* engine, QSharedPointer<RShape>& cppValue) {
189 QSharedPointer<T> shape = cppValue.dynamicCast<T>();
190 if (!shape.isNull()) {
191 return qScriptValueFromValue(engine, shape);
194 return QScriptValue();
200 T* shape =
dynamic_cast<T*
>(cppValue);
202 return qScriptValueFromValue(engine, shape);
205 return QScriptValue();
210 static QScriptValue
tryCast(QScriptEngine* engine, QSharedPointer<REntity>& cppValue) {
211 QSharedPointer<T> entity = cppValue.dynamicCast<T>();
212 if (!entity.isNull()) {
213 return qScriptValueFromValue(engine, entity);
216 return QScriptValue();
222 T* entity =
dynamic_cast<T*
>(cppValue);
224 return qScriptValueFromValue(engine, entity);
227 return QScriptValue();
232 static QScriptValue
tryCast(QScriptEngine* engine, QSharedPointer<REntityData>& cppValue) {
233 QSharedPointer<T> entity = cppValue.dynamicCast<T>();
234 if (!entity.isNull()) {
235 return qScriptValueFromValue(engine, entity);
238 return QScriptValue();
242 static void fromScriptValue(QScriptEngine* engine, QScriptValue scriptValue, QList<QSharedPointer<RShape> >& cppValue);
243 static QVariant
toVariant(
const QSharedPointer<RShape>& cppValue);
270 static void fromScriptValue(QScriptEngine* engine, QScriptValue scriptValue, QList<T>& cppValue) {
271 QVariantList vl = engine->fromScriptValue<QVariantList>(scriptValue);
272 for (
int i = 0; i < vl.size(); ++i) {
273 cppValue.append(vl.at(i).template value<T>());
278 static void fromScriptValue(QScriptEngine* engine, QScriptValue scriptValue, QSet<T>& cppValue) {
279 QVariantList vl = engine->fromScriptValue<QVariantList>(scriptValue);
280 for (
int i = 0; i < vl.size(); ++i) {
281 cppValue.insert(vl.at(i).template value<T>());
286 QScriptEngine::FunctionSignature fun,
287 const QString& name);
289 static void functionStart(
const QString& name, QScriptContext *context, QScriptEngine *engine);
290 static void functionEnd(
const QString& name, QScriptContext *context, QScriptEngine *engine);