indexing description: "[ An JSON_OBJECT represent an object in JSON. An object is an unordered set of name/value pairs Examples: object {} {"key","value"} ]" author: "Javier Velilla" date: "2008/08/24" revision: "Revision 0.1" license:"MIT (see http://www.opensource.org/licenses/mit-license.php)" class JSON_OBJECT inherit JSON_VALUE create make feature -- Initialization make is -- Initialize do create object.make (10) end feature -- Change Element put (value: JSON_VALUE ; key: JSON_STRING) is -- Assuming there is no item of key `key', -- insert `value' with `key'. require not_present: not has_key (key) local l_json_null: JSON_NULL l_value: JSON_VALUE do l_value:=value if value = Void then create l_json_null l_value:=l_json_null end object.extend (l_value,key) end feature -- Access has_key (key: JSON_STRING):BOOLEAN is -- has the JSON_OBJECT contains a specific key 'key'. do Result := object.has (key) end has_item (value: JSON_VALUE):BOOLEAN is -- has the JSON_OBJECT contain a specfic item 'value' do Result := object.has_item (value) end item (key: JSON_STRING):JSON_VALUE is -- the json_value associated with a key. do Result:= object.item (key) end current_keys: ARRAY [JSON_STRING] is -- array containing actually used keys do Result:=object.current_keys end feature -- Visitor pattern accept (a_visitor: JSON_VISITOR) is -- Accept `a_visitor'. -- (Call `visit_json_object' procedure on `a_visitor'.) do a_visitor.visit_json_object (Current) end feature -- Conversion map_representation: HASH_TABLE[JSON_VALUE,JSON_STRING] is --A representation that maps keys to values do Result:=object end feature -- Report hash_code: INTEGER is -- Hash code value local do from object.start Result := object.item_for_iteration.hash_code until object.off loop Result := ((Result \\ 8388593) |<< 8) + object.item_for_iteration.hash_code object.forth end -- Ensure it is a positive value. Result := Result.hash_code end feature {NONE} -- Implementation object: HASH_TABLE[JSON_VALUE,JSON_STRING] invariant object_not_null: object /= Void end