diff options
Diffstat (limited to 'include/mode.h')
-rw-r--r-- | include/mode.h | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/include/mode.h b/include/mode.h index e20815549..bfe4041b9 100644 --- a/include/mode.h +++ b/include/mode.h @@ -85,6 +85,7 @@ enum ParamSpec }; class PrefixMode; +class ListModeBase; /** Each mode is implemented by ONE ModeHandler class. * You must derive ModeHandler and add the child class to @@ -106,6 +107,7 @@ class CoreExport ModeHandler : public ServiceProvider enum Class { MC_PREFIX, + MC_LIST, MC_OTHER }; @@ -178,11 +180,18 @@ class CoreExport ModeHandler : public ServiceProvider bool IsListMode() const { return list; } /** - * Returns a PrefixMode* if this mode is a prefix mode, NULL otherwise + * Check whether this mode is a prefix mode + * @return non-NULL if this mode is a prefix mode, NULL otherwise */ PrefixMode* IsPrefixMode(); /** + * Check whether this mode handler inherits from ListModeBase + * @return non-NULL if this mode handler inherits from ListModeBase, NULL otherwise + */ + ListModeBase* IsListModeBase(); + + /** * Returns the mode's type */ inline ModeType GetModeType() const { return m_type; } @@ -678,3 +687,8 @@ inline PrefixMode* ModeHandler::IsPrefixMode() { return (this->type_id == MC_PREFIX ? static_cast<PrefixMode*>(this) : NULL); } + +inline ListModeBase* ModeHandler::IsListModeBase() +{ + return (this->type_id == MC_LIST ? reinterpret_cast<ListModeBase*>(this) : NULL); +} |