• 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
pointerscriptclass.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 2012 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 "pointerscriptclass.h"
24 
25 #include "../../datatypes/primitive/pointerdatainformation.h"
26 #include "../../parsers/parserutils.h"
27 #include "../../parsers/scriptvalueconverter.h"
28 
29 PointerScriptClass::PointerScriptClass(QScriptEngine* engine, ScriptHandlerInfo* handlerInfo)
30  : PrimitiveScriptClass(engine, handlerInfo)
31 {
32  s_type = engine->toStringHandle(ParserStrings::PROPERTY_TYPE);
33  mIterableProperties.append(qMakePair(s_type, QScriptValue::PropertyFlags(QScriptValue::Undeletable)));
34  s_target = engine->toStringHandle(ParserStrings::PROPERTY_TARGET);
35  mIterableProperties.append(qMakePair(s_type, QScriptValue::PropertyFlags(QScriptValue::Undeletable)));
36 }
37 
38 PointerScriptClass::~PointerScriptClass()
39 {
40 }
41 
42 QScriptValue PointerScriptClass::additionalProperty(const DataInformation* data, const QScriptString& name,
43  uint id)
44 {
45  Q_ASSERT(data->isPointer());
46  if (name == s_type)
47  {
48  return PrimitiveType::standardTypeName(data->asPointer()->pointerType()->type());
49  }
50  else if (name == s_target)
51  {
52  return data->asPointer()->pointerTarget()->toScriptValue(engine(), mHandlerInfo);
53  }
54  return PrimitiveScriptClass::additionalProperty(data, name, id);
55 }
56 
57 bool PointerScriptClass::queryAdditionalProperty(const DataInformation* data, const QScriptString& name,
58  QScriptClass::QueryFlags* flags, uint* id)
59 {
60  if (name == s_type || name == s_target)
61  {
62  *flags = QScriptClass::HandlesReadAccess | QScriptClass::HandlesWriteAccess;
63  return true;
64  }
65  return PrimitiveScriptClass::queryAdditionalProperty(data, name, flags, id);
66 }
67 
68 bool PointerScriptClass::setAdditionalProperty(DataInformation* data, const QScriptString& name, uint id,
69  const QScriptValue& value)
70 {
71  if (name == s_type)
72  {
73  DataInformation* newType = ScriptValueConverter::convert(value, QLatin1String("(pointer value)"),
74  data->logger(), data);
75  if (!newType)
76  data->logError() << "Could not set new pointer type.";
77  else if (!data->asPointer()->setPointerType(newType))
78  delete newType;
79 
80  return true;
81  }
82  if (name == s_target)
83  {
84  DataInformation* newTarget = ScriptValueConverter::convert(value, QLatin1String("(pointer value)"),
85  data->logger(), data);
86  if (!newTarget)
87  data->logError() << "Could not set new pointer target.";
88  else
89  data->asPointer()->setPointerTarget(newTarget);
90  return true;
91  }
92  return PrimitiveScriptClass::setAdditionalProperty(data, name, id, value);
93 }
94 
DataInformation
Interface that must be implemented by all datatypes.
Definition: datainformation.h:67
PointerScriptClass::queryAdditionalProperty
virtual bool queryAdditionalProperty(const DataInformation *data, const QScriptString &name, QScriptClass::QueryFlags *flags, uint *id)
Definition: pointerscriptclass.cpp:57
ParserStrings::PROPERTY_TARGET
const QString PROPERTY_TARGET
Definition: parserutils.h:149
PointerDataInformation::setPointerTarget
void setPointerTarget(DataInformation *target)
Set a new pointer target.
Definition: pointerdatainformation.h:89
DataInformationBase::asPointer
PointerDataInformation * asPointer()
PointerScriptClass::PointerScriptClass
PointerScriptClass(QScriptEngine *engine, ScriptHandlerInfo *handlerInfo)
Definition: pointerscriptclass.cpp:29
PointerScriptClass::s_type
QScriptString s_type
Definition: pointerscriptclass.h:41
PrimitiveScriptClass::additionalProperty
virtual QScriptValue additionalProperty(const DataInformation *data, const QScriptString &name, uint id)
Definition: primitivescriptclass.cpp:111
DataInformation::logger
ScriptLogger * logger() const
Definition: datainformation.cpp:134
PrimitiveDataInformation::type
virtual PrimitiveDataType type() const =0
PointerScriptClass::additionalProperty
virtual QScriptValue additionalProperty(const DataInformation *data, const QScriptString &name, uint id)
Definition: pointerscriptclass.cpp:42
PointerDataInformation::pointerTarget
DataInformation * pointerTarget() const
Definition: pointerdatainformation.h:84
PointerScriptClass::~PointerScriptClass
virtual ~PointerScriptClass()
Definition: pointerscriptclass.cpp:38
ParserStrings::PROPERTY_TYPE
const QString PROPERTY_TYPE
Definition: parserutils.h:130
DefaultScriptClass::mHandlerInfo
ScriptHandlerInfo * mHandlerInfo
Definition: defaultscriptclass.h:84
PointerDataInformation::setPointerType
bool setPointerType(DataInformation *type)
Set a new pointer target.
Definition: pointerdatainformation.cpp:145
DataInformation::toScriptValue
virtual QScriptValue toScriptValue(QScriptEngine *engine, ScriptHandlerInfo *handlerInfo)
This method is virtual since DummyDataInformation has to override it.
Definition: datainformation.cpp:275
PointerScriptClass::s_target
QScriptString s_target
Definition: pointerscriptclass.h:40
PrimitiveScriptClass
Definition: primitivescriptclass.h:29
PrimitiveType::standardTypeName
QString standardTypeName(PrimitiveDataType type)
Definition: primitivedatatype.cpp:76
DefaultScriptClass::mIterableProperties
PropertyInfoList mIterableProperties
Contains all properties of this class, classes inheriting should add their own properties to this lis...
Definition: defaultscriptclass.h:82
PointerDataInformation::pointerType
PrimitiveDataInformation * pointerType() const
Definition: pointerdatainformation.h:96
ScriptHandlerInfo
Definition: scripthandlerinfo.h:39
PrimitiveScriptClass::queryAdditionalProperty
virtual bool queryAdditionalProperty(const DataInformation *data, const QScriptString &name, QScriptClass::QueryFlags *flags, uint *id)
Definition: primitivescriptclass.cpp:84
ScriptValueConverter::convert
DataInformation * convert(const QScriptValue &value, const QString &name, ScriptLogger *logger, DataInformation *parent)
If the value is one element.
Definition: scriptvalueconverter.cpp:36
PointerScriptClass::setAdditionalProperty
virtual bool setAdditionalProperty(DataInformation *data, const QScriptString &name, uint id, const QScriptValue &value)
Definition: pointerscriptclass.cpp:68
pointerscriptclass.h
PrimitiveScriptClass::setAdditionalProperty
virtual bool setAdditionalProperty(DataInformation *data, const QScriptString &name, uint id, const QScriptValue &value)
Definition: primitivescriptclass.cpp:169
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
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