/* * ctrl.h * * Created on: 2025Äê7ÔÂ23ÈÕ * Author: 86189 */ #ifndef PARAM_CTRL_H_ #define PARAM_CTRL_H_ #include #include "IModule.h" //Ô¤Éè²ÎÊý½âÎöÓà typedef u32 (*ParamCtrl_fn)(IModule* m, void* handle, int &plen); //²ÎÊý¿ØÖÆÓà typedef u32 (*Ctrl_fn)(IModule* m, u32 pID, s16* val_c, u32 num); class ParamEntry { private: //u16 module_type; ParamCtrl_fn param; Ctrl_fn ctrl; public: ParamCtrl_fn GetParamEntry() const { return param; } Ctrl_fn GetCtrlEntry() const { return ctrl; } ParamEntry() : param(nullptr), ctrl(nullptr) {} ParamEntry(ParamCtrl_fn fparam, Ctrl_fn fctrl){ //module_type = type; param = fparam; ctrl = fctrl; } }; class param_ctrl_t{ protected: std::map mctrl_list; public: // ·µ»Øpair±ÜÃâÖØ¸´²éÕÒ std::pair GetEntries(u32 mtype) const { auto it = mctrl_list.find(mtype); if(it != mctrl_list.end()) { return {it->second.GetParamEntry(), it->second.GetCtrlEntry()}; } return {nullptr, nullptr}; } ParamCtrl_fn GetParamEntry(u32 mtype) const { auto it = mctrl_list.find(mtype); return (it != mctrl_list.end()) ? it->second.GetParamEntry() : nullptr; } Ctrl_fn GetCtrlEntry(u32 mtype) const { auto it = mctrl_list.find(mtype); return (it != mctrl_list.end()) ? it->second.GetCtrlEntry() : nullptr; } // ¼ì²éÊÇ·ñ´æÔÚ bool HasEntry(u32 mtype) const { return mctrl_list.find(mtype) != mctrl_list.end(); } }; /*class param_ctrl_t{ protected: std::map mctrl_list; public: ParamCtrl_fn GetParamEntry(u32 mtype) { if(mctrl_list.count(mtype)) return mctrl_list[mtype].GetParamEntry(); else return NULL; } Ctrl_fn GetCtrlEntry(u32 mtype) { if(mctrl_list.count(mtype)) return mctrl_list[mtype].GetCtrlEntry(); else return NULL; } };*/ #endif /* PARAM_CTRL_H_ */