00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef CMD_GENERIC_HPP
00026 #define CMD_GENERIC_HPP
00027
00028 #include "../src/skin_common.hpp"
00029 #include "../utils/pointer.hpp"
00030
00031 #include <string>
00032
00033
00035 #define DEFINE_COMMAND( name, type ) \
00036 class Cmd##name: public CmdGeneric \
00037 { \
00038 public: \
00039 Cmd##name( intf_thread_t *pIntf ): CmdGeneric( pIntf ) {} \
00040 virtual ~Cmd##name() {} \
00041 virtual void execute(); \
00042 virtual string getType() const { return type; } \
00043 \
00044 };
00045
00046
00048 #define DEFINE_CALLBACK( parent, action ) \
00049 class Cmd##action: public CmdGeneric \
00050 { \
00051 public: \
00052 Cmd##action( parent *pParent ): \
00053 CmdGeneric( pParent->getIntf() ), m_pParent( pParent ) {} \
00054 virtual ~Cmd##action() {} \
00055 virtual void execute(); \
00056 virtual string getType() const { return "Cmd" #parent #action; } \
00057 private: \
00058 parent *m_pParent; \
00059 \
00060 } m_cmd##action; \
00061 friend class Cmd##action;
00062
00063
00065 class CmdGeneric: public SkinObject
00066 {
00067 public:
00068 virtual ~CmdGeneric() {}
00069
00071 virtual void execute() = 0;
00072
00074 virtual string getType() const { return ""; }
00075
00076 protected:
00077 CmdGeneric( intf_thread_t *pIntf ): SkinObject( pIntf ) {}
00078 };
00079
00080
00081 typedef CountedPtr<CmdGeneric> CmdGenericPtr;
00082
00083
00084 #endif