#include "tk_enumoption.h"

const string TkEnumOption::TXT_ERROR="ERROR: Invalid value.";

int TkEnumOption::valueInArray(const char* value)
{
	if (value==0) return -1;
	int i=0;
	while(enums[i]!=0)
	{
		if (strcmp(enums[i],value)==0) return i;
		i++;
	}
	return -1;
}

TkEnumOption::TkEnumOption(const char* value,const char* enums[]):
	enums(enums)
{
	this->value=valueInArray(value);
}

TkEnumOption::TkEnumOption(int value,const char* enums[]):
	value(value),enums(enums)
{
}

const string& TkEnumOption::toString() const
{
	if (value==-1) return TXT_ERROR;
	return *(new string(enums[value]));
}

void TkEnumOption::fromObject(Tcl_Obj* object)
{
	this->value=valueInArray(Tcl_GetString(object));
}

void TkEnumOption::doSerialize(TiXmlElement& element) const
{
	element.SetAttribute("value",value);
}

void TkEnumOption::doDeserialize(const TiXmlElement& element)
{
	element.Attribute("value",&value);
}
