mirror of
https://git.rwth-aachen.de/acs/public/villas/node/
synced 2025-03-09 00:00:00 +01:00
refactor enums to class enums
This commit is contained in:
parent
2c6cc762dc
commit
d404e944da
12 changed files with 75 additions and 70 deletions
|
@ -30,7 +30,7 @@
|
|||
#include <villas/common.h>
|
||||
|
||||
struct buffer {
|
||||
enum state state;
|
||||
enum State state;
|
||||
|
||||
char *buf;
|
||||
size_t len;
|
||||
|
|
|
@ -24,25 +24,25 @@
|
|||
#pragma once
|
||||
|
||||
/* Common states for most objects in VILLAScommon (paths, nodes, hooks, plugins) */
|
||||
enum state {
|
||||
STATE_DESTROYED = 0,
|
||||
STATE_INITIALIZED = 1,
|
||||
STATE_PARSED = 2,
|
||||
STATE_CHECKED = 3,
|
||||
STATE_STARTED = 4,
|
||||
STATE_LOADED = 4, /* alias for STATE_STARTED used by struct plugin */
|
||||
STATE_OPENED = 4, /* alias for STATE_STARTED used by struct io */
|
||||
STATE_STOPPED = 5,
|
||||
STATE_UNLOADED = 5, /* alias for STATE_STARTED used by struct plugin */
|
||||
STATE_CLOSED = 5, /* alias for STATE_STARTED used by struct io */
|
||||
STATE_PENDING_CONNECT = 6,
|
||||
STATE_CONNECTED = 7,
|
||||
STATE_PAUSED = 8,
|
||||
STATE_STARTING = 9,
|
||||
STATE_STOPPING = 10,
|
||||
STATE_PAUSING = 11,
|
||||
STATE_RESUMING = 12,
|
||||
STATE_PREPARED = 13
|
||||
enum class State {
|
||||
DESTROYED = 0,
|
||||
INITIALIZED = 1,
|
||||
PARSED = 2,
|
||||
CHECKED = 3,
|
||||
STARTED = 4,
|
||||
LOADED = 4, /* alias for STARTED used by struct plugin */
|
||||
OPENED = 4, /* alias for STARTED used by struct io */
|
||||
STOPPED = 5,
|
||||
UNLOADED = 5, /* alias for STARTED used by struct plugin */
|
||||
CLOSED = 5, /* alias for STARTED used by struct io */
|
||||
PENDING_CONNECT = 6,
|
||||
CONNECTED = 7,
|
||||
PAUSED = 8,
|
||||
STARTING = 9,
|
||||
STOPPING = 10,
|
||||
PAUSING = 11,
|
||||
RESUMING = 12,
|
||||
PREPARED = 13
|
||||
};
|
||||
|
||||
/** Callback to destroy list elements.
|
||||
|
@ -52,4 +52,4 @@ enum state {
|
|||
typedef int (*dtor_cb_t)(void *);
|
||||
|
||||
/** Convert state enum to human readable string. */
|
||||
const char * state_print(enum state s);
|
||||
const char * state_print(enum State s);
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
/** Static list initialization */
|
||||
#define LIST_INIT_STATIC(l) \
|
||||
__attribute__((constructor(105))) static void UNIQUE(__ctor)() {\
|
||||
if ((l)->state == STATE_DESTROYED) \
|
||||
if ((l)->state == State::DESTROYED) \
|
||||
vlist_init(l); \
|
||||
} \
|
||||
__attribute__((destructor(105))) static void UNIQUE(__dtor)() { \
|
||||
|
@ -58,7 +58,7 @@ typedef int (*cmp_cb_t)(const void *, const void *);
|
|||
|
||||
/* The list data structure. */
|
||||
struct vlist {
|
||||
enum state state; /**< The state of this list. */
|
||||
enum State state; /**< The state of this list. */
|
||||
void **array; /**< Array of pointers to list elements */
|
||||
size_t capacity; /**< Size of list::array in elements */
|
||||
size_t length; /**< Number of elements of list::array which are in use */
|
||||
|
|
|
@ -37,7 +37,7 @@ class TableColumn {
|
|||
friend Table;
|
||||
|
||||
public:
|
||||
enum align {
|
||||
enum class Alignment {
|
||||
LEFT,
|
||||
RIGHT
|
||||
};
|
||||
|
@ -48,20 +48,20 @@ protected:
|
|||
int width; /**< Width of the column. */
|
||||
|
||||
public:
|
||||
TableColumn(int w, enum align a, const std::string &t, const std::string &f, const std::string &u = "") :
|
||||
TableColumn(int w, enum Alignment a, const std::string &t, const std::string &f, const std::string &u = "") :
|
||||
width(w),
|
||||
title(t),
|
||||
format(f),
|
||||
unit(u),
|
||||
align(a)
|
||||
{ }
|
||||
|
||||
|
||||
std::string title; /**< The title as shown in the table header. */
|
||||
std::string format; /**< The format which is used to print the table rows. */
|
||||
std::string unit; /**< An optional unit which will be shown in the table header. */
|
||||
|
||||
enum align align;
|
||||
|
||||
enum Alignment align;
|
||||
|
||||
int getWidth() const
|
||||
{
|
||||
return _width;
|
||||
|
@ -74,9 +74,9 @@ protected:
|
|||
int resize(int w);
|
||||
|
||||
int width;
|
||||
|
||||
|
||||
std::vector<TableColumn> columns;
|
||||
|
||||
|
||||
public:
|
||||
Table(const std::vector<TableColumn> &cols) :
|
||||
width(-1),
|
||||
|
|
|
@ -34,7 +34,7 @@ int buffer_init(struct buffer *b, size_t size)
|
|||
if (!b->buf)
|
||||
return -1;
|
||||
|
||||
b->state = STATE_INITIALIZED;
|
||||
b->state = State::INITIALIZED;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -44,7 +44,7 @@ int buffer_destroy(struct buffer *b)
|
|||
if (b->buf)
|
||||
free(b->buf);
|
||||
|
||||
b->state = STATE_DESTROYED;
|
||||
b->state = State::DESTROYED;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -25,42 +25,42 @@
|
|||
|
||||
#include <stdlib.h>
|
||||
|
||||
const char * state_print(enum state s)
|
||||
const char * state_print(enum State s)
|
||||
{
|
||||
switch (s) {
|
||||
case STATE_DESTROYED:
|
||||
case State::DESTROYED:
|
||||
return "destroyed";
|
||||
break;
|
||||
|
||||
case STATE_INITIALIZED:
|
||||
case State::INITIALIZED:
|
||||
return "initialized";
|
||||
break;
|
||||
|
||||
case STATE_PARSED:
|
||||
case State::PARSED:
|
||||
return "parsed";
|
||||
break;
|
||||
|
||||
case STATE_CHECKED:
|
||||
case State::CHECKED:
|
||||
return "checked";
|
||||
break;
|
||||
|
||||
case STATE_STARTED:
|
||||
case State::STARTED:
|
||||
return "running";
|
||||
break;
|
||||
|
||||
case STATE_STOPPED:
|
||||
case State::STOPPED:
|
||||
return "stopped";
|
||||
break;
|
||||
|
||||
case STATE_PENDING_CONNECT:
|
||||
case State::PENDING_CONNECT:
|
||||
return "pending-connect";
|
||||
break;
|
||||
|
||||
case STATE_CONNECTED:
|
||||
case State::CONNECTED:
|
||||
return "connected";
|
||||
break;
|
||||
|
||||
case STATE_PAUSED:
|
||||
case State::PAUSED:
|
||||
return "paused";
|
||||
break;
|
||||
|
||||
|
|
|
@ -165,9 +165,9 @@ void Hist::plot() const
|
|||
}
|
||||
|
||||
std::vector<TableColumn> cols = {
|
||||
{ -9, TableColumn::align::RIGHT, "Value", "%+9.3g" },
|
||||
{ -6, TableColumn::align::RIGHT, "Count", "%6ju" },
|
||||
{ 0, TableColumn::align::LEFT, "Plot", "%s", "occurences" }
|
||||
{ -9, TableColumn::Alignment::RIGHT, "Value", "%+9.3g" },
|
||||
{ -6, TableColumn::Alignment::RIGHT, "Count", "%6ju" },
|
||||
{ 0, TableColumn::Alignment::LEFT, "Plot", "%s", "occurences" }
|
||||
};
|
||||
|
||||
Table table = Table(cols);
|
||||
|
|
|
@ -55,14 +55,14 @@ static int cmp_sort(const void *a, const void *b, void *thunk) {
|
|||
|
||||
int vlist_init(struct vlist *l)
|
||||
{
|
||||
assert(l->state == STATE_DESTROYED);
|
||||
assert(l->state == State::DESTROYED);
|
||||
|
||||
pthread_mutex_init(&l->lock, nullptr);
|
||||
|
||||
l->length = 0;
|
||||
l->capacity = 0;
|
||||
l->array = nullptr;
|
||||
l->state = STATE_INITIALIZED;
|
||||
l->state = State::INITIALIZED;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -71,7 +71,7 @@ int vlist_destroy(struct vlist *l, dtor_cb_t destructor, bool release)
|
|||
{
|
||||
pthread_mutex_lock(&l->lock);
|
||||
|
||||
assert(l->state != STATE_DESTROYED);
|
||||
assert(l->state != State::DESTROYED);
|
||||
|
||||
for (size_t i = 0; i < vlist_length(l); i++) {
|
||||
void *e = vlist_at(l, i);
|
||||
|
@ -87,7 +87,7 @@ int vlist_destroy(struct vlist *l, dtor_cb_t destructor, bool release)
|
|||
l->length = -1;
|
||||
l->capacity = 0;
|
||||
l->array = nullptr;
|
||||
l->state = STATE_DESTROYED;
|
||||
l->state = State::DESTROYED;
|
||||
|
||||
pthread_mutex_unlock(&l->lock);
|
||||
pthread_mutex_destroy(&l->lock);
|
||||
|
@ -99,7 +99,7 @@ void vlist_push(struct vlist *l, void *p)
|
|||
{
|
||||
pthread_mutex_lock(&l->lock);
|
||||
|
||||
assert(l->state == STATE_INITIALIZED);
|
||||
assert(l->state == State::INITIALIZED);
|
||||
|
||||
/* Resize array if out of capacity */
|
||||
if (l->length >= l->capacity) {
|
||||
|
@ -117,7 +117,7 @@ int vlist_remove(struct vlist *l, size_t idx)
|
|||
{
|
||||
pthread_mutex_lock(&l->lock);
|
||||
|
||||
assert(l->state == STATE_INITIALIZED);
|
||||
assert(l->state == State::INITIALIZED);
|
||||
|
||||
if (idx >= l->length)
|
||||
return -1;
|
||||
|
@ -139,7 +139,7 @@ int vlist_insert(struct vlist *l, size_t idx, void *p)
|
|||
|
||||
pthread_mutex_lock(&l->lock);
|
||||
|
||||
assert(l->state == STATE_INITIALIZED);
|
||||
assert(l->state == State::INITIALIZED);
|
||||
|
||||
if (idx >= l->length)
|
||||
return -1;
|
||||
|
@ -171,7 +171,7 @@ void vlist_remove_all(struct vlist *l, void *p)
|
|||
|
||||
pthread_mutex_lock(&l->lock);
|
||||
|
||||
assert(l->state == STATE_INITIALIZED);
|
||||
assert(l->state == State::INITIALIZED);
|
||||
|
||||
for (size_t i = 0; i < vlist_length(l); i++) {
|
||||
if (vlist_at(l, i) == p)
|
||||
|
@ -211,7 +211,7 @@ int vlist_count(struct vlist *l, cmp_cb_t cmp, void *ctx)
|
|||
|
||||
pthread_mutex_lock(&l->lock);
|
||||
|
||||
assert(l->state == STATE_INITIALIZED);
|
||||
assert(l->state == State::INITIALIZED);
|
||||
|
||||
for (size_t i = 0; i < vlist_length(l); i++) {
|
||||
e = vlist_at(l, i);
|
||||
|
@ -230,7 +230,7 @@ void * vlist_search(struct vlist *l, cmp_cb_t cmp, void *ctx)
|
|||
|
||||
pthread_mutex_lock(&l->lock);
|
||||
|
||||
assert(l->state == STATE_INITIALIZED);
|
||||
assert(l->state == State::INITIALIZED);
|
||||
|
||||
for (size_t i = 0; i < vlist_length(l); i++) {
|
||||
e = vlist_at(l, i);
|
||||
|
@ -249,7 +249,7 @@ void vlist_sort(struct vlist *l, cmp_cb_t cmp)
|
|||
{
|
||||
pthread_mutex_lock(&l->lock);
|
||||
|
||||
assert(l->state == STATE_INITIALIZED);
|
||||
assert(l->state == State::INITIALIZED);
|
||||
|
||||
#ifdef __APPLE__
|
||||
qsort_r(l->array, l->length, sizeof(void *), (void *) cmp, cmp_sort);
|
||||
|
@ -277,7 +277,7 @@ ssize_t vlist_index(struct vlist *l, void *p)
|
|||
|
||||
pthread_mutex_lock(&l->lock);
|
||||
|
||||
assert(l->state == STATE_INITIALIZED);
|
||||
assert(l->state == State::INITIALIZED);
|
||||
|
||||
for (size_t i = 0; i < vlist_length(l); i++) {
|
||||
e = vlist_at(l, i);
|
||||
|
|
|
@ -55,7 +55,7 @@ Plugin::parse(json_t *cfg)
|
|||
return -1;
|
||||
|
||||
this->path = std::string(path);
|
||||
this->state = STATE_PARSED;
|
||||
this->state = State::PARSED;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -63,7 +63,7 @@ Plugin::parse(json_t *cfg)
|
|||
int
|
||||
Plugin::load()
|
||||
{
|
||||
assert(this->state == STATE_PARSED);
|
||||
assert(this->state == State::PARSED);
|
||||
assert(not this->path.empty());
|
||||
|
||||
this->handle = dlopen(this->path.c_str(), RTLD_NOW);
|
||||
|
@ -71,7 +71,7 @@ Plugin::load()
|
|||
if (this->handle == nullptr)
|
||||
return -1;
|
||||
|
||||
this->state = STATE_LOADED;
|
||||
this->state = State::LOADED;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -81,13 +81,13 @@ Plugin::unload()
|
|||
{
|
||||
int ret;
|
||||
|
||||
assert(this->state == STATE_LOADED);
|
||||
assert(this->state == State::LOADED);
|
||||
|
||||
ret = dlclose(this->handle);
|
||||
if (ret != 0)
|
||||
return -1;
|
||||
|
||||
this->state = STATE_UNLOADED;
|
||||
this->state = State::UNLOADED;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -141,8 +141,13 @@ void Popen::open()
|
|||
}
|
||||
|
||||
/* Change working directory */
|
||||
if (!working_dir.empty())
|
||||
chdir(working_dir.c_str());
|
||||
if (!working_dir.empty()) {
|
||||
int ret;
|
||||
|
||||
ret = chdir(working_dir.c_str());
|
||||
if (ret)
|
||||
exit(127);
|
||||
}
|
||||
|
||||
execvpe(shell ? _PATH_BSHELL : command.c_str(), (char * const *) argv.data(), (char * const *) envp.data());
|
||||
exit(127);
|
||||
|
|
|
@ -83,7 +83,7 @@ void Table::header()
|
|||
w = columns[i]._width + strlen(col) - strlenp(col);
|
||||
u = columns[i]._width + strlen(unit) - strlenp(unit);
|
||||
|
||||
if (columns[i].align == TableColumn::align::LEFT) {
|
||||
if (columns[i].align == TableColumn::Alignment::LEFT) {
|
||||
strcatf(&line1, " %-*.*s\e[0m", w, w, col);
|
||||
strcatf(&line2, " %-*.*s\e[0m", u, u, unit);
|
||||
}
|
||||
|
@ -133,7 +133,7 @@ void Table::row(int count, ...)
|
|||
int r = strlen(col);
|
||||
int w = columns[i]._width + r - l;
|
||||
|
||||
if (columns[i].align == TableColumn::align::LEFT)
|
||||
if (columns[i].align == TableColumn::Alignment::LEFT)
|
||||
strcatf(&line, " %-*.*s\e[0m ", w, w, col);
|
||||
else
|
||||
strcatf(&line, " %*.*s\e[0m ", w, w, col);
|
||||
|
|
|
@ -39,7 +39,7 @@ TestSuite(list, .description = "List datastructure");
|
|||
Test(list, vlist_lookup)
|
||||
{
|
||||
struct vlist l;
|
||||
l.state = STATE_DESTROYED;
|
||||
l.state = State::DESTROYED;
|
||||
|
||||
vlist_init(&l);
|
||||
|
||||
|
@ -62,7 +62,7 @@ Test(list, vlist_lookup)
|
|||
Test(list, vlist_search)
|
||||
{
|
||||
struct vlist l;
|
||||
l.state = STATE_DESTROYED;
|
||||
l.state = State::DESTROYED;
|
||||
|
||||
vlist_init(&l);
|
||||
|
||||
|
@ -103,7 +103,7 @@ static int dtor(void *ptr)
|
|||
Test(list, destructor)
|
||||
{
|
||||
struct vlist l;
|
||||
l.state = STATE_DESTROYED;
|
||||
l.state = State::DESTROYED;
|
||||
|
||||
struct content elm;
|
||||
elm.destroyed = 0;
|
||||
|
@ -123,7 +123,7 @@ Test(list, basics)
|
|||
uintptr_t i;
|
||||
int ret;
|
||||
struct vlist l;
|
||||
l.state = STATE_DESTROYED;
|
||||
l.state = State::DESTROYED;
|
||||
|
||||
vlist_init(&l);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue