1 /* 2 This file is part of the Okteta Kasten Framework, made within the KDE community. 3 4 SPDX-FileCopyrightText: 2011, 2012 Alex Richardson <alex.richardson@gmx.de> 5 6 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 7 */ 8 9 #ifndef KASTEN_SCRIPTHANDLERINFO_HPP 10 #define KASTEN_SCRIPTHANDLERINFO_HPP 11 12 #include <QtGlobal> 13 #include <QScopedPointer> 14 15 class EnumScriptClass; 16 class StructUnionScriptClass; 17 class ArrayScriptClass; 18 class PrimitiveScriptClass; 19 class StringScriptClass; 20 class BitfieldScriptClass; 21 class PointerScriptClass; 22 class QScriptEngine; 23 class ScriptLogger; 24 25 class ScriptHandlerInfo 26 { 27 public: 28 explicit ScriptHandlerInfo(QScriptEngine* engine, ScriptLogger* logger); 29 ~ScriptHandlerInfo(); 30 31 /** The type of function that is being evaluated (most writing is only allowed when updating) */ 32 enum class Mode 33 { 34 None = 0, 35 Validating = 1, 36 Updating = 2, 37 DeterminingLength = 4, 38 TaggedUnionSelection = 8, 39 CustomToString = 16, 40 InterpretingPointer = 32, 41 }; 42 43 QScopedPointer<ArrayScriptClass> mArrayClass; 44 QScopedPointer<PrimitiveScriptClass> mPrimitiveClass; 45 QScopedPointer<EnumScriptClass> mEnumClass; 46 QScopedPointer<StructUnionScriptClass> mStructUnionClass; 47 QScopedPointer<StringScriptClass> mStringClass; 48 QScopedPointer<BitfieldScriptClass> mBitfieldClass; 49 QScopedPointer<PointerScriptClass> mPointerClass; 50 51 /** @return The mode this handler is currently in (determines which properties are accessible */ 52 Mode mode() const; 53 void setMode(Mode m); 54 ScriptLogger* logger() const; 55 56 private: 57 ScriptLogger* mLogger; 58 Mode mMode = Mode::None; 59 60 Q_DISABLE_COPY(ScriptHandlerInfo) 61 }; 62 63 #endif // KASTEN_SCRIPTHANDLERINFO_HPP 64