File: example1.e

package info (click to toggle)
smarteiffel 1.1-11
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 12,288 kB
  • ctags: 40,785
  • sloc: ansic: 35,791; lisp: 4,036; sh: 1,783; java: 895; ruby: 613; python: 209; makefile: 115; csh: 78; cpp: 50
file content (174 lines) | stat: -rw-r--r-- 5,654 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
class EXAMPLE1
-- This example demonstrates how to call Java class and instance 
-- methods from Eiffel code.
-- To try this example:
--
--                       compile_to_jvm example1
--                       java example1

creation make

feature

   make is
      local
         i: INTEGER; s: STRING; b: BOOLEAN
         java_string, java_string_bytes, hash_map, obj: POINTER
      do
	 -- get and print this object's Java hash code
         i := hashCode( Current.to_pointer )
         print( "hash code is: " )
         print( i.out )
         print( "%N" )
         
-- get and print this object's Java string value
         
         java_string := toString( Current.to_pointer )
         i := length( checkcast_java_lang_String( java_string ) )
         create s.make_filled( '%U', i )
         java_string_bytes := getBytes( checkcast_java_lang_String( java_string ) )
         arraycopy( java_string_bytes, 0, s.to_external, 0, i )
         print( "string value is: " )
         print( s )
         print( "%N" )

-- create hash map

         hash_map := new_java_util_HashMap
         
-- fill hash map with entries using a java.lang.String as key and Eiffel string as value

         s := "A" 
         java_string := new_java_lang_String( checkcast_aB( s.to_external ), 0, s.count )
         s := "Number_1"
         obj := put( checkcast_java_util_HashMap( hash_map ), java_string, s.to_pointer )
         
         s := "B" 
         java_string := new_java_lang_String( checkcast_aB( s.to_external ), 0, s.count )
         s := "Number_2"
         obj := put( checkcast_java_util_HashMap( hash_map ), java_string, s.to_pointer )
         
         s := "C" 
         java_string := new_java_lang_String( checkcast_aB( s.to_external ), 0, s.count )
         s := "Number_3"
         obj := put( checkcast_java_util_HashMap( hash_map ), java_string, s.to_pointer )

-- get size of hash map
         
         i := size( checkcast_java_util_HashMap( hash_map ) )
         print( "hashMap size is: " )
         print( i.out )
         print( "%N" )

-- retrieve hash map entry

         s := "B" 
         java_string := new_java_lang_String( checkcast_aB( s.to_external ), 0, s.count )
         b := containsKey( checkcast_java_util_HashMap( hash_map ), java_string )
         print( "is key " )
         print( s )
         print( " present in hashMap: " )
         print( b.out )
         print( "%N" )
         
         obj := get( checkcast_java_util_HashMap( hash_map ), java_string )
         s := checkcast_example1_string( obj )
         print( "string associated with key is: " )
         print( s )
         print( "%N" )

-- retrieve hash map entry using java.util.Map interface

         s := "C" 
         java_string := new_java_lang_String( checkcast_aB( s.to_external ), 0, s.count )
         obj := checkcast_java_util_Map( hash_map )
         b := containsKey_interface( checkcast_java_util_Map( hash_map ), java_string )
         print( "is key " )
         print( s )
         print( " present in hashMap: " )
         print( b.out )
         print( "%N" )
         
         obj := get_interface( checkcast_java_util_Map( hash_map ), java_string )
         s := checkcast_example1_string( obj )
         print( "string associated with key is: " )
         print( s )
         print( "%N" )

		end
         
feature -- externals

   hashCode( p: POINTER ): INTEGER is
		external "Java class java.lang.Object method int hashCode()"
		end

	toString( p: POINTER ): POINTER is
		external "Java class java.lang.Object method java.lang.String toString()"
		end

	length( p: POINTER ): INTEGER is
		external "Java class java.lang.String method int length()"
		end

	checkcast_java_lang_String( p: POINTER ): POINTER is
		external "Java class java.lang.String checkcast"
		end

	getBytes( p: POINTER ): POINTER is
		external "Java class java.lang.String method byte[] getBytes()"
		end

	arraycopy( a1: POINTER; a2: INTEGER; a3: POINTER; a4: INTEGER; a5: INTEGER ) is
		external "Java class java.lang.System method static void arraycopy(java.lang.Object,int,java.lang.Object,int,int)"
   	end

	new_java_lang_String( a1: POINTER; a2: INTEGER; a3: INTEGER ): POINTER is
		external "Java class java.lang.String new (byte[],int,int)"
		end

	new_java_util_HashMap: POINTER is
		external "Java class java.util.HashMap new ()"
		end

	checkcast_aB( p: POINTER ): POINTER is
		external "Java class byte[] checkcast"
		end

	put( p: POINTER; a1: POINTER; a2: POINTER ): POINTER is
		external "Java class java.util.HashMap method java.lang.Object put(java.lang.Object,java.lang.Object)"
		end

	checkcast_java_util_HashMap( p: POINTER ): POINTER is
		external "Java class java.util.HashMap checkcast"
		end

	size( p: POINTER ): INTEGER is
		external "Java class java.util.HashMap method int size()"
		end

	containsKey( p: POINTER; a1: POINTER ): BOOLEAN is
		external "Java class java.util.HashMap method boolean containsKey(java.lang.Object)"
		end

	get( p: POINTER; a1: POINTER ): POINTER is
		external "Java class java.util.HashMap method java.lang.Object get(java.lang.Object)"
		end

	checkcast_example1_string( p: POINTER ): STRING is
		external "Java class example1.string checkcast"
		end

	containsKey_interface( p: POINTER; a1: POINTER ): BOOLEAN is
		external "Java interface java.util.Map method boolean containsKey(java.lang.Object)"
		end

	get_interface( p: POINTER; a1: POINTER ): POINTER is
		external "Java interface java.util.Map method java.lang.Object get(java.lang.Object)"
		end

	checkcast_java_util_Map( p: POINTER ): POINTER is
		external "Java class java.util.Map checkcast"
		end

end -- class EXAMPLE1