48 lines
1008 B
C
48 lines
1008 B
C
//
|
|
// Created by CFIF on 01.11.22.
|
|
//
|
|
|
|
#include <stddef.h>
|
|
#include <memory.h>
|
|
#include "XfcProtTable.h"
|
|
|
|
void XfcProtTable_Init(tXfcProtTable *env, tXfcProtProcessor *allocatedMem, uint16_t memLimit) {
|
|
env->limit = memLimit;
|
|
env->items = allocatedMem;
|
|
env->count = 0;
|
|
memset(env->items, 0, env->limit * sizeof(tXfcProtProcessor));
|
|
}
|
|
|
|
bool XfcProtTable_Add(
|
|
tXfcProtTable *env,
|
|
char *staticStringTextId,
|
|
uint8_t textIdLen,
|
|
tXfcProtMethod method,
|
|
void *args
|
|
) {
|
|
if (env->limit <= env->count) {
|
|
return false;
|
|
}
|
|
tXfcProtProcessor *proc = env->items + env->count;
|
|
|
|
proc->textId = staticStringTextId;
|
|
proc->textIdLen = textIdLen;
|
|
proc->args = args;
|
|
proc->process = method;
|
|
|
|
++env->count;
|
|
|
|
return true;
|
|
}
|
|
|
|
|
|
tXfcProtProcessor *XfcProtTable_GetForId(tXfcProtTable *env, uint16_t id) {
|
|
if ((id < env->count) && env->items[id].process) {
|
|
return &env->items[id];
|
|
} else {
|
|
return NULL;
|
|
}
|
|
}
|
|
|
|
|