This commit is contained in:
Valk Richard Li 2020-07-28 20:58:39 -07:00 committed by GitHub
parent 29a206c220
commit 7a36174789
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 34 additions and 0 deletions

View File

@ -11,6 +11,7 @@ private:
std::vector<int> elems;
public:
nasal_vector();
~nasal_vector();
void add_elem(int);
int del_elem(int);
};
@ -21,6 +22,7 @@ private:
std::map<std::string,int> elems;
public:
nasal_hash();
~nasal_hash();
void add_elem(std::string,int);
void del_elem(std::string);
};
@ -32,6 +34,7 @@ private:
nasal_ast function_tree;
public:
nasal_function();
~nasal_function();
};
class nasal_closure
{
@ -40,6 +43,7 @@ private:
std::map<std::string,int> elems;
public:
nasal_closure();
~nasal_closure();
};
class nasal_scalar
@ -97,6 +101,14 @@ nasal_vector::nasal_vector()
elems.clear();
return;
}
nasal_vector::~nasal_vector()
{
int size=elems.size();
for(int i=0;i<size;++i)
nasal_vm.mem_free(elems[i]);
elems.clear();
return;
}
void nasal_vector::add_elem(int memory_address)
{
elems.push_back(memory_address);
@ -118,6 +130,13 @@ nasal_hash::nasal_hash()
elems.clear();
return;
}
nasal_hash::~nasal_hash()
{
for(std::map<std::string,int>::iterator iter=elems.begin();iter!=elems.end();++iter)
nasal_vm.mem_free(iter->second);
elems.clear();
return;
}
void nasal_hash::add_elem(std::string key,int memory_address)
{
elems[key]=memory_address;
@ -137,6 +156,14 @@ nasal_function::nasal_function()
function_tree.clear();
return;
}
nasal_function::~nasal_function()
{
for(std::list<int>::iterator iter=closures.begin();iter!=closures.end();++iter)
nasal_vm.mem_free(*iter);
closures.clear();
function_tree.clear();
return;
}
/*functions of nasal_closure*/
nasal_closure::nasal_closure()
@ -144,6 +171,13 @@ nasal_closure::nasal_closure()
elems.clear();
return;
}
nasal_closure::~nasal_closure()
{
for(std::map<std::string,int>::iterator iter=elems.begin();iter!=elems.end();++iter)
nasal_vm.mem_free(iter->second);
elems.clear();
return;
}
/*functions of nasal_scalar*/
nasal_scalar::nasal_scalar()