indexing
description: "Structures that can be searched"
library: "Gobo Eiffel Structure Library"
author: "Eric Bezault <ericb@gobo.demon.co.uk>"
copyright: "Copyright (c) 1997, Eric Bezault"
deferred class interface
DS_SEARCHABLE [G]
feature -- Access
searcher: DS_SEARCHER [G]
-- Structure searcher
feature -- Measurement
count: INTEGER
-- Number of items in structure
-- (from DS_CONTAINER)
occurrences (v: G): INTEGER
-- Number of times v appears in structure
-- (Use searcher's comparison criterion.)
ensure
positive: Result >= 0;
has: has (v) implies Result >= 1
feature -- Comparison
is_equal (other: like Current): BOOLEAN
-- Is current structure equal to other?
-- (from DS_CONTAINER)
require -- from GENERAL
other_not_void: other /= void
ensure -- from GENERAL
symmetric: Result implies other.is_equal (Current);
consistent: standard_is_equal (other) implies Result
ensure then -- from DS_CONTAINER
same_count: Result implies count = other.count
feature -- Status report
has (v: G): BOOLEAN
-- Does structure incluse v?
-- (Use searcher's comparison criterion.)
ensure
not_empty: Result implies not is_empty
is_empty: BOOLEAN
-- Is structure empty?
-- (from DS_CONTAINER)
feature -- Removal
wipe_out
-- Remove all items from structure.
-- (from DS_CONTAINER)
ensure -- from DS_CONTAINER
wipe_out: is_empty
feature -- Setting
set_searcher (a_searcher: like searcher)
-- Set searcher to a_searcher.
require
a_searcher_not_void: a_searcher /= void
ensure
searcher_set: searcher = a_searcher
invariant
-- from GENERAL
reflexive_equality: standard_is_equal (Current);
reflexive_conformance: conforms_to (Current);
searcher_not_void: searcher /= void;
-- from DS_CONTAINER
positive_count: count >= 0;
empty_definition: is_empty = (count = 0);
end -- class DS_SEARCHABLE