1 2-- Copyright (C) 1996 Morgan Kaufmann Publishers, Inc 3 4-- This file is part of VESTs (Vhdl tESTs). 5 6-- VESTs is free software; you can redistribute it and/or modify it 7-- under the terms of the GNU General Public License as published by the 8-- Free Software Foundation; either version 2 of the License, or (at 9-- your option) any later version. 10 11-- VESTs is distributed in the hope that it will be useful, but WITHOUT 12-- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13-- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14-- for more details. 15 16-- You should have received a copy of the GNU General Public License 17-- along with VESTs; if not, write to the Free Software Foundation, 18-- Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 19 20-- --------------------------------------------------------------------- 21-- 22-- $Id: ch_17_fg_17_07.vhd,v 1.2 2001-10-26 16:29:36 paw Exp $ 23-- $Revision: 1.2 $ 24-- 25-- --------------------------------------------------------------------- 26 27entity fg_17_07 is 28 29end entity fg_17_07; 30 31 32---------------------------------------------------------------- 33 34 35architecture test of fg_17_07 is 36 37 signal s : bit_vector(0 to 3); 38 39begin 40 41 process is 42 43 type value_cell; 44 45 type value_ptr is access value_cell; 46 47 type value_cell is record 48 value : bit_vector(0 to 3); 49 next_cell : value_ptr; 50 end record value_cell; 51 52 variable value_list, current_cell : value_ptr; 53 variable search_value : bit_vector(0 to 3); 54 55 begin 56 value_list := new value_cell'( B"1000", value_list ); 57 value_list := new value_cell'( B"0010", value_list ); 58 value_list := new value_cell'( B"0000", value_list ); 59 60 search_value := B"0010"; 61 62 -- code from book: 63 64 current_cell := value_list; 65 while current_cell /= null 66 and current_cell.value /= search_value loop 67 current_cell := current_cell.next_cell; 68 end loop; 69 assert current_cell /= null 70 report "search for value failed"; 71 72 -- end of code from book 73 74 search_value := B"1111"; 75 76 current_cell := value_list; 77 while current_cell /= null 78 and current_cell.value /= search_value loop 79 current_cell := current_cell.next_cell; 80 end loop; 81 assert current_cell /= null 82 report "search for value failed"; 83 84 wait; 85 end process; 86 87end architecture test; 88