CliCmd_RedirectTable/CliRedirectTable.h

41 lines
1.1 KiB
C

//
// Created by zemon on 11.11.22.
//
#ifndef UVEOS_ON_NATION_CLIREDIRECTTABLE_H
#define UVEOS_ON_NATION_CLIREDIRECTTABLE_H
#include <stdint.h>
#include <stdbool.h>
#include "CliCmd.h"
#include "BaseTypes.h"
typedef int32_t (*cliCall)(void *env, tCliCmd *cli);
typedef struct {
tStringStatic cmd;
cliCall method;
void *env;
} tCliRedirectItem;
typedef struct {
tCliRedirectItem *items;
uint16_t count;
uint16_t itemsLimit;
} tCliRedirectTable;
void CliRedirectionTable_Init(tCliRedirectTable *baseTable, tCliRedirectItem *mem, uint16_t itemsLimit);
#define CliRedirectionTable_InitStatic(TAB, MEM) CliRedirectionTable_Init(TAB,MEM,sizeof(MEM)/sizeof(tCliRedirectItem))
bool CliRedirectionTable_RecAdd(tCliRedirectTable *baseTable, char *cmdStatic, uint8_t cmdLen, cliCall mtd, void *env);
#define CliRedirectionTable_RecAddStatic(TAB, CMD, CALL, ENV) CliRedirectionTable_RecAdd(TAB,CMD,sizeof (CMD)-1,CALL,ENV)
int32_t CliRedirectionTable_ProcessCmd(tCliRedirectTable *env, tCliCmd *cmd);
int32_t CliRedirectionTable_ListCmd(tCliRedirectTable *env, tCliCmd *cmd, char divider);
#endif //UVEOS_ON_NATION_CLIREDIRECTTABLE_H