indexing description: "[ Expanded objects that describe the alignment of two bounded objects (intervals or points). ]" author: "" date: "$Date$" revision: "$Revision$" expanded class EM_ALIGNMENT inherit ANY redefine default_create, out end EM_ALIGNMENT_CONSTANTS undefine default_create, out end create default_create, make_from_integer convert make_from_integer ({INTEGER}), to_integer: {INTEGER} feature -- Initialization default_create is -- User-specified alignment by default do set_user_specified end make_from_integer (v: like value) is -- Make new alignment from integer require valid_value: is_valid (v) do value := v ensure set: value = v end feature -- Status report is_valid (v: like value): BOOLEAN is -- Does `v' represent valid alignment? do Result := is_user_specified or is_lower or is_center or is_upper end feature -- Element change set_user_specified is -- User-specified aligment do value := Align_user_specified ensure then set: is_user_specified end set_lower is -- Aligment of lower boundaries do value := Align_lower ensure set: is_lower end set_center is -- Alignment of midpoints do value := Align_center ensure set: is_center end set_upper is -- Alignment of upper boundaries do value := Align_upper ensure set: is_upper end is_user_specified:BOOLEAN is -- User-specified alignment? do Result := value = Align_user_specified end is_lower: BOOLEAN is -- Alignment of lower boundaries? do Result := value = Align_lower end is_center: BOOLEAN is -- Alignment of midpoints? do Result := value = Align_center end is_upper: BOOLEAN is -- Alignment of upper boundaries? do Result := value = Align_upper end feature -- Basic operations feature -- Access value: INTEGER -- Enumeration value to_integer: INTEGER is -- Convert to integer do Result := value.to_integer end feature -- Output out: STRING is -- Terse printable representation do inspect value when Align_lower then Result := "Align_lower" when Align_center then Result := "Align_center" when Align_upper then Result := "Align_upper" when Align_user_specified then Result := "Align_user_specified" else Result := "Align_unknown" end end invariant valid_enumeration: is_valid (value) end