This class can map strings(commands) and functions receiving no arguments returning an int value.
Dependents: Interference_Simple StrCommandHandler_Demo
StrCommandHandler.h
- Committer:
- aktk
- Date:
- 2020-08-10
- Revision:
- 4:59a5e39e3e91
- Parent:
- 3:049a5f083f32
File content as of revision 4:59a5e39e3e91:
#ifndef STR_COMMAND_HANDLER_H #define STR_COMMAND_HANDLER_H #include "mbed.h" #include <string> /** Maps strings and functions * * This class can map strings(commands) and functions receiving no arguments * returning int. */ class StrCommandHandler { public: StrCommandHandler( int const arg_num_ofcommand = 10 ); /** Maps strings and functions * * This maps strings(commands) and functions receiving own command, * returning something of pointer. */ void map( const char * const arg_command, void * (*arg_pfunc)(const char * const) ); /** Analyzes a command input and executs a function corresponding to it. * * This analyzes a string(commands) and executs a corresponding function. * If an error occur, the function returns an error code * Error code: * - Exception of NULL pointer returns 0xFFFFFFFF * - Exception of Null character returna 0xFFFFFFFE * - Exception of Over length returns 0xFFFFFFFD * - Exception of Not registered Command returns 0xFFFFFFFC; */ void * exe( const char* const arg_command ); /** Lists commands registered * * This lists commands registered by users. */ void list(); static char const * const ARROW_UP; /// ascii code series arrow-up symbol 0x1b 0x5b, 0x41 static char const * const ARROW_DOWN; /// ascii code series arrow-up symbol 0x1b 0x5b, 0x42 static char const * const ARROW_RIGHT; /// ascii code series arrow-up symbol 0x1b 0x5b, 0x43 static char const * const ARROW_LEFT; /// ascii code series arrow-up symbol 0x1b 0x5b, 0x44 private: /** Array of commands' name * * The length should be within 15 without last '\0' * The number of the array is (int)m_numofcommands */ char (*m_command_name)[16]; /** Array of pointers to functions * * The number of the array is (int)m_numofcommands */ void * (**m_function)(const char * const); /** Numbers of commands registered in this. * * If commands are registered over this value, * this value increase by 5, and arrays get reallocated. */ int m_num_ofcommands; /** Result code of exe() * * This is supposed to be offered by pointer */ int m_rescode; }; #endif