133 lines
2.2 KiB
Plaintext
133 lines
2.2 KiB
Plaintext
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
|