141 lines
2.7 KiB
C++
141 lines
2.7 KiB
C++
#ifndef __NASAL_VAR_CPP__
|
|
#define __NASAL_VAR_CPP__
|
|
|
|
var::var()
|
|
{
|
|
type=VAR_NONE;
|
|
data=NULL;
|
|
}
|
|
var::var(const var &temp)
|
|
{
|
|
type=temp.type;
|
|
switch(type)
|
|
{
|
|
case VAR_NONE:
|
|
data=NULL;
|
|
break;
|
|
case VAR_LLINT:
|
|
data=new long long int;
|
|
*((long long int *)data)=*((long long int *)temp.data);
|
|
break;
|
|
case VAR_DOUBLE:
|
|
data=new double;
|
|
*((double *)data)=*((double *)temp.data);
|
|
break;
|
|
case VAR_CHAR:
|
|
data=new char;
|
|
*((char *)data)=*((char *)temp.data);
|
|
break;
|
|
case VAR_STRING:
|
|
data=new std::string;
|
|
*((std::string *)data)=*((std::string *)temp.data);
|
|
break;
|
|
case VAR_LIST:
|
|
data=new nasal_list;
|
|
*((nasal_list *)data)=*((nasal_list *)temp.data);
|
|
break;
|
|
case VAR_HASH:
|
|
data=new nasal_hash;
|
|
*((nasal_hash *)data)=*((nasal_hash *)temp.data);
|
|
break;
|
|
case VAR_FUNC:
|
|
data=new func;
|
|
*((func *)data)=*((func *)temp.data);
|
|
break;
|
|
}
|
|
}
|
|
var::~var()
|
|
{
|
|
if(data)
|
|
switch(type)
|
|
{
|
|
case VAR_LLINT:
|
|
delete (long long int *)data;
|
|
break;
|
|
case VAR_DOUBLE:
|
|
delete (double *)data;
|
|
break;
|
|
case VAR_CHAR:
|
|
delete (char *)data;
|
|
break;
|
|
case VAR_STRING:
|
|
delete (std::string *)data;
|
|
break;
|
|
case VAR_LIST:
|
|
delete (nasal_list *)data;
|
|
break;
|
|
case VAR_HASH:
|
|
delete (nasal_hash *)data;
|
|
break;
|
|
case VAR_FUNC:
|
|
delete (func *)data;
|
|
break;
|
|
}
|
|
}
|
|
var& var::operator=(const var &temp)
|
|
{
|
|
if(data)
|
|
switch(type)
|
|
{
|
|
case VAR_LLINT:
|
|
delete (long long int *)data;
|
|
break;
|
|
case VAR_DOUBLE:
|
|
delete (double *)data;
|
|
break;
|
|
case VAR_CHAR:
|
|
delete (char *)data;
|
|
break;
|
|
case VAR_STRING:
|
|
delete (std::string *)data;
|
|
break;
|
|
case VAR_LIST:
|
|
delete (nasal_list *)data;
|
|
break;
|
|
case VAR_HASH:
|
|
delete (nasal_hash *)data;
|
|
break;
|
|
case VAR_FUNC:
|
|
delete (func *)data;
|
|
break;
|
|
}
|
|
type=temp.type;
|
|
switch(type)
|
|
{
|
|
case VAR_NONE:
|
|
data=NULL;
|
|
break;
|
|
case VAR_LLINT:
|
|
data=new long long int;
|
|
*((long long int *)data)=*((long long int *)temp.data);
|
|
break;
|
|
case VAR_DOUBLE:
|
|
data=new double;
|
|
*((double *)data)=*((double *)temp.data);
|
|
break;
|
|
case VAR_CHAR:
|
|
data=new char;
|
|
*((char *)data)=*((char *)temp.data);
|
|
break;
|
|
case VAR_STRING:
|
|
data=new std::string;
|
|
*((std::string *)data)=*((std::string *)temp.data);
|
|
break;
|
|
case VAR_LIST:
|
|
data=new nasal_list;
|
|
*((nasal_list *)data)=*((nasal_list *)temp.data);
|
|
break;
|
|
case VAR_HASH:
|
|
data=new nasal_hash;
|
|
*((nasal_hash *)data)=*((nasal_hash *)temp.data);
|
|
break;
|
|
case VAR_FUNC:
|
|
data=new func;
|
|
*((func *)data)=*((func *)temp.data);
|
|
break;
|
|
}
|
|
return *this;
|
|
}
|
|
|
|
#endif
|