#include "tcl_intvar.h"

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

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

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

void TclIntVar::set(int value)
{
	Tcl_Obj* objValue=Tcl_NewIntObj(value);
	Tcl_ObjSetVar2(interp->getInterp(), objName, 0, objValue, TCL_GLOBAL_ONLY);
}

int TclIntVar::get() const
{
	int retValue;
	Tcl_Obj* obj=Tcl_ObjGetVar2(interp->getInterp(),objName,0,TCL_GLOBAL_ONLY);
	Tcl_GetIntFromObj(interp->getInterp(),obj,&retValue);

	return retValue;
}

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

void TclIntVar::doDeserialize(const TiXmlElement& element)
{
	int intValue;
	element.Attribute("value",&intValue);
	set(intValue);
}
