• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdesdk API Reference
  • KDE Home
  • Contact Us
 

okteta

  • sources
  • kde-4.12
  • kdesdk
  • okteta
  • kasten
  • controllers
  • view
  • structures
  • script
  • classes
defaultscriptclass.cpp
Go to the documentation of this file.
1 /*
2  * This file is part of the Okteta Kasten Framework, made within the KDE community.
3  *
4  * Copyright 2011, 2012, 2013 Alex Richardson <alex.richardson@gmx.de>
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) version 3, or any
10  * later version accepted by the membership of KDE e.V. (or its
11  * successor approved by the membership of KDE e.V.), which shall
12  * act as a proxy defined in Section 6 of version 3 of the license.
13  *
14  * This library is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17  * Lesser General Public License for more details.
18  *
19  * You should have received a copy of the GNU Lesser General Public
20  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
21  */
22 
23 #include "defaultscriptclass.h"
24 
25 #include "../../datatypes/datainformation.h"
26 #include "../../datatypes/topleveldatainformation.h"
27 #include "../../datatypes/uniondatainformation.h"
28 #include "../../datatypes/structuredatainformation.h"
29 #include "../../datatypes/primitive/pointerdatainformation.h"
30 #include "../../parsers/parserutils.h"
31 #include "../../parsers/scriptvalueconverter.h"
32 #include "../scriptlogger.h"
33 #include "../scripthandlerinfo.h"
34 #include "../safereference.h"
35 
36 #include <KDebug>
37 
38 DefaultScriptClass::DefaultScriptClass(QScriptEngine* engine, ScriptHandlerInfo* handlerInfo)
39  : QScriptClass(engine), mHandlerInfo(handlerInfo)
40 {
41  s_valid = engine->toStringHandle(ParserStrings::PROPERTY_VALID);
42  s_wasAbleToRead = engine->toStringHandle(ParserStrings::PROPERTY_ABLE_TO_READ);
43  s_validationError = engine->toStringHandle(ParserStrings::PROPERTY_VALIDATION_ERROR);
44  s_parent = engine->toStringHandle(ParserStrings::PROPERTY_PARENT);
45  s_byteOrder = engine->toStringHandle(ParserStrings::PROPERTY_BYTEORDER);
46  s_name = engine->toStringHandle(ParserStrings::PROPERTY_NAME);
47  s_datatype = engine->toStringHandle(ParserStrings::PROPERTY_DATATYPE);
48  s_updateFunc = engine->toStringHandle(ParserStrings::PROPERTY_UPDATE_FUNC);
49  s_validationFunc = engine->toStringHandle(ParserStrings::PROPERTY_VALIDATION_FUNC);
50  s_customTypeName = engine->toStringHandle(ParserStrings::PROPERTY_CUSTOM_TYPE_NAME);
51  s_asStringFunc = engine->toStringHandle(ParserStrings::PROPERTY_TO_STRING_FUNC);
52 
53 
54  //TODO remove, every subclass should have proto
55  mDefaultPrototype = engine->newObject();
56  mDefaultPrototype.setProperty(QLatin1String("toString"), engine->newFunction(Default_proto_toString));
57  //add all our properties
58  mIterableProperties.append(qMakePair(s_parent, QScriptValue::ReadOnly | QScriptValue::Undeletable));
59  mIterableProperties.append(qMakePair(s_name, QScriptValue::PropertyFlags(QScriptValue::Undeletable)));
60  mIterableProperties.append(qMakePair(s_wasAbleToRead, QScriptValue::ReadOnly | QScriptValue::Undeletable));
61  mIterableProperties.append(qMakePair(s_byteOrder, QScriptValue::PropertyFlags(QScriptValue::Undeletable)));
62  mIterableProperties.append(qMakePair(s_valid, QScriptValue::ReadOnly | QScriptValue::Undeletable));
63  mIterableProperties.append(qMakePair(s_validationError, QScriptValue::ReadOnly | QScriptValue::Undeletable));
64  mIterableProperties.append(qMakePair(s_validationFunc, QScriptValue::PropertyFlags(QScriptValue::Undeletable)));
65  mIterableProperties.append(qMakePair(s_updateFunc, QScriptValue::PropertyFlags(QScriptValue::Undeletable)));
66  mIterableProperties.append(qMakePair(s_datatype, QScriptValue::PropertyFlags(QScriptValue::Undeletable)));
67  mIterableProperties.append(qMakePair(s_customTypeName, QScriptValue::PropertyFlags(QScriptValue::Undeletable)));
68  mIterableProperties.append(qMakePair(s_asStringFunc, QScriptValue::PropertyFlags(QScriptValue::Undeletable)));
69 }
70 
71 DefaultScriptClass::~DefaultScriptClass()
72 {
73 }
74 
75 DataInformation* DefaultScriptClass::toDataInformation(const QScriptValue& obj)
76 {
77  if (!obj.scriptClass())
78  return 0;
79  Q_ASSERT(obj.data().isVariant());
80  const QVariant variant = obj.data().toVariant();
81  if (variant.isValid() && variant.canConvert<SafeReference>() && variant.userType() == qMetaTypeId<SafeReference>())
82  {
83  const SafeReference& ref = *reinterpret_cast<const SafeReference*>(variant.constData());
84  return ref.data();
85  }
86  return 0;
87 }
88 
89 QScriptClass::QueryFlags DefaultScriptClass::queryProperty(const QScriptValue& object,
90  const QScriptString& name, QScriptClass::QueryFlags flags, uint* id)
91 {
92  const ScriptHandlerInfo::Mode mode = mHandlerInfo->mode();
93  Q_ASSERT(mode != ScriptHandlerInfo::None);
94  DataInformation* data = toDataInformation(object);
95  if (!data)
96  {
97  mHandlerInfo->logger()->error() << "could not cast data from" << object.data().toString();
98  engine()->currentContext()->throwError(QScriptContext::ReferenceError,
99  QLatin1String("Attempting to access an invalid object"));
100  return 0;
101  }
102  if (name == s_valid || name == s_validationError)
103  {
104  return mode == ScriptHandlerInfo::Validating ? flags : flags & ~HandlesWriteAccess;
105  }
106  if (mode != ScriptHandlerInfo::Updating)
107  {
108  //the only properties that are possibly writable when not updating are valid and validationError
109  //but we checked them before so we remove handlesWriteAccess from the flags
110  flags &= ~HandlesWriteAccess;
111  }
112 
113  if (name == s_byteOrder || name == s_name || name == s_updateFunc || name == s_validationFunc
114  || name == s_datatype || name == s_customTypeName || name == s_asStringFunc)
115  {
116  return flags;
117  }
118  else if (name == s_wasAbleToRead || name == s_parent)
119  {
120  return flags & ~HandlesWriteAccess;
121  }
122  else if (queryAdditionalProperty(data, name, &flags, id))
123  {
124  return flags;
125  }
126  else
127  {
128  data->logError() << "could not find property with name" << name.toString();
129  engine()->currentContext()->throwError(QScriptContext::ReferenceError,
130  QLatin1String("Could not find property with name ") + name.toString());
131  return 0;
132  }
133 }
134 
135 QScriptValue DefaultScriptClass::property(const QScriptValue& object, const QScriptString& name, uint id)
136 {
137  Q_ASSERT(mHandlerInfo->mode() != ScriptHandlerInfo::None);
138  DataInformation* data = toDataInformation(object);
139  if (!data)
140  {
141  mHandlerInfo->logger()->error() << "could not cast data from" << object.data().toString();
142  return engine()->currentContext()->throwError(QScriptContext::ReferenceError,
143  QLatin1String("Attempting to access an invalid object"));
144  }
145  if (name == s_valid)
146  {
147  return data->validationSuccessful();
148  }
149  else if (name == s_wasAbleToRead)
150  {
151  return data->wasAbleToRead();
152  }
153  else if (name == s_parent)
154  {
155  Q_CHECK_PTR(data->parent());
156  //parent() cannot be null
157  if (data->parent()->isTopLevel())
158  return engine()->nullValue();
159  return data->parent()->asDataInformation()->toScriptValue(engine(), mHandlerInfo);
160  }
161  else if (name == s_datatype)
162  {
163  return data->typeName();
164  }
165  else if (name == s_updateFunc)
166  {
167  return data->updateFunc();
168  }
169  else if (name == s_validationFunc)
170  {
171  return data->validationFunc();
172  }
173  else if (name == s_validationError)
174  {
175  return data->validationError();
176  }
177  else if (name == s_byteOrder)
178  {
179  return ParserUtils::byteOrderToString(data->byteOrder());
180  }
181  else if (name == s_name)
182  {
183  return data->name();
184  }
185  else if (name == s_customTypeName)
186  {
187  return data->typeName();
188  }
189  else if (name == s_asStringFunc)
190  {
191  return data->toStringFunction();
192  }
193  QScriptValue other = additionalProperty(data, name, id);
194  if (other.isValid())
195  return other;
196  else
197  {
198  data->logError() << "could not find property with name" << name.toString();
199  return engine()->currentContext()->throwError(QScriptContext::ReferenceError,
200  QLatin1String("Cannot read property ") + name.toString());
201  }
202 }
203 
204 void DefaultScriptClass::setDataType(const QScriptValue& value, DataInformation* data)
205 {
206  DataInformation* thisObj = toDataInformation(engine()->currentContext()->thisObject());
207  Q_CHECK_PTR(thisObj);
208  const bool isThisObj = thisObj == data;
209  //this object always has mHasBeenUpdated set just before calling updateFunc, so in that case it is okay
210  if (data->hasBeenUpdated() && !isThisObj)
211  {
212  //this element has already been updated (and probably read, replacing it could cause crazy errors
213  data->logError() << "Attempting to replace an already updated object. This could cause errors."
214  "Current this object: " << (thisObj ? thisObj->fullObjectPath() : QString());
215  return;
216  }
217  //change the type of the underlying object
218  DataInformation* newType = ScriptValueConverter::convert(value, data->name(), data->logger(), data);
219  if (!newType)
220  {
221  data->logError() << "Failed to set new type, could not convert value!";
222  return;
223  }
224 
225  DataInformationBase* parent = data->parent();
226  Q_CHECK_PTR(parent);
227  TopLevelDataInformation* top = data->topLevelDataInformation();
228  Q_CHECK_PTR(top);
229  //only if parent is toplevel, struct or union, can we replace
230  bool replaced = false;
231  if (parent->isTopLevel())
232  {
233  Q_ASSERT(isThisObj); //we can only do this if we are currently at the top level element
234  parent->asTopLevel()->setActualDataInformation(newType);
235  replaced = true;
236  }
237  else if (parent->isStruct())
238  {
239  StructureDataInformation* stru = parent->asStruct();
240  int index = stru->indexOf(data);
241  Q_ASSERT(index != -1);
242  Q_ASSERT(uint(index) < stru->childCount());
243  replaced = stru->replaceChildAt(index, newType);
244  if (!replaced)
245  stru->logError() << "failed to replace child at index" << index;
246  }
247  else if (parent->isUnion())
248  {
249  UnionDataInformation* un = parent->asUnion();
250  int index = un->indexOf(data);
251  Q_ASSERT(index != -1);
252  Q_ASSERT(uint(index) < un->childCount());
253  replaced = un->replaceChildAt(index, newType);
254  if (!replaced)
255  un->logError() << "failed to replace child at index" << index;
256  }
257  else if (parent->isPointer())
258  {
259  parent->asPointer()->setPointerTarget(newType);
260  replaced = true;
261  }
262  else
263  {
264  data->logError() << "Failed to set data type since element is not toplevel and parent"
265  " is neither struct nor union nor pointer.";
266  }
267  if (replaced)
268  {
269  top->setChildDataChanged();
270  //if the current object was "this" in javascript we have to replace it
271  if (isThisObj)
272  engine()->currentContext()->setThisObject(newType->toScriptValue(engine(), mHandlerInfo));
273  }
274  else
275  {
276  delete newType; //could not set new type
277  }
278  newType->mHasBeenUpdated = true;
279 }
280 
281 void DefaultScriptClass::setProperty(QScriptValue& object, const QScriptString& name, uint id, const QScriptValue& value)
282 {
283  const ScriptHandlerInfo::Mode mode = mHandlerInfo->mode();
284  Q_ASSERT(mode != ScriptHandlerInfo::None);
285  DataInformation* data = toDataInformation(object);
286  if (!data)
287  {
288  mHandlerInfo->logger()->error() << "could not cast data from" << object.data().toString();
289  engine()->currentContext()->throwError(QScriptContext::ReferenceError,
290  QLatin1String("Attempting to access an invalid object"));
291  return;
292  }
293  if (mode == ScriptHandlerInfo::Validating)
294  {
295  //only way write access is allowed is when validating: valid and validationError
296  if (data->hasBeenValidated())
297  data->logError() << "Cannot modify this object, it has already been validated!";
298  else if (name == s_valid)
299  data->mValidationSuccessful = value.toBool();
300  else if (name == s_validationError)
301  data->setValidationError(value.toString());
302  else
303  data->logError() << "Cannot write to property" << name.toString() << "while validating!";
304  return;
305  }
306 
307  if (mode != ScriptHandlerInfo::Updating)
308  {
309  data->logError() << "Writing to property" << name.toString() << "is only allowed when updating.";
310  return;
311  }
312  Q_ASSERT(mode == ScriptHandlerInfo::Updating);
313 
314  if (name == s_byteOrder)
315  {
316  data->setByteOrder(ParserUtils::byteOrderFromString(value.toString(),
317  LoggerWithContext(data->logger(), data->fullObjectPath())));
318  }
319  else if (name == s_datatype)
320  {
321  //change the type of the underlying object
322  setDataType(value, data);
323  }
324  else if (name == s_updateFunc)
325  {
326  data->setUpdateFunc(value);
327  }
328  else if (name == s_validationFunc)
329  {
330  data->setValidationFunc(value);
331  }
332  else if (name == s_name)
333  {
334  data->setName(value.toString());
335  }
336  else if (name == s_customTypeName)
337  {
338  if (!value.isValid() || value.isNull() || value.isUndefined())
339  data->setCustomTypeName(QString()); //unset
340  else
341  data->setCustomTypeName(value.toString());
342  }
343  else if (name == s_asStringFunc)
344  {
345  data->setToStringFunction(value);
346  }
347  else
348  {
349  bool setAdditional = setAdditionalProperty(data, name, id, value);
350  if (setAdditional)
351  return;
352  else
353  {
354  data->logError() << "could not set property with name" << name.toString();
355  engine()->currentContext()->throwError(QScriptContext::ReferenceError,
356  QLatin1String("Cannot write property ") + name.toString());
357  }
358  }
359 }
360 
361 QScriptValue::PropertyFlags DefaultScriptClass::propertyFlags(const QScriptValue& object, const QScriptString& name, uint id)
362 {
363  QScriptValue::PropertyFlags result;
364  const ScriptHandlerInfo::Mode mode = mHandlerInfo->mode();
365  Q_ASSERT(mode != ScriptHandlerInfo::None);
366  DataInformation* data = toDataInformation(object);
367  if (!data)
368  {
369  mHandlerInfo->logger()->error() << "could not cast data from" << object.data().toString();
370  engine()->currentContext()->throwError(QScriptContext::ReferenceError,
371  QLatin1String("Attempting to access an invalid object"));
372  return 0;
373  }
374  if (name == s_valid || name == s_validationError)
375  {
376  if (mode != ScriptHandlerInfo::Validating)
377  result |= QScriptValue::ReadOnly;
378  }
379  else if (mode != ScriptHandlerInfo::Updating)
380  {
381  result |= QScriptValue::ReadOnly;
382  }
383 
384  for (int i = 0, size = mIterableProperties.size(); i < size; ++i) {
385  if (mIterableProperties.at(i).first == name)
386  return result | mIterableProperties.at(i).second;
387  }
388  if (additionalPropertyFlags(data, name, id, &result))
389  return result; //is a child element
390  else
391  {
392  data->logError() << "could not find flags for property with name" << name.toString();
393  return 0;
394  }
395 }
396 
397 QScriptValue DefaultScriptClass::prototype() const
398 {
399  return mDefaultPrototype;
400 }
401 
402 QScriptValue DefaultScriptClass::Default_proto_toString(QScriptContext* ctx, QScriptEngine* eng)
403 {
404  DataInformation* data = toDataInformation(ctx->thisObject());
405  if (!data)
406  {
407  kWarning() << "could not cast data";
408  return eng->undefinedValue();
409  }
410  return QString(data->typeName() + QLatin1Char(' ') + data->name());
411 }
412 
413 
414 QScriptClassPropertyIterator* DefaultScriptClass::newIterator(const QScriptValue& object)
415 {
416  return new DefaultscriptClassIterator(object, this);
417 }
418 
419 DefaultscriptClassIterator::DefaultscriptClassIterator(const QScriptValue& object, DefaultScriptClass* cls)
420  : QScriptClassPropertyIterator(object), mCurrent(-1), mClass(cls)
421 {
422  DataInformation* data = DefaultScriptClass::toDataInformation(object);
423  Q_CHECK_PTR(data);
424  mData = data;
425 }
426 
427 DefaultscriptClassIterator::~DefaultscriptClassIterator()
428 {
429 }
430 
431 bool DefaultscriptClassIterator::hasNext() const
432 {
433  return mCurrent < mClass->mIterableProperties.size() - 1;
434 }
435 
436 bool DefaultscriptClassIterator::hasPrevious() const
437 {
438  return mCurrent > 0;
439 }
440 
441 QScriptString DefaultscriptClassIterator::name() const
442 {
443  Q_ASSERT(mCurrent >= 0 && (uint)mCurrent < mClass->mIterableProperties.size() + mData->childCount());
444  if (mCurrent < 0 || (uint)mCurrent >= mClass->mIterableProperties.size() + mData->childCount())
445  return QScriptString();
446  if (mCurrent < mClass->mIterableProperties.size())
447  return mClass->mIterableProperties.at(mCurrent).first;
448  int index = mCurrent - mClass->mIterableProperties.size();
449  Q_ASSERT(index >= 0);
450  DataInformation* child = mData->childAt(index);
451  return mClass->engine()->toStringHandle(child->name());
452 }
453 
454 QScriptValue::PropertyFlags DefaultscriptClassIterator::flags() const
455 {
456  Q_ASSERT(mCurrent >= 0 && (uint)mCurrent < mClass->mIterableProperties.size() + mData->childCount());
457  if (mCurrent < 0 || (uint)mCurrent >= mClass->mIterableProperties.size() + mData->childCount())
458  return 0;
459  if (mCurrent < mClass->mIterableProperties.size())
460  return mClass->propertyFlags(object(), mClass->mIterableProperties.at(mCurrent).first, id());
461  return QScriptValue::ReadOnly;
462 }
463 
464 uint DefaultscriptClassIterator::id() const
465 {
466  Q_ASSERT(mCurrent >= 0 && (uint)mCurrent < mClass->mIterableProperties.size() + mData->childCount());
467  if (mCurrent < 0 || (uint)mCurrent >= mClass->mIterableProperties.size() + mData->childCount())
468  return 0;
469  //only children have an id assigned
470  if (mCurrent < mClass->mIterableProperties.size())
471  return 0;
472  return mCurrent - mClass->mIterableProperties.size() + 1;
473 }
474 
475 void DefaultscriptClassIterator::next()
476 {
477  Q_ASSERT(mCurrent == -1 || (uint)mCurrent < mClass->mIterableProperties.size() + mData->childCount());
478  mCurrent++;
479 }
480 
481 void DefaultscriptClassIterator::previous()
482 {
483  Q_ASSERT(mCurrent >= 0);
484  mCurrent--;
485 }
486 
487 void DefaultscriptClassIterator::toBack()
488 {
489  mCurrent = mClass->mIterableProperties.size() + mData->childCount();
490 }
491 
492 void DefaultscriptClassIterator::toFront()
493 {
494  mCurrent = -1;
495 }
496 
497 
498 
DataInformation
Interface that must be implemented by all datatypes.
Definition: datainformation.h:67
DataInformation::name
QString name() const
Definition: datainformation.h:258
DataInformation::fullObjectPath
QString fullObjectPath() const
Definition: datainformation.cpp:258
LoggerWithContext
Definition: scriptlogger.h:94
DataInformation::topLevelDataInformation
TopLevelDataInformation * topLevelDataInformation() const
Definition: datainformation.cpp:240
DataInformationWithChildren::childCount
virtual unsigned int childCount() const
Definition: datainformationwithchildren.h:77
QScriptClass
ParserStrings::PROPERTY_PARENT
const QString PROPERTY_PARENT
Definition: parserutils.h:116
PointerDataInformation::setPointerTarget
void setPointerTarget(DataInformation *target)
Set a new pointer target.
Definition: pointerdatainformation.h:89
DataInformation::mValidationSuccessful
bool mValidationSuccessful
Definition: datainformation.h:240
DataInformationBase::asPointer
PointerDataInformation * asPointer()
DefaultscriptClassIterator::previous
virtual void previous()
Definition: defaultscriptclass.cpp:481
DataInformation::childCount
virtual unsigned int childCount() const =0
Definition: datainformation.h:278
ParserStrings::PROPERTY_DATATYPE
const QString PROPERTY_DATATYPE
Definition: parserutils.h:123
DataInformation::setName
void setName(const QString &newName)
Definition: datainformation.h:263
DataInformation::typeName
QString typeName() const
Definition: datainformation.h:406
DefaultscriptClassIterator::flags
virtual QScriptValue::PropertyFlags flags() const
Definition: defaultscriptclass.cpp:454
SafeReference::data
DataInformation * data() const
Definition: safereference.h:89
DefaultscriptClassIterator::name
virtual QScriptString name() const
Definition: defaultscriptclass.cpp:441
ParserStrings::PROPERTY_VALID
const QString PROPERTY_VALID
Definition: parserutils.h:118
SafeReference
A class wrapping a DataInformation* As soon as that DataInformation is destroyed all references to it...
Definition: safereference.h:52
DataInformationBase::isStruct
virtual bool isStruct() const
Definition: datainformationbase.cpp:55
ParserStrings::PROPERTY_CUSTOM_TYPE_NAME
const QString PROPERTY_CUSTOM_TYPE_NAME
Definition: parserutils.h:124
defaultscriptclass.h
DataInformation::logger
ScriptLogger * logger() const
Definition: datainformation.cpp:134
ParserStrings::PROPERTY_TO_STRING_FUNC
const QString PROPERTY_TO_STRING_FUNC
Definition: parserutils.h:122
DefaultScriptClass::property
virtual QScriptValue property(const QScriptValue &object, const QScriptString &name, uint id)
Definition: defaultscriptclass.cpp:135
DefaultScriptClass::s_wasAbleToRead
QScriptString s_wasAbleToRead
Definition: defaultscriptclass.h:71
DefaultscriptClassIterator::id
virtual uint id() const
Definition: defaultscriptclass.cpp:464
DefaultscriptClassIterator::next
virtual void next()
Definition: defaultscriptclass.cpp:475
TopLevelDataInformation::setActualDataInformation
void setActualDataInformation(DataInformation *newData)
Definition: topleveldatainformation.cpp:261
DataInformation::hasBeenUpdated
bool hasBeenUpdated() const
Definition: datainformation.h:339
DataInformation::setValidationFunc
void setValidationFunc(const QScriptValue &func)
Definition: datainformation.h:374
DefaultscriptClassIterator::DefaultscriptClassIterator
DefaultscriptClassIterator(const QScriptValue &object, DefaultScriptClass *cls)
Definition: defaultscriptclass.cpp:419
ScriptHandlerInfo::Validating
Definition: scripthandlerinfo.h:46
DefaultscriptClassIterator::hasNext
virtual bool hasNext() const
Definition: defaultscriptclass.cpp:431
DataInformation::childAt
virtual DataInformation * childAt(unsigned int) const =0
Definition: datainformation.h:268
TopLevelDataInformation
Definition: topleveldatainformation.h:46
DataInformation::setToStringFunction
void setToStringFunction(const QScriptValue &value)
Definition: datainformation.h:379
DefaultscriptClassIterator::toFront
virtual void toFront()
Definition: defaultscriptclass.cpp:492
DefaultScriptClass::mHandlerInfo
ScriptHandlerInfo * mHandlerInfo
Definition: defaultscriptclass.h:84
DataInformationWithChildren::indexOf
virtual int indexOf(const DataInformation *const data) const
Find the index of a DataInformation in this object, needed to calculate the row.
Definition: datainformationwithchildren.cpp:165
DefaultScriptClass::s_customTypeName
QScriptString s_customTypeName
Definition: defaultscriptclass.h:79
ParserStrings::PROPERTY_UPDATE_FUNC
const QString PROPERTY_UPDATE_FUNC
Definition: parserutils.h:120
QScriptClassPropertyIterator
DefaultScriptClass::s_parent
QScriptString s_parent
Definition: defaultscriptclass.h:73
DefaultScriptClass::Default_proto_toString
static QScriptValue Default_proto_toString(QScriptContext *ctx, QScriptEngine *eng)
Definition: defaultscriptclass.cpp:402
DataInformation::setByteOrder
void setByteOrder(DataInformationEndianess newEndianess)
Definition: datainformation.h:293
DefaultScriptClass::s_name
QScriptString s_name
Definition: defaultscriptclass.h:75
DataInformation::mHasBeenUpdated
bool mHasBeenUpdated
Definition: datainformation.h:242
DefaultScriptClass::toDataInformation
static DataInformation * toDataInformation(const QScriptValue &val)
Convert a QScriptValue to DataInformation than qscriptvalue_cast, since we know exactly what to expec...
Definition: defaultscriptclass.cpp:75
DefaultScriptClass::additionalProperty
virtual QScriptValue additionalProperty(const DataInformation *data, const QScriptString &name, uint id)=0
DefaultScriptClass::DefaultScriptClass
DefaultScriptClass(QScriptEngine *engine, ScriptHandlerInfo *handlerInfo)
Definition: defaultscriptclass.cpp:38
DefaultscriptClassIterator::toBack
virtual void toBack()
Definition: defaultscriptclass.cpp:487
DataInformationBase::isTopLevel
virtual bool isTopLevel() const =0
DefaultScriptClass::s_validationFunc
QScriptString s_validationFunc
Definition: defaultscriptclass.h:78
DataInformationBase::asTopLevel
TopLevelDataInformation * asTopLevel()
Definition: datainformationbase.cpp:85
DataInformation::toScriptValue
virtual QScriptValue toScriptValue(QScriptEngine *engine, ScriptHandlerInfo *handlerInfo)
This method is virtual since DummyDataInformation has to override it.
Definition: datainformation.cpp:275
DefaultScriptClass::DefaultscriptClassIterator
friend class DefaultscriptClassIterator
Definition: defaultscriptclass.h:38
DefaultScriptClass::s_datatype
QScriptString s_datatype
Definition: defaultscriptclass.h:76
DefaultScriptClass::propertyFlags
virtual QScriptValue::PropertyFlags propertyFlags(const QScriptValue &object, const QScriptString &name, uint id)
Definition: defaultscriptclass.cpp:361
UnionDataInformation
A class holding the data of a union for Okteta.
Definition: uniondatainformation.h:28
ScriptHandlerInfo::mode
Mode mode() const
Definition: scripthandlerinfo.h:58
DefaultScriptClass::mIterableProperties
PropertyInfoList mIterableProperties
Contains all properties of this class, classes inheriting should add their own properties to this lis...
Definition: defaultscriptclass.h:82
ParserUtils::byteOrderToString
QString byteOrderToString(DataInformation::DataInformationEndianess order)
Definition: parserutils.cpp:137
DataInformation::setCustomTypeName
void setCustomTypeName(const QString &customTypeName)
Set a custom string to be used for typeName() instead of the default.
Definition: datainformation.cpp:103
ScriptHandlerInfo::Mode
Mode
The type of function that is being evaluated (most writing is only allowed when updating) ...
Definition: scripthandlerinfo.h:45
DataInformationWithChildren::replaceChildAt
virtual bool replaceChildAt(unsigned int index, DataInformation *newChild)
replaces child at index with newChild.
Definition: datainformationwithchildren.cpp:210
DefaultScriptClass::s_validationError
QScriptString s_validationError
Definition: defaultscriptclass.h:72
DataInformation::data
virtual QVariant data(int column, int role) const
get the necessary data (for the model)
Definition: datainformation.cpp:156
DefaultScriptClass::setAdditionalProperty
virtual bool setAdditionalProperty(DataInformation *data, const QScriptString &name, uint id, const QScriptValue &value)=0
DataInformation::hasBeenValidated
bool hasBeenValidated() const
Definition: datainformation.h:349
DefaultScriptClass::s_updateFunc
QScriptString s_updateFunc
Definition: defaultscriptclass.h:77
DefaultScriptClass::queryAdditionalProperty
virtual bool queryAdditionalProperty(const DataInformation *data, const QScriptString &name, QueryFlags *flags, uint *id)=0
ParserStrings::PROPERTY_VALIDATION_FUNC
const QString PROPERTY_VALIDATION_FUNC
Definition: parserutils.h:121
DefaultScriptClass::~DefaultScriptClass
virtual ~DefaultScriptClass()
Definition: defaultscriptclass.cpp:71
DataInformationBase::asStruct
StructureDataInformation * asStruct()
ScriptHandlerInfo
Definition: scripthandlerinfo.h:39
ScriptLogger::error
QDebug error(const DataInformation *origin)
Definition: scriptlogger.h:68
ScriptValueConverter::convert
DataInformation * convert(const QScriptValue &value, const QString &name, ScriptLogger *logger, DataInformation *parent)
If the value is one element.
Definition: scriptvalueconverter.cpp:36
ParserStrings::PROPERTY_BYTEORDER
const QString PROPERTY_BYTEORDER
Definition: parserutils.h:115
DataInformationBase::asUnion
UnionDataInformation * asUnion()
DataInformation::parent
DataInformationBase * parent() const
Definition: datainformation.h:309
DataInformationBase
Definition: datainformationbase.h:44
TopLevelDataInformation::setChildDataChanged
void setChildDataChanged()
Definition: topleveldatainformation.h:164
DataInformationBase::isUnion
virtual bool isUnion() const
Definition: datainformationbase.cpp:60
ParserUtils::byteOrderFromString
DataInformation::DataInformationEndianess byteOrderFromString(const QString &string, const LoggerWithContext &logger)
Definition: parserutils.cpp:67
DefaultScriptClass::s_valid
QScriptString s_valid
Definition: defaultscriptclass.h:70
DefaultscriptClassIterator::hasPrevious
virtual bool hasPrevious() const
Definition: defaultscriptclass.cpp:436
DefaultScriptClass::mDefaultPrototype
QScriptValue mDefaultPrototype
Definition: defaultscriptclass.h:83
DefaultScriptClass::newIterator
virtual QScriptClassPropertyIterator * newIterator(const QScriptValue &object)
Definition: defaultscriptclass.cpp:414
ParserStrings::PROPERTY_ABLE_TO_READ
const QString PROPERTY_ABLE_TO_READ
Definition: parserutils.h:119
DefaultScriptClass
Definition: defaultscriptclass.h:36
DefaultScriptClass::setProperty
virtual void setProperty(QScriptValue &object, const QScriptString &name, uint id, const QScriptValue &value)
Definition: defaultscriptclass.cpp:281
ScriptHandlerInfo::logger
ScriptLogger * logger()
Definition: scripthandlerinfo.h:60
DefaultScriptClass::additionalPropertyFlags
virtual bool additionalPropertyFlags(const DataInformation *data, const QScriptString &name, uint id, QScriptValue::PropertyFlags *flags)=0
DataInformation::setUpdateFunc
void setUpdateFunc(const QScriptValue &func)
Definition: datainformation.h:369
ScriptHandlerInfo::None
Definition: scripthandlerinfo.h:46
ParserStrings::PROPERTY_NAME
const QString PROPERTY_NAME
Definition: parserutils.h:114
DefaultScriptClass::prototype
virtual QScriptValue prototype() const
Definition: defaultscriptclass.cpp:397
DefaultScriptClass::s_byteOrder
QScriptString s_byteOrder
Definition: defaultscriptclass.h:74
ScriptHandlerInfo::Updating
Definition: scripthandlerinfo.h:46
DefaultscriptClassIterator::~DefaultscriptClassIterator
virtual ~DefaultscriptClassIterator()
Definition: defaultscriptclass.cpp:427
DataInformation::logError
QDebug logError() const
just a shorthand for logger->error(this)
Definition: datainformation.h:324
DataInformationBase::isPointer
virtual bool isPointer() const
Definition: datainformationbase.cpp:75
DefaultScriptClass::queryProperty
virtual QueryFlags queryProperty(const QScriptValue &object, const QScriptString &name, QueryFlags flags, uint *id)
Definition: defaultscriptclass.cpp:89
StructureDataInformation
A class holding the data of a struct for Okteta.
Definition: structuredatainformation.h:28
DefaultScriptClass::s_asStringFunc
QScriptString s_asStringFunc
Definition: defaultscriptclass.h:80
ParserStrings::PROPERTY_VALIDATION_ERROR
const QString PROPERTY_VALIDATION_ERROR
Definition: parserutils.h:117
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 23:04:08 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

okteta

Skip menu "okteta"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdesdk API Reference

Skip menu "kdesdk API Reference"
  • kapptemplate
  • kcachegrind
  • kompare
  • lokalize
  • okteta
  • umbrello
  •   umbrello

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal