Mercurial > hg > CbC > CbC_gcc
diff gcc/ada/libgnat/g-sets.adb @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | |
children | 1830386684a0 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gcc/ada/libgnat/g-sets.adb Thu Oct 25 07:37:49 2018 +0900 @@ -0,0 +1,131 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT RUN-TIME COMPONENTS -- +-- -- +-- G N A T . S E T S -- +-- -- +-- B o d y -- +-- -- +-- Copyright (C) 2018, AdaCore -- +-- -- +-- GNAT is free software; you can redistribute it and/or modify it under -- +-- terms of the GNU General Public License as published by the Free Soft- -- +-- ware Foundation; either version 3, or (at your option) any later ver- -- +-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- +-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- +-- or FITNESS FOR A PARTICULAR PURPOSE. -- +-- -- +-- As a special exception under Section 7 of GPL version 3, you are granted -- +-- additional permissions described in the GCC Runtime Library Exception, -- +-- version 3.1, as published by the Free Software Foundation. -- +-- -- +-- You should have received a copy of the GNU General Public License and -- +-- a copy of the GCC Runtime Library Exception along with this program; -- +-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- +-- <http://www.gnu.org/licenses/>. -- +-- -- +-- GNAT was originally developed by the GNAT team at New York University. -- +-- Extensive contributions were provided by Ada Core Technologies Inc. -- +-- -- +------------------------------------------------------------------------------ + +package body GNAT.Sets is + + -------------------- + -- Membership_Set -- + -------------------- + + package body Membership_Set is + + -------------- + -- Contains -- + -------------- + + function Contains (S : Instance; Elem : Element_Type) return Boolean is + begin + return Hashed_Set.Get (Hashed_Set.Instance (S), Elem); + end Contains; + + ------------ + -- Create -- + ------------ + + function Create (Initial_Size : Positive) return Instance is + begin + return Instance (Hashed_Set.Create (Initial_Size)); + end Create; + + ------------ + -- Delete -- + ------------ + + procedure Delete (S : Instance; Elem : Element_Type) is + begin + Hashed_Set.Delete (Hashed_Set.Instance (S), Elem); + end Delete; + + ------------- + -- Destroy -- + ------------- + + procedure Destroy (S : in out Instance) is + begin + Hashed_Set.Destroy (Hashed_Set.Instance (S)); + end Destroy; + + -------------- + -- Has_Next -- + -------------- + + function Has_Next (Iter : Iterator) return Boolean is + begin + return Hashed_Set.Has_Next (Hashed_Set.Iterator (Iter)); + end Has_Next; + + ------------ + -- Insert -- + ------------ + + procedure Insert (S : Instance; Elem : Element_Type) is + begin + Hashed_Set.Put (Hashed_Set.Instance (S), Elem, True); + end Insert; + + -------------- + -- Is_Empty -- + -------------- + + function Is_Empty (S : Instance) return Boolean is + begin + return Hashed_Set.Is_Empty (Hashed_Set.Instance (S)); + end Is_Empty; + + ------------- + -- Iterate -- + ------------- + + function Iterate (S : Instance) return Iterator is + begin + return Iterator (Hashed_Set.Iterate (Hashed_Set.Instance (S))); + end Iterate; + + ---------- + -- Next -- + ---------- + + procedure Next (Iter : in out Iterator; Elem : out Element_Type) is + begin + Hashed_Set.Next (Hashed_Set.Iterator (Iter), Elem); + end Next; + + ---------- + -- Size -- + ---------- + + function Size (S : Instance) return Natural is + begin + return Hashed_Set.Size (Hashed_Set.Instance (S)); + end Size; + end Membership_Set; + +end GNAT.Sets;