#include "variablelist.h"
bool Variablelist::exist(const char* name)
{
return (get_id(name) != -1);
}
bool Variablelist::add(const char* name, double value)
{
VAR new_var;
strncpy(new_var.name, name, 30);
new_var.value = value;
int id = get_id(name);
if (id == -1)
{
var.push_back(new_var);
}
else
{
var[id] = new_var;
}
return true;
}
bool Variablelist::del(const char* name)
{
int id = get_id(name);
if (id != -1)
{
var[id] = var[var.size()-1]; var.pop_back(); return true;
}
return false;
}
bool Variablelist::get_value(const char* name, double* value)
{
int id = get_id(name);
if (id != -1)
{
*value = var[id].value;
return true;
}
return false;
}
bool Variablelist::get_value(const int id, double* value)
{
if (id >=0 && id < var.size())
{
*value = var[id].value;
return true;
}
return false;
}
bool Variablelist::set_value(const char* name, const double value)
{
return add(name, value);
}
int Variablelist::get_id(const char* name)
{
char nameU[NAME_LEN_MAX+1];
char varU[NAME_LEN_MAX+1];
toupper(nameU, name);
for (int i = 0; i < var.size(); i++)
{
toupper(varU, var[i].name);
if (strcmp(nameU, varU) == 0)
{
return i;
}
}
return -1;
}
void toupper(char upper[], const char str[])
{
int i = -1;
do
{
i++;
upper[i] = toupper(str[i]);
}
while (str[i] != '\0');
}