#include #include "fun.h" #ifndef NULL #define NULL 0 #endif fun::fun() : name(NULL), numParams(0), params(NULL), numToks(0), toks(NULL) { } fun::fun(const char* name, const unsigned int numParams, char** params, const unsigned int numToks, const token* toks) : numParams(numParams), numToks(numToks) { this->name = new char[strlen(name) + 1]; strcpy(this->name, name); this->params = new char*[numParams]; for(unsigned int i = 0; i < numParams; i++) { this->params[i] = new char[strlen(params[i]) + 1]; strcpy(this->params[i], params[i]); } this->toks = new token[numToks]; for(i = 0; i < numToks; i++) this->toks[i] = toks[i]; } fun::fun(const fun& f2) : numParams(f2.numParams), numToks(f2.numToks) { name = new char[strlen(f2.name) + 1]; strcpy(name, f2.name); params = new char*[numParams]; for(unsigned int i = 0; i < numParams; i++) { params[i] = new char[strlen(f2.params[i]) + 1]; strcpy(params[i], f2.params[i]); } toks = new token[numToks]; for(i = 0; i < numToks; i++) toks[i] = f2.toks[i]; } fun::~fun() { delete[] name; for(unsigned int i = 0; i < numParams; i++) delete[] params[i]; delete[] params; delete[] toks; } const fun& fun::operator =(const fun& f2) { if(this != &f2) { delete[] name; for(unsigned int i = 0; i < numParams; i++) delete[] params[i]; delete[] params; delete[] toks; name = new char[strlen(f2.name) + 1]; strcpy(name, f2.name); numParams = f2.numParams; params = new char*[numParams]; for(i = 0; i < numParams; i++) { params[i] = new char[strlen(f2.params[i]) + 1]; strcpy(params[i], f2.params[i]); } numToks = f2.numToks; toks = new token[numToks]; for(i = 0; i < numToks; i++) toks[i] = f2.toks[i]; } return *this; }