/library/kernel/json_array.e
http://github.com/Eiffel-World/ejson-ise-svn · Specman e · 141 lines · 103 code · 28 blank · 10 comment · 1 complexity · 5854eeed95af408a6fc7f7c2aa873b92 MD5 · raw file
- note
- description: "[
- JSON_ARRAY represent an array in JSON.
- An array in JSON is an ordered set of names.
- Examples
- array
- []
- [elements]
- ]"
-
- author: "Javier Velilla"
- date: "2008/08/24"
- revision: "Revision 0.1"
-
- class
- JSON_ARRAY
-
- inherit
- JSON_VALUE
-
- DEBUG_OUTPUT
-
- create
- make_array
-
- feature {NONE} -- Initialization
-
- make_array
- -- Initialize JSON Array
- do
- create values.make (10)
- end
-
- feature -- Access
-
- i_th alias "[]" (i: INTEGER): JSON_VALUE
- -- Item at `i'-th position
- require
- is_valid_index: valid_index (i)
- do
- Result := values.i_th (i)
- end
-
- representation: STRING
- local
- i: INTEGER
- do
- Result := "["
- from
- i := 1
- until
- i > count
- loop
- Result.append (i_th (i).representation)
- i := i + 1
- if i <= count then
- Result.append_character (',')
- end
- end
- Result.append_character (']')
- end
-
- feature -- Visitor pattern
-
- accept (a_visitor: JSON_VISITOR)
- -- Accept `a_visitor'.
- -- (Call `visit_json_array' procedure on `a_visitor'.)
- do
- a_visitor.visit_json_array (Current)
- end
-
- feature -- Mesurement
-
- count: INTEGER
- -- Number of items.
- do
- Result := values.count
- end
-
- feature -- Status report
-
- valid_index (i: INTEGER): BOOLEAN
- -- Is `i' a valid index?
- do
- Result := (1 <= i) and (i <= count)
- end
-
- feature -- Change Element
-
- add (value: JSON_VALUE)
- require
- value_not_null: value /= void
- do
- values.extend (value)
- ensure
- has_new_value: old values.count + 1 = values.count and
- values.has (value)
- end
-
- feature -- Report
-
- hash_code: INTEGER
- -- Hash code value
- do
- from
- values.start
- Result := values.item.hash_code
- until
- values.off
- loop
- Result:= ((Result \\ 8388593) |<< 8) + values.item.hash_code
- values.forth
- end
- Result := Result \\ values.count
- end
-
- feature -- Conversion
-
- array_representation: ARRAYED_LIST [JSON_VALUE]
- -- Representation as a sequences of values
- do
- Result := values
- end
-
- feature -- Status report
-
- debug_output: STRING
- -- String that should be displayed in debugger to represent `Current'.
- do
- Result := count.out
- end
-
- feature {NONE} -- Implementation
-
- values: ARRAYED_LIST [JSON_VALUE]
- -- Value container
-
- invariant
- value_not_void: values /= Void
-
- end