/tutorial/external/Java/example1.e

http://github.com/tybor/Liberty · Specman e · 135 lines · 103 code · 21 blank · 11 comment · 0 complexity · c13d059f53be9d6529f846af14456acd MD5 · raw file

  1. class EXAMPLE1
  2. -- This example demonstrates how to call Java class and instance
  3. -- methods from Eiffel code.
  4. -- To try this example:
  5. --
  6. -- compile_to_jvm example1
  7. -- java example1
  8. creation {ANY}
  9. make
  10. feature {ANY}
  11. make is
  12. local
  13. i: INTEGER; s: STRING; b: BOOLEAN; java_string, java_string_bytes, hash_map, obj: POINTER
  14. do
  15. -- get and print this object's Java hash code
  16. i := hashCode(Current.to_pointer)
  17. io.put_string("hash code is: " + i.to_string + "%N")
  18. -- get and print this object's Java string value
  19. java_string := toString(Current.to_pointer)
  20. i := length(checkcast_java_lang_String(java_string))
  21. create s.make_filled('%U', i)
  22. java_string_bytes := getBytes(checkcast_java_lang_String(java_string))
  23. arraycopy(java_string_bytes, 0, s.to_external, 0, i)
  24. io.put_string("string value is: " + s + "%N")
  25. -- create hash map
  26. hash_map := new_java_util_HashMap -- fill hash map with entries using a java.lang.String as key and Eiffel string as value
  27. s := "A"
  28. java_string := new_java_lang_String(checkcast_aB(s.to_external), 0, s.count)
  29. s := "Number_1"
  30. obj := put(checkcast_java_util_HashMap(hash_map), java_string, s.to_pointer)
  31. s := "B"
  32. java_string := new_java_lang_String(checkcast_aB(s.to_external), 0, s.count)
  33. s := "Number_2"
  34. obj := put(checkcast_java_util_HashMap(hash_map), java_string, s.to_pointer)
  35. s := "C"
  36. java_string := new_java_lang_String(checkcast_aB(s.to_external), 0, s.count)
  37. s := "Number_3"
  38. obj := put(checkcast_java_util_HashMap(hash_map), java_string, s.to_pointer) -- get size of hash map
  39. i := size(checkcast_java_util_HashMap(hash_map))
  40. io.put_string("hashMap size is: " + i.to_string + "%N")
  41. -- retrieve hash map entry
  42. s := "B"
  43. java_string := new_java_lang_String(checkcast_aB(s.to_external), 0, s.count)
  44. b := containsKey(checkcast_java_util_HashMap(hash_map), java_string)
  45. io.put_string("is key " + s + " present in hashMap: " + b.to_string + "%N")
  46. obj := get(checkcast_java_util_HashMap(hash_map), java_string)
  47. s := checkcast_example1_string(obj)
  48. io.put_string("string associated with key is: " + s + "%N")
  49. -- retrieve hash map entry using java.util.Map interface
  50. s := "C"
  51. java_string := new_java_lang_String(checkcast_aB(s.to_external), 0, s.count)
  52. obj := checkcast_java_util_Map(hash_map)
  53. b := containsKey_interface(checkcast_java_util_Map(hash_map), java_string)
  54. io.put_string("is key " + s + " present in hashMap: " + b.to_string + "%N")
  55. obj := get_interface(checkcast_java_util_Map(hash_map), java_string)
  56. s := checkcast_example1_string(obj)
  57. io.put_string("string associated with key is: " + s + "%N")
  58. end
  59. feature {ANY} -- externals
  60. hashCode (p: POINTER): INTEGER is
  61. external "Java class java.lang.Object method int hashCode()"
  62. end
  63. toString (p: POINTER): POINTER is
  64. external "Java class java.lang.Object method java.lang.String toString()"
  65. end
  66. length (p: POINTER): INTEGER is
  67. external "Java class java.lang.String method int length()"
  68. end
  69. checkcast_java_lang_String (p: POINTER): POINTER is
  70. external "Java class java.lang.String checkcast"
  71. end
  72. getBytes (p: POINTER): POINTER is
  73. external "Java class java.lang.String method byte[] getBytes()"
  74. end
  75. arraycopy (a1: POINTER; a2: INTEGER; a3: POINTER; a4: INTEGER; a5: INTEGER) is
  76. external "Java class java.lang.System method static void arraycopy(java.lang.Object,int,java.lang.Object,int,int)"
  77. end
  78. new_java_lang_String (a1: POINTER; a2: INTEGER; a3: INTEGER): POINTER is
  79. external "Java class java.lang.String new (byte[],int,int)"
  80. end
  81. new_java_util_HashMap: POINTER is
  82. external "Java class java.util.HashMap new ()"
  83. end
  84. checkcast_aB (p: POINTER): POINTER is
  85. external "Java class byte[] checkcast"
  86. end
  87. put (p: POINTER; a1: POINTER; a2: POINTER): POINTER is
  88. external "Java class java.util.HashMap method java.lang.Object put(java.lang.Object,java.lang.Object)"
  89. end
  90. checkcast_java_util_HashMap (p: POINTER): POINTER is
  91. external "Java class java.util.HashMap checkcast"
  92. end
  93. size (p: POINTER): INTEGER is
  94. external "Java class java.util.HashMap method int size()"
  95. end
  96. containsKey (p: POINTER; a1: POINTER): BOOLEAN is
  97. external "Java class java.util.HashMap method boolean containsKey(java.lang.Object)"
  98. end
  99. get (p: POINTER; a1: POINTER): POINTER is
  100. external "Java class java.util.HashMap method java.lang.Object get(java.lang.Object)"
  101. end
  102. checkcast_example1_string (p: POINTER): STRING is
  103. external "Java class example1.string checkcast"
  104. end
  105. containsKey_interface (p: POINTER; a1: POINTER): BOOLEAN is
  106. external "Java interface java.util.Map method boolean containsKey(java.lang.Object)"
  107. end
  108. get_interface (p: POINTER; a1: POINTER): POINTER is
  109. external "Java interface java.util.Map method java.lang.Object get(java.lang.Object)"
  110. end
  111. checkcast_java_util_Map (p: POINTER): POINTER is
  112. external "Java class java.util.Map checkcast"
  113. end
  114. end -- class EXAMPLE1