#include "test.h" #include account::account(lua_State *vm) { if (lua_isnumber(vm, 0)) { balance = lua_tonumber(vm, 0); std::cout << "Account balance: $" << balance << "." << std::endl; } else { std::cout << "ERROR: Could not create account!" << std::endl; } } int account::withdraw(lua_State *vm) { int withdrawAmount = 0; if (lua_isnumber(vm, 0)) { withdrawAmount = lua_tonumber(vm, 0); balance -= withdrawAmount; std::cout << "$" << withdrawAmount << " withdrawn." << std::endl; if (balance < 0) { std::cout << "WARNING: Over withdrawn!" << std::endl; } } else { std::cout << "Could not make withdraw!" << std::endl; } return 0; } int account::deposit(lua_State *vm) { double depositAmount = 0; if (lua_isnumber(vm,0)) { depositAmount = lua_tonumber(vm, 0); balance += depositAmount; std::cout << "$" << depositAmount << " deposited." << std::endl; } return 0; } int account::getBalance(lua_State *vm) { lua_pushnumber(vm, balance); return 1; } int account::printBalance(lua_State *vm) { std::cout << "Current balance: $" << balance << "." << std::endl; return 0; } const char account::className[] = "account"; #define method(class, name) {#name, &class::name} Lunar::RegType account::methods[] = { method(account, withdraw), method(account, deposit), method(account, getBalance), method(account, printBalance), {0,0} };