X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firhooks.c;h=52b8422b94789873909956684dd081eda46d20b4;hb=945c6c2ceebef5e41c0486c31f49d2319cacb3da;hp=e5b6bcf9a2dabffdf5c3198443524238191d9157;hpb=1a3b7d363474ab544c13093a2f0b578718d37c7a;p=libfirm diff --git a/ir/ir/irhooks.c b/ir/ir/irhooks.c index e5b6bcf9a..52b8422b9 100644 --- a/ir/ir/irhooks.c +++ b/ir/ir/irhooks.c @@ -1,47 +1,34 @@ /* - * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. - * * This file is part of libFirm. - * - * This file may be distributed and/or modified under the terms of the - * GNU General Public License version 2 as published by the Free Software - * Foundation and appearing in the file LICENSE.GPL included in the - * packaging of this file. - * - * Licensees holding valid libFirm Professional Edition licenses may use - * this file in accordance with the libFirm Commercial License. - * Agreement provided with the Software. - * - * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE - * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE. + * Copyright (C) 2012 University of Karlsruhe. */ /** * @file * @brief Generic hooks for various libFirm functions. * @author Michael Beck - * @version $Id$ */ #include "config.h" +#include + #include "irhooks.h" -/* the hooks */ hook_entry_t *hooks[hook_last]; -/* register a hook */ void register_hook(hook_type_t hook, hook_entry_t *entry) { /* check if a hook function is specified. It's a union, so no matter which one */ if (! entry->hook._hook_turn_into_id) return; + /* hook should not be registered yet */ + assert(entry->next == NULL && hooks[hook] != entry); + entry->next = hooks[hook]; hooks[hook] = entry; } -/* unregister a hook */ void unregister_hook(hook_type_t hook, hook_entry_t *entry) { hook_entry_t *p; @@ -52,7 +39,8 @@ void unregister_hook(hook_type_t hook, hook_entry_t *entry) return; } - for (p = hooks[hook]; p && p->next != entry; p = p->next); + for (p = hooks[hook]; p && p->next != entry; p = p->next) { + } if (p) { p->next = entry->next;