void AST_Root::destroy (void) { long i = 0; AST_Decl *d = 0; // Just destroy and delete everything but the CORBA // module, and the 'void' keyword, in case we are // processing multiple IDL files. // Final cleanup will be done in fini(). long end = this->pd_decls_used; for (i = 2; i < end; ++i) { d = this->pd_decls[i]; d->destroy (); delete d; d = 0; --this->pd_decls_used; } // Same goes for the references and the name // references, leave the first 2. // This array of pointers holds references, no need // for destruction. The array itself will be cleaned // up when AST_Root::fini() calls UTL_Scope::destroy (). for (i = 2; i < this->pd_referenced_used; ++i) { this->pd_referenced[i] = 0; } this->pd_referenced_used = 2; for (i = 2; i < this->pd_name_referenced_used; ++i) { Identifier *id = this->pd_name_referenced[i]; id->destroy (); delete id; id = 0; } this->pd_name_referenced_used = 2; }