-- -- Author: Robert C. Shock, Dept of CS & CEG Wright State University -- In cooperation with: WRDC/ELED WPAFB Dayton, OH -- -- Source: transliterate_gn__.a -- generic type item is private; type enum is ( <> ); type array_range_enum is array ( enum ) of item; array_values: array_range_enum; with function equal ( the_left_item: in item; the_right_item: in item ) return boolean is <>; package transliterate_gn is function is_a_member ( for_the_item: in item ) return boolean; function value_is return enum; no_value_exception: exception; end transliterate_gn; ------------------------------------------------------------------------------------------------------------------ package body transliterate_gn is g_value_is_known: boolean := false; g_the_enumeration_value: enum; function is_a_member ( for_the_item: in item ) return boolean is begin for element in enum loop if equal ( array_values ( element ), for_the_item ) then g_value_is_known := true; g_the_enumeration_value := element; return true; end if; end loop; g_value_is_known := false; return false; end is_a_member; function value_is return enum is begin if g_value_is_known then return g_the_enumeration_value; else raise no_value_exception; end if; end value_is; end transliterate_gn;