typedef boost::variant ref_var; macro* nDB::create_macro(char* myName) { macro* tmp_macro = new macro; tmp_macro->set_name(myName); if (_BREF->insert(std::make_pair(myName,*tmp_macro)).second) { printf("Insert macro %s OK!\n",myName); } else { printf("Could not insert macro %s into database!\n",myName); } return (tmp_macro); } ref_var* nDB::lookup_ref(char* myName) { boost::unordered_map::iterator _ITER; if ((_ITER = _BREF->find(myName)) == _BREF->end()) { printf("ERROR:: Could not find macro %s in database \n",myName); exit(0); } else { _ITER = _BREF->find(myName); printf("Ref %s is found\n",myName); } ref_var* ref = new ref_var; *ref = (_ITER->second); macro *mac = boost::get(ref); printf("Macro class is %s\n",mac->get_class()); return(ref); }