| | |
| | | //预设参数解析用 |
| | | typedef u32 (*ParamCtrl_fn)(IModule* m, void* handle, int &plen); |
| | | //参数控制用 |
| | | typedef u32 (*Ctrl_fn)(IModule* m, u32 pID, s16* val_c); |
| | | typedef u32 (*Ctrl_fn)(IModule* m, u32 pID, s16* val_c, u32 num); |
| | | |
| | | class ParamEntry { |
| | | private: |
| | |
| | | Ctrl_fn ctrl; |
| | | |
| | | public: |
| | | ParamCtrl_fn GetParamEntry(){ |
| | | ParamCtrl_fn GetParamEntry() const { |
| | | return param; |
| | | } |
| | | |
| | | Ctrl_fn GetCtrlEntry(){ |
| | | Ctrl_fn GetCtrlEntry() const { |
| | | return ctrl; |
| | | } |
| | | ParamEntry() : param(nullptr), ctrl(nullptr) {} |
| | |
| | | }; |
| | | |
| | | class param_ctrl_t{ |
| | | protected: |
| | | std::map<u32, ParamEntry> mctrl_list; |
| | | |
| | | public: |
| | | // 返回pair避免重复查找 |
| | | std::pair<ParamCtrl_fn, Ctrl_fn> 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<u32, ParamEntry> mctrl_list; |
| | | public: |
| | |
| | | if(mctrl_list.count(mtype)) |
| | | return mctrl_list[mtype].GetCtrlEntry(); |
| | | else |
| | | return NULL; |
| | | return NULL; |
| | | } |
| | | }; |
| | | };*/ |
| | | |
| | | |
| | | |