Mercurial > repo
diff interps/glass/variable.cc @ 996:859f9b4339e6
<Gregor> tar xf egobot.tar.xz
author | HackBot |
---|---|
date | Sun, 09 Dec 2012 19:30:08 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/interps/glass/variable.cc Sun Dec 09 19:30:08 2012 +0000 @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2005 Gregor Richards + * + * This file is part of Glass. + * + * Glass 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. + * + * Glass 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 Glass; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "variable.h" + +void Variable::init() +{ + type = VAR_NUMBER; + nval = 0.0; + sval = ""; + kval = NULL; + kival = NULL; + fval = NULL; +} + +Variable::Variable() { init(); } + +Variable::Variable(int stype, double val) +{ + init(); + if (stype == VAR_NUMBER) { + nval = val; + } +} + +Variable::Variable(int stype, string val) +{ + init(); + if (stype == VAR_VARIABLEP || + stype == VAR_STRING) { + type = stype; + sval = val; + } +} + +Variable::Variable(int stype, void *val) +{ + init(); + if (stype == VAR_KLASS) { + type = stype; + kval = (Klass *) val; + } else if (stype == VAR_KLASSI) { + type = stype; + kival = (KlassI *) val; + } else if (stype == VAR_FUNC) { + type = stype; + fval = (Func *) val; + } +} + +Variable::Variable(int stype, void *vala, void *valb) +{ + init(); + if (stype == VAR_FUNCI) { + type = stype; + kival = (KlassI *) vala; + fval = (Func *) valb; + } +} + +Variable::Variable(Variable ©) +{ + mkcopy(copy); +} + +void Variable::mkcopy(Variable ©) +{ + type = copy.type; + nval = copy.nval; + sval = copy.sval; + kval = copy.kval; + kival = copy.kival; + fval = copy.fval; +}