This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
tango-tsg-service-chaining-…/common/src/utils.cpp
2023-02-08 18:11:33 +08:00

63 lines
1.3 KiB
C++

#include <string.h>
#include <assert.h>
#include "utils.h"
#include "log.h"
void fixed_num_array_init(struct fixed_num_array *array)
{
memset(array, 0, sizeof(fixed_num_array));
array->num = 0;
array->size = sizeof(array->elems) / sizeof(array->elems[0]);
}
void fixed_num_array_add_elem(struct fixed_num_array *array, int elem)
{
if (array->num < array->size)
{
array->elems[array->num] = elem;
array->num++;
}
else
{
LOG_ERROR("%s: fixed num array add elem too much !!!", LOG_TAG_UTILS);
}
}
void fixed_num_array_del_elem(struct fixed_num_array *array, int elem)
{
for (int i = 0; i < array->num; i++)
{
if (array->elems[i] == elem)
{
if (i + 1 != array->size)
{
memmove(&(array->elems[i]), &(array->elems[i + 1]), sizeof(array->elems[0]) * (array->num - i - 1));
}
i--;
array->num--;
}
}
}
int fixed_num_array_count_elem(struct fixed_num_array *array)
{
if (array)
{
return array->num;
}
else
{
return 0;
}
}
int fixed_num_array_index_elem(struct fixed_num_array *array, int index)
{
if (index >= array->num)
{
assert(0);
}
return array->elems[index];
}