1 #ifndef ACTION_DATA_VISITOR_H 2 #define ACTION_DATA_VISITOR_H 3 /** 4 * SPDX-FileCopyrightText: 2009 Michael Jansen <kde@michael-jansen.biz> 5 * 6 * SPDX-License-Identifier: LGPL-2.0-or-later 7 */ 8 9 namespace KHotKeys 10 { 11 class ActionData; 12 class ActionDataBase; 13 class ActionDataGroup; 14 class Generic_action_data; 15 class MenuEntryShortcutActionData; 16 class SimpleActionData; 17 template<typename T, typename A> class SimpleActionDataHelper; 18 19 /** 20 * @author Michael Jansen <kde@michael-jansen.biz> 21 */ 22 class ActionDataVisitor 23 { 24 public: 25 ActionDataVisitor(); 26 27 virtual ~ActionDataVisitor(); 28 29 virtual void visitActionDataBase(ActionDataBase *base); 30 31 virtual void visitActionData(ActionData *base) = 0; 32 33 virtual void visitActionDataGroup(ActionDataGroup *group) = 0; 34 35 virtual void visitGenericActionData(Generic_action_data *data) = 0; 36 37 virtual void visitMenuentryShortcutActionData(MenuEntryShortcutActionData *data) = 0; 38 39 virtual void visitSimpleActionData(SimpleActionData *data) = 0; 40 41 }; // ActionDataVisitor 42 43 /** 44 * @author Michael Jansen <kde@michael-jansen.biz> 45 */ 46 class ActionDataConstVisitor 47 { 48 public: 49 ActionDataConstVisitor(); 50 51 virtual ~ActionDataConstVisitor(); 52 53 virtual void visitActionDataBase(const ActionDataBase *base); 54 55 virtual void visitActionData(const ActionData *base) = 0; 56 57 virtual void visitActionDataGroup(const ActionDataGroup *group) = 0; 58 59 virtual void visitGenericActionData(const Generic_action_data *data) = 0; 60 61 virtual void visitMenuentryShortcutActionData(const MenuEntryShortcutActionData *data) = 0; 62 63 virtual void visitSimpleActionData(const SimpleActionData *data) = 0; 64 65 template<typename T, typename A> KHotKeys::ActionDataBase *visitSimpleActionDataHelper(const KHotKeys::SimpleActionDataHelper<T, A> *object); 66 67 private: 68 }; // ActionDataConstVisitor 69 70 } // KHotKeys 71 72 #endif /* ACTION_DATA_VISITOR_H */ 73