#include "tcl_doublevar.h"

const char* TclDoubleVar::type="TclDoubleVar";

const char* TclDoubleVar::getType() const
{
	return type;
}

TclDoubleVar::TclDoubleVar(Ptr<TclInterp>& interp):TclVar(interp)
{
//	value=0;
//	Tcl_LinkVar(interp->getInterp(),guid.getId().c_str(),(char*)&value,TCL_LINK_DOUBLE);
}

void TclDoubleVar::set(double value)
{
	Tcl_Obj* objValue=Tcl_NewDoubleObj(value);
	Tcl_ObjSetVar2(interp->getInterp(), objName, 0, objValue, TCL_GLOBAL_ONLY);
}

double TclDoubleVar::get() const
{
	double retValue;
	Tcl_Obj* obj=Tcl_ObjGetVar2(interp->getInterp(),objName,0,TCL_GLOBAL_ONLY);
	Tcl_GetDoubleFromObj(interp->getInterp(),obj,&retValue);

	return retValue;
}

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

void TclDoubleVar::doDeserialize(const TiXmlElement& element)
{
	double doubleValue;
	element.Attribute("value",&doubleValue);
	set(doubleValue);
}
