File indexing completed on 2024-04-28 16:44:51

0001 #ifndef ACTION_DATA_VISITOR_H
0002 #define ACTION_DATA_VISITOR_H
0003 /**
0004  * SPDX-FileCopyrightText: 2009 Michael Jansen <kde@michael-jansen.biz>
0005  *
0006  * SPDX-License-Identifier: LGPL-2.0-or-later
0007  */
0008 
0009 namespace KHotKeys
0010 {
0011 class ActionData;
0012 class ActionDataBase;
0013 class ActionDataGroup;
0014 class Generic_action_data;
0015 class MenuEntryShortcutActionData;
0016 class SimpleActionData;
0017 template<typename T, typename A> class SimpleActionDataHelper;
0018 
0019 /**
0020  * @author Michael Jansen <kde@michael-jansen.biz>
0021  */
0022 class ActionDataVisitor
0023 {
0024 public:
0025     ActionDataVisitor();
0026 
0027     virtual ~ActionDataVisitor();
0028 
0029     virtual void visitActionDataBase(ActionDataBase *base);
0030 
0031     virtual void visitActionData(ActionData *base) = 0;
0032 
0033     virtual void visitActionDataGroup(ActionDataGroup *group) = 0;
0034 
0035     virtual void visitGenericActionData(Generic_action_data *data) = 0;
0036 
0037     virtual void visitMenuentryShortcutActionData(MenuEntryShortcutActionData *data) = 0;
0038 
0039     virtual void visitSimpleActionData(SimpleActionData *data) = 0;
0040 
0041 }; // ActionDataVisitor
0042 
0043 /**
0044  * @author Michael Jansen <kde@michael-jansen.biz>
0045  */
0046 class ActionDataConstVisitor
0047 {
0048 public:
0049     ActionDataConstVisitor();
0050 
0051     virtual ~ActionDataConstVisitor();
0052 
0053     virtual void visitActionDataBase(const ActionDataBase *base);
0054 
0055     virtual void visitActionData(const ActionData *base) = 0;
0056 
0057     virtual void visitActionDataGroup(const ActionDataGroup *group) = 0;
0058 
0059     virtual void visitGenericActionData(const Generic_action_data *data) = 0;
0060 
0061     virtual void visitMenuentryShortcutActionData(const MenuEntryShortcutActionData *data) = 0;
0062 
0063     virtual void visitSimpleActionData(const SimpleActionData *data) = 0;
0064 
0065     template<typename T, typename A> KHotKeys::ActionDataBase *visitSimpleActionDataHelper(const KHotKeys::SimpleActionDataHelper<T, A> *object);
0066 
0067 private:
0068 }; // ActionDataConstVisitor
0069 
0070 } // KHotKeys
0071 
0072 #endif /* ACTION_DATA_VISITOR_H */