Akifumi Takahashi / StrCommandHandler

Dependents:   Interference_Simple StrCommandHandler_Demo

StrCommandHandler.h

Committer:
aktk
Date:
2019-10-31
Revision:
0:024213917a9f
Child:
1:1d46d90eb7bf

File content as of revision 0:024213917a9f:

#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
    );

    int map(
        const char * const   arg_command,
        int (*arg_pfunc)(void)
    );

    int exe(
        const char* const   arg_command
    );

    void list();

    template<typename T>
    T analyzeValue(
        const char* const   arg_value_str
    );

private:
    /** Array of commands' name
     *
     *   The length should be within 15 without last '\0'
     */
    char (*m_command_name)[16];

    /** Array of pointers to functions
     *
     *   The length should be within 15 without last '\0'
     */
    int (**m_function)(void);

    /** 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;
};
#endif