if (lang_priv)
lang_priv->release();
- if (ns && !ns->dying) {
+ if (ns) {
try {
ns->del(this);
}
}
}
+NameSpace::~NameSpace()
+{
+ tbl_type::iterator i = tbl.begin();
+ while (i != tbl.end()) {
+ Symbol *sym = (*i).second;
+ ++i;
+
+ try {
+ del(sym);
+ }
+
+ catch (SymbolNotFound) {
+ fprintf(stderr, "SymbolNotFound in NameSpace::~NameSpace(), cannot propagate\n");
+ }
+
+ catch (InternalError &e) {
+ fprintf(stderr, "InternalError %s:%d in NameSpace::~NameSpace(), cannot propagate\n", e.file, e.line);
+ }
+ }
+
+ assert(tbl.empty());
+}
+
StrList *Symbol::get_fq_name(const char *append, bool not_last) const
{
StrList *ret;