⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 grt-hooks.adb

📁 vhdl集成电路设计软件.需要用gcc-4.0.2版本编译.
💻 ADB
字号:
--  GHDL Run Time (GRT) -  Hooks.--  Copyright (C) 2002, 2003, 2004, 2005 Tristan Gingold----  GHDL is free software; you can redistribute it and/or modify it under--  the terms of the GNU General Public License as published by the Free--  Software Foundation; either version 2, or (at your option) any later--  version.----  GHDL is distributed in the hope that it will be useful, but WITHOUT ANY--  WARRANTY; without even the implied warranty of MERCHANTABILITY or--  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License--  for more details.----  You should have received a copy of the GNU General Public License--  along with GCC; see the file COPYING.  If not, write to the Free--  Software Foundation, 59 Temple Place - Suite 330, Boston, MA--  02111-1307, USA.package body Grt.Hooks is   type Hooks_Cell;   type Hooks_Cell_Acc is access Hooks_Cell;   type Hooks_Cell is record      Hooks : Hooks_Acc;      Next : Hooks_Cell_Acc;   end record;   First_Hooks : Hooks_Cell_Acc := null;   Last_Hooks : Hooks_Cell_Acc := null;   procedure Register_Hooks (Hooks : Hooks_Acc)   is      Cell : Hooks_Cell_Acc;   begin      Cell := new Hooks_Cell'(Hooks => Hooks,                              Next => null);      if Last_Hooks = null then         First_Hooks := Cell;      else         Last_Hooks.Next := Cell;      end if;      Last_Hooks := Cell;   end Register_Hooks;   type Hook_Cell;   type Hook_Cell_Acc is access Hook_Cell;   type Hook_Cell is record      Hook : Proc_Hook_Type;      Next : Hook_Cell_Acc;   end record;   --  Chain of cycle hooks.   Cycle_Hook : Hook_Cell_Acc := null;   Last_Cycle_Hook : Hook_Cell_Acc := null;   procedure Register_Cycle_Hook (Proc : Proc_Hook_Type)   is      Cell : Hook_Cell_Acc;   begin      Cell := new Hook_Cell'(Hook => Proc,                             Next => null);      if Cycle_Hook = null then         Cycle_Hook := Cell;      else         Last_Cycle_Hook.Next := Cell;      end if;      Last_Cycle_Hook := Cell;   end Register_Cycle_Hook;   procedure Call_Cycle_Hooks   is      Cell : Hook_Cell_Acc;   begin      Cell := Cycle_Hook;      while Cell /= null loop         Cell.Hook.all;         Cell := Cell.Next;      end loop;   end Call_Cycle_Hooks;   function Call_Option_Hooks (Opt : String) return Boolean   is      Cell : Hooks_Cell_Acc;   begin      Cell := First_Hooks;      while Cell /= null loop         if Cell.Hooks.Option /= null           and then Cell.Hooks.Option.all (Opt)         then            return True;         end if;         Cell := Cell.Next;      end loop;      return False;   end Call_Option_Hooks;   procedure Call_Help_Hooks   is      Cell : Hooks_Cell_Acc;   begin      Cell := First_Hooks;      while Cell /= null loop         if Cell.Hooks.Help /= null then            Cell.Hooks.Help.all;         end if;         Cell := Cell.Next;      end loop;   end Call_Help_Hooks;   procedure Call_Init_Hooks   is      Cell : Hooks_Cell_Acc;   begin      Cell := First_Hooks;      while Cell /= null loop         if Cell.Hooks.Init /= null then            Cell.Hooks.Init.all;         end if;         Cell := Cell.Next;      end loop;   end Call_Init_Hooks;   procedure Call_Start_Hooks   is      Cell : Hooks_Cell_Acc;   begin      Cell := First_Hooks;      while Cell /= null loop         if Cell.Hooks.Start /= null then            Cell.Hooks.Start.all;         end if;         Cell := Cell.Next;      end loop;   end Call_Start_Hooks;   procedure Call_Finish_Hooks   is      Cell : Hooks_Cell_Acc;   begin      Cell := First_Hooks;      while Cell /= null loop         if Cell.Hooks.Finish /= null then            Cell.Hooks.Finish.all;         end if;         Cell := Cell.Next;      end loop;   end Call_Finish_Hooks;   procedure Proc_Hook_Nil is   begin      null;   end Proc_Hook_Nil;end Grt.Hooks;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -