indexing description: "[ XML filter for parsing the highscore. ]" date: "$Date$" revision: "$Revision$" class EM_HIGHSCORE_XM_CALLBACKS_FILTER inherit XM_CALLBACKS_FILTER redefine on_start, on_start_tag, on_start_tag_finish, on_attribute end create make_null, set_next feature -- xml parsing on_start is do checksum := 0 client_id := 0 create highscore.make_default end on_start_tag (a_namespace: STRING; a_prefix: STRING; a_local_part: STRING) is do current_tag := a_local_part if current_tag.as_lower.is_equal ("entry") then highscore.start highscore.put_last (create {EM_HIGHSCORE_ENTRY}.make_default) end Precursor(a_namespace, a_prefix, a_local_part) end on_start_tag_finish is do current_tag := void Precursor end on_attribute (a_namespace: STRING; a_prefix: STRING; a_local_part: STRING; a_value: STRING) is do if current_tag.as_lower.is_equal ("entry") then highscore.last.force (a_value, a_local_part) elseif current_tag.as_lower.is_equal("checksum") then if a_local_part.as_lower.is_equal ("value") and then a_value.is_integer then checksum := a_value.to_integer end elseif current_tag.as_lower.is_equal ("client_id") then if a_local_part.as_lower.is_equal ("value") and then a_value.is_integer then client_id := a_value.to_integer end end Precursor (a_namespace, a_prefix, a_local_part, a_value) end feature -- xml content highscore: DS_LINKED_LIST[EM_HIGHSCORE_ENTRY] checksum: INTEGER client_id: INTEGER feature {NONE} -- implementation current_name: STRING current_score: INTEGER current_tag: STRING end