X-Git-Url: http://git.buserror.net/cgi-bin/gitweb.cgi?p=polintos%2Fscott%2Fpriv.git;a=blobdiff_plain;f=idlcomp%2Fnamespace.cc;h=a2fe015b0ffad9cf59b32a8dc2044c47d35147b4;hp=ad5f543ba26501b8625f7963994ae58666f5fd7c;hb=eec2efc14a0d624d475dc89e2bcb962e7c081df5;hpb=9d85df0ee463512a1733fc8c7dd7514f2ec79c8c diff --git a/idlcomp/namespace.cc b/idlcomp/namespace.cc index ad5f543..a2fe015 100644 --- a/idlcomp/namespace.cc +++ b/idlcomp/namespace.cc @@ -2,23 +2,15 @@ // // This software is copyright (c) 2006 Scott Wood . // -// Permission is hereby granted, free of charge, to any person obtaining a copy of -// this software and associated documentation files (the "Software"), to deal with -// the Software without restriction, including without limitation the rights to -// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -// of the Software, and to permit persons to whom the Software is furnished to do -// so, subject to the following condition: +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors or contributors be held liable for any damages +// arising from the use of this software. // -// The above copyright notice and this permission notice shall be -// included in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE -// SOFTWARE. +// Permission is hereby granted to everyone, free of charge, to use, copy, +// modify, prepare derivative works of, publish, distribute, perform, +// sublicense, and/or sell copies of the Software, provided that the above +// copyright notice and disclaimer of warranty be included in all copies or +// substantial portions of this software. #include #include @@ -281,7 +273,10 @@ void NameSpace::add_import(Symbol *sym, const char *filename) Symbol::~Symbol() { - if (ns && !ns->dying) { + if (lang_priv) + lang_priv->release(); + + if (ns) { try { ns->del(this); } @@ -292,6 +287,29 @@ Symbol::~Symbol() } } +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;