.gitignore
[prop.git] / prop-src / env.pcc
blob30bd10a6bf84ae876523b1b16c3aaf5d17420749
1 ///////////////////////////////////////////////////////////////////////////////
2 //
3 //  Environment  
4 //
5 ///////////////////////////////////////////////////////////////////////////////
6 #include "env.h"
8 ///////////////////////////////////////////////////////////////////////////////
9 //
10 //  Constructor and destructor
12 ///////////////////////////////////////////////////////////////////////////////
13 Env::Env() : env(string_hash,string_equal) {}
14 Env::Env(const Env& E) : env(string_hash,string_equal) 
15 {  foreach_entry(i,E.env) env.insert(i->k,i->v); }
16 Env::~Env() {}
18 ///////////////////////////////////////////////////////////////////////////////
20 //  Type lookup
22 ///////////////////////////////////////////////////////////////////////////////
23 Ty Env::operator () (Id id) const 
24 {  HashTable::Entry * e = env.lookup(id);
25    if (e) return (Ty)(e->v); else return NOty; 
28 ///////////////////////////////////////////////////////////////////////////////
30 //  Insert a new entry to the environment
32 ///////////////////////////////////////////////////////////////////////////////
33 void Env::bind(Id id, Ty ty) {  env.insert(id,ty); }