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