File indexing completed on 2024-09-22 05:15:54
0001 /* 0002 This file is part of the Okteta Kasten Framework, made within the KDE community. 0003 0004 SPDX-FileCopyrightText: 2011, 2012 Alex Richardson <alex.richardson@gmx.de> 0005 0006 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0007 */ 0008 0009 #ifndef KASTEN_SCRIPTHANDLERINFO_HPP 0010 #define KASTEN_SCRIPTHANDLERINFO_HPP 0011 0012 // Std 0013 #include <memory> 0014 0015 class EnumScriptClass; 0016 class StructUnionScriptClass; 0017 class ArrayScriptClass; 0018 class PrimitiveScriptClass; 0019 class StringScriptClass; 0020 class BitfieldScriptClass; 0021 class PointerScriptClass; 0022 class QScriptEngine; 0023 class ScriptLogger; 0024 0025 class ScriptHandlerInfo 0026 { 0027 public: 0028 explicit ScriptHandlerInfo(QScriptEngine* engine, ScriptLogger* logger); 0029 ScriptHandlerInfo(const ScriptHandlerInfo&) = delete; 0030 0031 ~ScriptHandlerInfo(); 0032 0033 ScriptHandlerInfo& operator=(const ScriptHandlerInfo&) = delete; 0034 0035 /** The type of function that is being evaluated (most writing is only allowed when updating) */ 0036 enum class Mode 0037 { 0038 None = 0, 0039 Validating = 1, 0040 Updating = 2, 0041 DeterminingLength = 4, 0042 TaggedUnionSelection = 8, 0043 CustomToString = 16, 0044 InterpretingPointer = 32, 0045 }; 0046 0047 std::unique_ptr<ArrayScriptClass> mArrayClass; 0048 std::unique_ptr<PrimitiveScriptClass> mPrimitiveClass; 0049 std::unique_ptr<EnumScriptClass> mEnumClass; 0050 std::unique_ptr<StructUnionScriptClass> mStructUnionClass; 0051 std::unique_ptr<StringScriptClass> mStringClass; 0052 std::unique_ptr<BitfieldScriptClass> mBitfieldClass; 0053 std::unique_ptr<PointerScriptClass> mPointerClass; 0054 0055 /** @return The mode this handler is currently in (determines which properties are accessible */ 0056 Mode mode() const; 0057 void setMode(Mode m); 0058 ScriptLogger* logger() const; 0059 0060 private: 0061 ScriptLogger* mLogger; 0062 Mode mMode = Mode::None; 0063 }; 0064 0065 #endif // KASTEN_SCRIPTHANDLERINFO_HPP