All pastes #503112 Raw Edit

Anonymous

public text v1 · immutable
·published 2007-05-22 19:04 UTC
rendered paste body
/*         /\/\   __ _ _ __   __ _  ___ / _\ ___ _ __(_)_ __ | |_ 
 *        /    \ / _` | '_ \ / _` |/ _ \\ \ / __| '__| | '_ \| __|
 *       / /\/\ \ (_| | | | | (_| | (_) |\ \ (__| |  | | |_) | |_ 
 *       \/    \/\__,_|_| |_|\__, |\___/\__/\___|_|  |_| .__/ \__|
 *                           |___/                     |_|     
 *                        A WHOLE NEW WORLD
 *         MangoScript - Bringing a whole new world to MaNGOS
 *
 *      Lua_uin64.cpp - Adds support for uint64 to the LUA engine
 *
 *      (c) Copyright 2006-2007 by the MangoScript Team <http://www.mangoscript.org>
 *
 *      This program is free software; you can redistribute it and/or modify
 *      it under the terms of the GNU General Public License as published by
 *      the Free Software Foundation; either version 2 of the License, or
 *      (at your option) any later version.
 *  
 *      This program is distributed in the hope that it will be useful,
 *      but WITHOUT ANY WARRANTY; without even the implied warranty of
 *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *      GNU General Public License for more details.
 *  
 *      You should have received a copy of the GNU General Public License
 *      along with this program; if not, write to the Free Software
 *      Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 *      $Id: Lua_uint64.cpp 232 2007-04-19 11:59:13Z weedy $
 */

#include "luainc.h"
#include "Lua_uint64.h"
#include "Log.h"

lua_uint64::lua_uint64()
{
	m_val = 0;
}

lua_uint64::lua_uint64(const lua_uint64& val)
{
	this->m_val = val.m_val;
}

lua_uint64::lua_uint64(const uint32& val) //wont be exported but adds unit32 input support for unit64 
{
	this->m_val = val;
}

lua_uint64::lua_uint64(const double& val)
{
	this->m_val = (uint64)val;
}

lua_uint64::lua_uint64(const uint64& val) //wont be exported
{
	this->m_val = val;
}

lua_uint64::lua_uint64(const char* val)
{
	this->m_val = atol(val);   //this isnt good _strtoui64 may be better
}

void lua_uint64::set(const char* val)
{
	this->m_val = atol(val);   //this isnt good _strtoui64 may be better
}

void lua_uint64::set(lua_uint64& val)
{
	this->m_val = val.m_val;
}

lua_uint64& lua_uint64::operator=(lua_uint64& val)
{
	this->m_val = val.m_val;
	return *this;
}

lua_uint64 lua_uint64::operator+(lua_uint64& val)
{
	lua_uint64 res(*this);
	res.m_val += val.m_val;
	return res;
}

lua_uint64 lua_uint64::operator-(lua_uint64& val)
{
	lua_uint64 res(*this);
	res.m_val -= val.m_val;
	return res;
}

lua_uint64 lua_uint64::operator*(lua_uint64& val)
{
	lua_uint64 res(*this);
	res.m_val *= val.m_val;
	return res;
}

lua_uint64 lua_uint64::operator/(lua_uint64& val)
{
	lua_uint64 res(*this);
	res.m_val /= val.m_val;
	return res;
}

void lua_uint64::dump()
{
	debug_log("[LUA] Dumping uint64 %e", double(this->m_val));
}

int lb_Export_uint64(lua_State* L)
{
	using namespace luabind;
		   
	module(L)
	[
		class_<lua_uint64>("uint64")
			.def(constructor<>())
            .def(constructor<const double&>())
			.def(constructor<const lua_uint64&>())
			.def(constructor<const char*>())
			/*.def("get", &lua_uint64::dump)*/
			.def("set", (void (lua_uint64::*)(const char*))&lua_uint64::set)
			.def("set", (void (lua_uint64::*)(lua_uint64& val))&lua_uint64::set)
			.def(self + lua_uint64())
			.def(self - lua_uint64())
			.def(self * lua_uint64())
			.def(self / lua_uint64())
	];

	return 0;
}