Basically the changes are: Replace ? by detachable indexing by note removing `is' from features, and in some places replaced by = In the ecf now we need to include every gobo library, because the gobo.ecf, exclude libraries that are needed. TODO: the test-suite is not void-safety.
100 lines
2.3 KiB
Plaintext
100 lines
2.3 KiB
Plaintext
note
|
|
|
|
description: "JSON Numbers, octal and hexadecimal formats are not used."
|
|
author: "Javier Velilla"
|
|
date: "2008/08/24"
|
|
revision: "Revision 0.1"
|
|
license:"MIT (see http://www.opensource.org/licenses/mit-license.php)"
|
|
|
|
class
|
|
JSON_NUMBER
|
|
|
|
inherit
|
|
JSON_VALUE
|
|
redefine
|
|
is_equal
|
|
end
|
|
|
|
create
|
|
make_integer,
|
|
make_natural,
|
|
make_real
|
|
|
|
feature {NONE} -- initialization
|
|
|
|
make_integer (an_argument: INTEGER_64)
|
|
-- Initialize an instance of JSON_NUMBER from the integer value of `an_argument'.
|
|
do
|
|
item := an_argument.out
|
|
numeric_type := INTEGER_TYPE
|
|
end
|
|
|
|
make_natural (an_argument: NATURAL_64)
|
|
-- Initialize an instance of JSON_NUMBER from the unsigned integer value of `an_argument'.
|
|
do
|
|
item := an_argument.out
|
|
numeric_type := NATURAL_TYPE
|
|
end
|
|
|
|
make_real (an_argument: DOUBLE)
|
|
-- Initialize an instance of JSON_NUMBER from the floating point value of `an_argument'.
|
|
do
|
|
item := an_argument.out
|
|
numeric_type := DOUBLE_TYPE
|
|
end
|
|
|
|
feature -- Access
|
|
|
|
item: STRING
|
|
-- Content
|
|
|
|
hash_code: INTEGER
|
|
--Hash code value
|
|
do
|
|
Result := item.hash_code
|
|
end
|
|
|
|
representation: STRING
|
|
do
|
|
Result := item
|
|
end
|
|
|
|
feature -- Visitor pattern
|
|
|
|
accept (a_visitor: JSON_VISITOR)
|
|
-- Accept `a_visitor'.
|
|
-- (Call `visit_json_number' procedure on `a_visitor'.)
|
|
do
|
|
a_visitor.visit_json_number (Current)
|
|
end
|
|
|
|
feature -- Status
|
|
|
|
is_equal (other: like Current): BOOLEAN
|
|
-- Is `other' attached to an object of the same type
|
|
-- as current object and identical to it?
|
|
do
|
|
Result := item.is_equal (other.item)
|
|
end
|
|
|
|
feature -- Status report
|
|
|
|
debug_output: STRING
|
|
-- String that should be displayed in debugger to represent `Current'.
|
|
do
|
|
Result := item
|
|
end
|
|
|
|
feature -- Implementation
|
|
|
|
INTEGER_TYPE: INTEGER = 1
|
|
DOUBLE_TYPE: INTEGER = 2
|
|
NATURAL_TYPE: INTEGER = 3
|
|
|
|
numeric_type: INTEGER
|
|
|
|
invariant
|
|
item_not_void: item /= Void
|
|
|
|
end
|