]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/ada/a-cohata.ads
2010-10-26 Matthew Heaney <heaney@adacore.com>
[thirdparty/gcc.git] / gcc / ada / a-cohata.ads
CommitLineData
7ce1e947 1------------------------------------------------------------------------------
2-- --
3-- GNAT LIBRARY COMPONENTS --
4-- --
ca64eb07 5-- A D A . C O N T A I N E R S . H A S H _ T A B L E S --
7ce1e947 6-- --
7-- S p e c --
8-- --
490beba6 9-- Copyright (C) 2004-2010, Free Software Foundation, Inc. --
ca64eb07 10-- --
11-- GNAT is free software; you can redistribute it and/or modify it under --
12-- terms of the GNU General Public License as published by the Free Soft- --
6bc9506f 13-- ware Foundation; either version 3, or (at your option) any later ver- --
ca64eb07 14-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
15-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
6bc9506f 16-- or FITNESS FOR A PARTICULAR PURPOSE. --
17-- --
18-- As a special exception under Section 7 of GPL version 3, you are granted --
19-- additional permissions described in the GCC Runtime Library Exception, --
20-- version 3.1, as published by the Free Software Foundation. --
21-- --
22-- You should have received a copy of the GNU General Public License and --
23-- a copy of the GCC Runtime Library Exception along with this program; --
24-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
25-- <http://www.gnu.org/licenses/>. --
ca64eb07 26-- --
27-- This unit was originally developed by Matthew J Heaney. --
7ce1e947 28------------------------------------------------------------------------------
29
72e2690a 30-- This package declares the hash-table type used to implement hashed
31-- containers.
32
7ce1e947 33package Ada.Containers.Hash_Tables is
5039558d 34 pragma Pure; -- so this can be imported by Remote_Types packages
7ce1e947 35
36 generic
ca64eb07 37 type Node_Type (<>) is limited private;
38
39 type Node_Access is access Node_Type;
7ce1e947 40
41 package Generic_Hash_Table_Types is
42 type Buckets_Type is array (Hash_Type range <>) of Node_Access;
43
5039558d 44 type Buckets_Access is access all Buckets_Type;
45 for Buckets_Access'Storage_Size use 0; -- so this package can be Pure
7ce1e947 46
ca64eb07 47 type Hash_Table_Type is tagged record
7ce1e947 48 Buckets : Buckets_Access;
49 Length : Count_Type := 0;
ca64eb07 50 Busy : Natural := 0;
51 Lock : Natural := 0;
7ce1e947 52 end record;
53 end Generic_Hash_Table_Types;
54
490beba6 55 generic
56 type Node_Type is private;
57 package Generic_Bounded_Hash_Table_Types is
58 type Nodes_Type is array (Count_Type range <>) of Node_Type;
59 type Buckets_Type is array (Hash_Type range <>) of Count_Type;
60
61 type Hash_Table_Type
62 (Capacity : Count_Type;
63 Modulus : Hash_Type) is
64 tagged record
65 Length : Count_Type := 0;
66 Busy : Natural := 0;
67 Lock : Natural := 0;
68 Free : Count_Type'Base := -1;
69 Nodes : Nodes_Type (1 .. Capacity);
70 Buckets : Buckets_Type (1 .. Modulus) := (others => 0);
71 end record;
72 end Generic_Bounded_Hash_Table_Types;
73
7ce1e947 74end Ada.Containers.Hash_Tables;