History

My first initial commit with all of mine experimental changes.

Dmitry Kabak (userdima committed 13 years ago

Commit d37b88d1 parent 3f5b46618352 files · +2598093 −-8690Browse files

Showing the changes to java/pkg2/java (494 of 18352 files). Show all

Unified · Split

494 files
  1. java/pkg2/java/applet/Applet.java +593 −0
  2. java/pkg2/java/applet/AppletContext.java +194 −0
  3. java/pkg2/java/applet/AppletStub.java +111 −0
  4. java/pkg2/java/applet/AudioClip.java +53 −0
  5. java/pkg2/java/applet/mkfile +11 −0
  6. java/pkg2/java/awt/AWTError.java +0 −0
  7. java/pkg2/java/awt/AWTEvent.java +0 −0
  8. java/pkg2/java/awt/AWTEventMulticaster.java +0 −0
  9. java/pkg2/java/awt/AWTException.java +0 −0
  10. java/pkg2/java/awt/ActionInputPreferred.java +5 −0
  11. java/pkg2/java/awt/Adjustable.java +0 −0
  12. java/pkg2/java/awt/BorderLayout.java +0 −0
  13. java/pkg2/java/awt/Button.java +0 −0
  14. java/pkg2/java/awt/Canvas.java +0 −0
  15. java/pkg2/java/awt/CardLayout.java +0 −0
  16. java/pkg2/java/awt/Checkbox.java +0 −0
  17. java/pkg2/java/awt/CheckboxGroup.java +0 −0
  18. java/pkg2/java/awt/CheckboxMenuItem.java +0 −0
  19. java/pkg2/java/awt/Choice.java +0 −0
  20. java/pkg2/java/awt/Color.java +0 −0
  21. java/pkg2/java/awt/Component.java +0 −0
  22. java/pkg2/java/awt/Container.java +0 −0
  23. java/pkg2/java/awt/Cursor.java +0 −0
  24. java/pkg2/java/awt/Dialog.java +0 −0
  25. java/pkg2/java/awt/Dimension.java +0 −0
  26. java/pkg2/java/awt/Event.java +0 −0
  27. java/pkg2/java/awt/EventDispatchThread.java +0 −0
  28. java/pkg2/java/awt/EventQueue.java +0 −0
  29. java/pkg2/java/awt/FileDialog.java +0 −0
  30. java/pkg2/java/awt/FlowLayout.java +0 −0
  31. java/pkg2/java/awt/Font.java +0 −0
  32. java/pkg2/java/awt/FontMetrics.java +0 −0
  33. java/pkg2/java/awt/Frame.java +0 −0
  34. java/pkg2/java/awt/Graphics.java +0 −0
  35. java/pkg2/java/awt/GridBagConstraints.java +0 −0
  36. java/pkg2/java/awt/GridBagLayout.java +0 −0
  37. java/pkg2/java/awt/GridLayout.java +0 −0
  38. java/pkg2/java/awt/IllegalComponentStateEx.java +0 −0
  39. java/pkg2/java/awt/Image.java +0 −0
  40. java/pkg2/java/awt/Insets.java +0 −0
  41. java/pkg2/java/awt/ItemSelectable.java +0 −0
  42. java/pkg2/java/awt/KeyboardInputPreferred.java +5 −0
  43. java/pkg2/java/awt/Label.java +0 −0
  44. java/pkg2/java/awt/LayoutManager.java +0 −0
  45. java/pkg2/java/awt/LayoutManager2.java +0 −0
  46. java/pkg2/java/awt/List.java +0 −0
  47. java/pkg2/java/awt/MediaTracker.java +0 −0
  48. java/pkg2/java/awt/Menu.java +0 −0
  49. java/pkg2/java/awt/MenuBar.java +0 −0
  50. java/pkg2/java/awt/MenuComponent.java +0 −0
  51. java/pkg2/java/awt/MenuContainer.java +0 −0
  52. java/pkg2/java/awt/MenuItem.java +0 −0
  53. java/pkg2/java/awt/MenuShortcut.java +0 −0
  54. java/pkg2/java/awt/Misc.java +95 −0
  55. java/pkg2/java/awt/NoInputPreferred.java +5 −0
  56. java/pkg2/java/awt/Panel.java +0 −0
  57. java/pkg2/java/awt/Point.java +0 −0
  58. java/pkg2/java/awt/Polygon.java +0 −0
  59. java/pkg2/java/awt/PopupMenu.java +0 −0
  60. java/pkg2/java/awt/PositionalInputPreferre.java +5 −0
  61. java/pkg2/java/awt/PrintGraphics.java +0 −0
  62. java/pkg2/java/awt/PrintJob.java +0 −0
  63. java/pkg2/java/awt/Rectangle.java +0 −0
  64. java/pkg2/java/awt/ScrollPane.java +0 −0
  65. java/pkg2/java/awt/Scrollbar.java +0 −0
  66. java/pkg2/java/awt/Shape.java +0 −0
  67. java/pkg2/java/awt/SystemColor.java +0 −0
  68. java/pkg2/java/awt/TextArea.java +0 −0
  69. java/pkg2/java/awt/TextComponent.java +0 −0
  70. java/pkg2/java/awt/TextField.java +0 −0
  71. java/pkg2/java/awt/Toolkit.java +0 −0
  72. java/pkg2/java/awt/Window.java +0 −0
  73. java/pkg2/java/awt/datatransfer/Clipboard.java +0 −0
  74. java/pkg2/java/awt/datatransfer/ClipboardOwner.java +0 −0
  75. java/pkg2/java/awt/datatransfer/DataFlavor.java +0 −0
  76. java/pkg2/java/awt/datatransfer/StringSelection.java +0 −0
  77. java/pkg2/java/awt/datatransfer/Transferable.java +0 −0
  78. java/pkg2/java/awt/datatransfer/UnsupportedFlavorExcept..a +0 −0
  79. java/pkg2/java/awt/datatransfer/mkfile +17 −0
  80. java/pkg2/java/awt/event/ActionEvent.java +0 −0
  81. java/pkg2/java/awt/event/ActionListener.java +0 −0
  82. java/pkg2/java/awt/event/AdjustmentEvent.java +0 −0
  83. java/pkg2/java/awt/event/AdjustmentListener.java +0 −0
  84. java/pkg2/java/awt/event/ComponentAdapter.java +0 −0
  85. java/pkg2/java/awt/event/ComponentEvent.java +0 −0
  86. java/pkg2/java/awt/event/ComponentListener.java +0 −0
  87. java/pkg2/java/awt/event/ContainerAdapter.java +0 −0
  88. java/pkg2/java/awt/event/ContainerEvent.java +0 −0
  89. java/pkg2/java/awt/event/ContainerListener.java +0 −0
  90. java/pkg2/java/awt/event/FocusAdapter.java +0 −0
  91. java/pkg2/java/awt/event/FocusEvent.java +0 −0
  92. java/pkg2/java/awt/event/FocusListener.java +0 −0
  93. java/pkg2/java/awt/event/InputEvent.java +0 −0
  94. java/pkg2/java/awt/event/ItemEvent.java +0 −0
  95. java/pkg2/java/awt/event/ItemListener.java +0 −0
  96. java/pkg2/java/awt/event/KeyAdapter.java +0 −0
  97. java/pkg2/java/awt/event/KeyEvent.java +0 −0
  98. java/pkg2/java/awt/event/KeyListener.java +0 −0
  99. java/pkg2/java/awt/event/MouseAdapter.java +0 −0
  100. java/pkg2/java/awt/event/MouseEvent.java +0 −0
  101. java/pkg2/java/awt/event/MouseListener.java +0 −0
  102. java/pkg2/java/awt/event/MouseMotionAdapter.java +0 −0
  103. java/pkg2/java/awt/event/MouseMotionListener.java +0 −0
  104. java/pkg2/java/awt/event/PaintEvent.java +0 −0
  105. java/pkg2/java/awt/event/TextEvent.java +0 −0
  106. java/pkg2/java/awt/event/TextListener.java +0 −0
  107. java/pkg2/java/awt/event/WindowAdapter.java +0 −0
  108. java/pkg2/java/awt/event/WindowEvent.java +0 −0
  109. java/pkg2/java/awt/event/WindowListener.java +0 −0
  110. java/pkg2/java/awt/event/mkfile +37 −0
  111. java/pkg2/java/awt/image/AreaAveragingScaleFilte.java +0 −0
  112. java/pkg2/java/awt/image/ColorModel.java +0 −0
  113. java/pkg2/java/awt/image/ColorModel_L.b +49 −0
  114. java/pkg2/java/awt/image/ColorModel_L.m +15 −0
  115. java/pkg2/java/awt/image/CropImageFilter.java +0 −0
  116. java/pkg2/java/awt/image/DirectColorModel.java +0 −0
  117. java/pkg2/java/awt/image/FilteredImageSource.java +0 −0
  118. java/pkg2/java/awt/image/ImageConsumer.java +0 −0
  119. java/pkg2/java/awt/image/ImageFilter.java +0 −0
  120. java/pkg2/java/awt/image/ImageObserver.java +0 −0
  121. java/pkg2/java/awt/image/ImageProducer.java +0 −0
  122. java/pkg2/java/awt/image/IndexColorModel.java +0 −0
  123. java/pkg2/java/awt/image/MemoryImageSource.java +0 −0
  124. java/pkg2/java/awt/image/PixelGrabber.java +0 −0
  125. java/pkg2/java/awt/image/RGBImageFilter.java +0 −0
  126. java/pkg2/java/awt/image/ReplicateScaleFilter.java +0 −0
  127. java/pkg2/java/awt/image/mkfile +46 −0
  128. java/pkg2/java/awt/mkfile +138 −0
  129. java/pkg2/java/awt/peer/ActiveEvent.java +0 −0
  130. java/pkg2/java/awt/peer/ButtonPeer.java +0 −0
  131. java/pkg2/java/awt/peer/CanvasPeer.java +0 −0
  132. java/pkg2/java/awt/peer/CheckboxMenuItemPeer.java +0 −0
  133. java/pkg2/java/awt/peer/CheckboxPeer.java +0 −0
  134. java/pkg2/java/awt/peer/ChoicePeer.java +0 −0
  135. java/pkg2/java/awt/peer/ComponentPeer.java +0 −0
  136. java/pkg2/java/awt/peer/ContainerPeer.java +0 −0
  137. java/pkg2/java/awt/peer/DialogPeer.java +0 −0
  138. java/pkg2/java/awt/peer/DoubleBufferingPeer.java +6 −0
  139. java/pkg2/java/awt/peer/FileDialogPeer.java +0 −0
  140. java/pkg2/java/awt/peer/FontPeer.java +0 −0
  141. java/pkg2/java/awt/peer/FramePeer.java +0 −0
  142. java/pkg2/java/awt/peer/LabelPeer.java +0 −0
  143. java/pkg2/java/awt/peer/LightweightPeer.java +0 −0
  144. java/pkg2/java/awt/peer/ListPeer.java +0 −0
  145. java/pkg2/java/awt/peer/MenuBarPeer.java +0 −0
  146. java/pkg2/java/awt/peer/MenuComponentPeer.java +0 −0
  147. java/pkg2/java/awt/peer/MenuItemPeer.java +0 −0
  148. java/pkg2/java/awt/peer/MenuPeer.java +0 −0
  149. java/pkg2/java/awt/peer/PanelPeer.java +0 −0
  150. java/pkg2/java/awt/peer/PopupMenuPeer.java +0 −0
  151. java/pkg2/java/awt/peer/ScrollPanePeer.java +0 −0
  152. java/pkg2/java/awt/peer/ScrollbarPeer.java +0 −0
  153. java/pkg2/java/awt/peer/TextAreaPeer.java +0 −0
  154. java/pkg2/java/awt/peer/TextComponentPeer.java +0 −0
  155. java/pkg2/java/awt/peer/TextFieldPeer.java +0 −0
  156. java/pkg2/java/awt/peer/WindowPeer.java +0 −0
  157. java/pkg2/java/awt/peer/mkfile +35 −0
  158. java/pkg2/java/beans/BeanDescriptor.java +0 −0
  159. java/pkg2/java/beans/BeanInfo.java +0 −0
  160. java/pkg2/java/beans/Beans.java +0 −0
  161. java/pkg2/java/beans/Customizer.java +0 −0
  162. java/pkg2/java/beans/EventSetDescriptor.java +0 −0
  163. java/pkg2/java/beans/FeatureDescriptor.java +0 −0
  164. java/pkg2/java/beans/IndexedPropertyDescript.java +0 −0
  165. java/pkg2/java/beans/IntrospectionException.java +0 −0
  166. java/pkg2/java/beans/Introspector.java +0 −0
  167. java/pkg2/java/beans/MethodDescriptor.java +0 −0
  168. java/pkg2/java/beans/ParameterDescriptor.java +0 −0
  169. java/pkg2/java/beans/PropertyChangeEvent.java +0 −0
  170. java/pkg2/java/beans/PropertyChangeListener.java +0 −0
  171. java/pkg2/java/beans/PropertyChangeSupport.java +0 −0
  172. java/pkg2/java/beans/PropertyDescriptor.java +0 −0
  173. java/pkg2/java/beans/PropertyEditor.java +0 −0
  174. java/pkg2/java/beans/PropertyEditorManager.java +0 −0
  175. java/pkg2/java/beans/PropertyEditorSupport.java +0 −0
  176. java/pkg2/java/beans/PropertyVetoException.java +0 −0
  177. java/pkg2/java/beans/SimpleBeanInfo.java +0 −0
  178. java/pkg2/java/beans/VetoableChangeListener.java +0 −0
  179. java/pkg2/java/beans/VetoableChangeSupport.java +0 −0
  180. java/pkg2/java/beans/Visibility.java +0 −0
  181. java/pkg2/java/beans/mkfile +63 −0
  182. java/pkg2/java/io/BufferedInputStream.java +0 −0
  183. java/pkg2/java/io/BufferedOutputStream.java +0 −0
  184. java/pkg2/java/io/BufferedReader.java +0 −0
  185. java/pkg2/java/io/BufferedWriter.java +0 −0
  186. java/pkg2/java/io/ByteArrayInputStream.java +0 −0
  187. java/pkg2/java/io/ByteArrayOutputStream.java +0 −0
  188. java/pkg2/java/io/CharArrayReader.java +0 −0
  189. java/pkg2/java/io/CharArrayWriter.java +0 −0
  190. java/pkg2/java/io/CharConversionException.java +0 −0
  191. java/pkg2/java/io/DataInput.java +0 −0
  192. java/pkg2/java/io/DataInputStream.java +0 −0
  193. java/pkg2/java/io/DataOutput.java +0 −0
  194. java/pkg2/java/io/DataOutputStream.java +0 −0
  195. java/pkg2/java/io/EOFException.java +0 −0
  196. java/pkg2/java/io/Externalizable.java +0 −0
  197. java/pkg2/java/io/File.java +0 −0
  198. java/pkg2/java/io/FileDescriptor.java +0 −0
  199. java/pkg2/java/io/FileDescriptor_L.b +72 −0
  200. java/pkg2/java/io/FileDescriptor_L.m +16 −0
  201. java/pkg2/java/io/FileInputStream.java +0 −0
  202. java/pkg2/java/io/FileInputStream_L.b +135 −0
  203. java/pkg2/java/io/FileInputStream_L.m +19 −0
  204. java/pkg2/java/io/FileNotFoundException.java +0 −0
  205. java/pkg2/java/io/FileOutputStream.java +0 −0
  206. java/pkg2/java/io/FileOutputStream_L.b +116 −0
  207. java/pkg2/java/io/FileOutputStream_L.m +18 −0
  208. java/pkg2/java/io/FileReader.java +0 −0
  209. java/pkg2/java/io/FileWriter.java +0 −0
  210. java/pkg2/java/io/File_L.b +332 −0
  211. java/pkg2/java/io/File_L.m +27 −0
  212. java/pkg2/java/io/FilenameFilter.java +0 −0
  213. java/pkg2/java/io/FilterInputStream.java +0 −0
  214. java/pkg2/java/io/FilterOutputStream.java +0 −0
  215. java/pkg2/java/io/FilterReader.java +0 −0
  216. java/pkg2/java/io/FilterWriter.java +0 −0
  217. java/pkg2/java/io/IOException.java +0 −0
  218. java/pkg2/java/io/InputStream.java +0 −0
  219. java/pkg2/java/io/InputStreamReader.java +0 −0
  220. java/pkg2/java/io/InterruptedIOException.java +0 −0
  221. java/pkg2/java/io/InvalidClassException.java +0 −0
  222. java/pkg2/java/io/InvalidObjectException.java +0 −0
  223. java/pkg2/java/io/LineNumberInputStream.java +0 −0
  224. java/pkg2/java/io/LineNumberReader.java +0 −0
  225. java/pkg2/java/io/NotActiveException.java +0 −0
  226. java/pkg2/java/io/NotSerializableExceptio.java +0 −0
  227. java/pkg2/java/io/ObjectInput.java +0 −0
  228. java/pkg2/java/io/ObjectInputStream.java +0 −0
  229. java/pkg2/java/io/ObjectInputStream_L.b +397 −0
  230. java/pkg2/java/io/ObjectInputStream_L.m +36 −0
  231. java/pkg2/java/io/ObjectInputValidation.java +0 −0
  232. java/pkg2/java/io/ObjectOutput.java +0 −0
  233. java/pkg2/java/io/ObjectOutputStream.java +0 −0
  234. java/pkg2/java/io/ObjectOutputStream_L.b +257 −0
  235. java/pkg2/java/io/ObjectOutputStream_L.m +33 −0
  236. java/pkg2/java/io/ObjectStreamClass.java +0 −0
  237. java/pkg2/java/io/ObjectStreamClass_L.b +164 −0
  238. java/pkg2/java/io/ObjectStreamClass_L.m +30 −0
  239. java/pkg2/java/io/ObjectStreamConstants.java +0 −0
  240. java/pkg2/java/io/ObjectStreamException.java +0 −0
  241. java/pkg2/java/io/ObjectStreamField.java +0 −0
  242. java/pkg2/java/io/OptionalDataException.java +0 −0
  243. java/pkg2/java/io/OutputStream.java +0 −0
  244. java/pkg2/java/io/OutputStreamWriter.java +0 −0
  245. java/pkg2/java/io/PipedInputStream.java +0 −0
  246. java/pkg2/java/io/PipedOutputStream.java +0 −0
  247. java/pkg2/java/io/PipedReader.java +0 −0
  248. java/pkg2/java/io/PipedWriter.java +0 −0
  249. java/pkg2/java/io/PrintStream.java +0 −0
  250. java/pkg2/java/io/PrintWriter.java +0 −0
  251. java/pkg2/java/io/PushbackInputStream.java +0 −0
  252. java/pkg2/java/io/PushbackReader.java +0 −0
  253. java/pkg2/java/io/RandomAccessFile.java +0 −0
  254. java/pkg2/java/io/RandomAccessFile_L.b +190 −0
  255. java/pkg2/java/io/RandomAccessFile_L.m +22 −0
  256. java/pkg2/java/io/Reader.java +0 −0
  257. java/pkg2/java/io/SequenceInputStream.java +0 −0
  258. java/pkg2/java/io/Serializable.java +0 −0
  259. java/pkg2/java/io/StreamCorruptedExceptio.java +0 −0
  260. java/pkg2/java/io/StreamTokenizer.java +0 −0
  261. java/pkg2/java/io/StringBufferInputStream.java +0 −0
  262. java/pkg2/java/io/StringReader.java +0 −0
  263. java/pkg2/java/io/StringWriter.java +0 −0
  264. java/pkg2/java/io/SyncFailedException.java +0 −0
  265. java/pkg2/java/io/UTFDataFormatException.java +0 −0
  266. java/pkg2/java/io/UnsupportedEncodingExce.java +0 −0
  267. java/pkg2/java/io/WriteAbortedException.java +0 −0
  268. java/pkg2/java/io/Writer.java +0 −0
  269. java/pkg2/java/io/mkfile +150 −0
  270. java/pkg2/java/lang/AbstractMethodError.java +0 −0
  271. java/pkg2/java/lang/ArithmeticException.java +0 −0
  272. java/pkg2/java/lang/ArrayIndexOutOfBoundsException.java +0 −0
  273. java/pkg2/java/lang/ArrayStoreException.java +0 −0
  274. java/pkg2/java/lang/Boolean.java +0 −0
  275. java/pkg2/java/lang/Byte.java +0 −0
  276. java/pkg2/java/lang/Character.java +0 −0
  277. java/pkg2/java/lang/Character_L.b +63 −0
  278. java/pkg2/java/lang/Character_L.m +14 −0
  279. java/pkg2/java/lang/Class.java +0 −0
  280. java/pkg2/java/lang/ClassCastException.java +0 −0
  281. java/pkg2/java/lang/ClassCircularityError.java +0 −0
  282. java/pkg2/java/lang/ClassFormatError.java +0 −0
  283. java/pkg2/java/lang/ClassLoader.java +0 −0
  284. java/pkg2/java/lang/ClassLoader_L.b +82 −0
  285. java/pkg2/java/lang/ClassLoader_L.m +20 −0
  286. java/pkg2/java/lang/ClassNotFoundException.java +0 −0
  287. java/pkg2/java/lang/Class_L.b +778 −0
  288. java/pkg2/java/lang/Class_L.m +30 −0
  289. java/pkg2/java/lang/CloneNotSupportedException.java +0 −0
  290. java/pkg2/java/lang/Cloneable.java +0 −0
  291. java/pkg2/java/lang/Compiler.java +0 −0
  292. java/pkg2/java/lang/Double.java +0 −0
  293. java/pkg2/java/lang/Double_L.b +66 −0
  294. java/pkg2/java/lang/Double_L.m +17 −0
  295. java/pkg2/java/lang/Error.java +0 −0
  296. java/pkg2/java/lang/Exception.java +0 −0
  297. java/pkg2/java/lang/ExceptionInInitializerE..a +73 −0
  298. java/pkg2/java/lang/Float.java +0 −0
  299. java/pkg2/java/lang/Float_L.b +60 −0
  300. java/pkg2/java/lang/Float_L.m +16 −0
  301. java/pkg2/java/lang/IllegalAccessError.java +0 −0
  302. java/pkg2/java/lang/IllegalAccessException.java +0 −0
  303. java/pkg2/java/lang/IllegalArgumentException.java +0 −0
  304. java/pkg2/java/lang/IllegalMonitorStateException.java +0 −0
  305. java/pkg2/java/lang/IllegalStateException.java +0 −0
  306. java/pkg2/java/lang/IllegalThreadStateExcep..a +0 −0
  307. java/pkg2/java/lang/IncompatibleClassChange..a +0 −0
  308. java/pkg2/java/lang/IndexOutOfBoundsExcepti..a +0 −0
  309. java/pkg2/java/lang/InfernoProcess.java +0 −0
  310. java/pkg2/java/lang/InfernoProcess_L.b +207 −0
  311. java/pkg2/java/lang/InfernoProcess_L.m +22 −0
  312. java/pkg2/java/lang/InstantiationError.java +0 −0
  313. java/pkg2/java/lang/InstantiationException.java +0 −0
  314. java/pkg2/java/lang/Integer.java +0 −0
  315. java/pkg2/java/lang/InternalError.java +0 −0
  316. java/pkg2/java/lang/InterruptedException.java +0 −0
  317. java/pkg2/java/lang/LinkageError.java +0 −0
  318. java/pkg2/java/lang/Long.java +0 −0
  319. java/pkg2/java/lang/Math.java +0 −0
  320. java/pkg2/java/lang/Math_L.b +119 −0
  321. java/pkg2/java/lang/Math_L.m +27 −0
  322. java/pkg2/java/lang/NegativeArraySizeExcept..a +0 −0
  323. java/pkg2/java/lang/NoClassDefFoundError.java +0 −0
  324. java/pkg2/java/lang/NoSuchFieldError.java +0 −0
  325. java/pkg2/java/lang/NoSuchFieldException.java +0 −0
  326. java/pkg2/java/lang/NoSuchMethodError.java +0 −0
  327. java/pkg2/java/lang/NoSuchMethodException.java +0 −0
  328. java/pkg2/java/lang/NullPointerException.java +0 −0
  329. java/pkg2/java/lang/Number.java +0 −0
  330. java/pkg2/java/lang/NumberFormatException.java +0 −0
  331. java/pkg2/java/lang/Object.java +0 −0
  332. java/pkg2/java/lang/Object_L.b +71 −0
  333. java/pkg2/java/lang/Object_L.m +14 −0
  334. java/pkg2/java/lang/OutOfMemoryError.java +0 −0
  335. java/pkg2/java/lang/Process.java +0 −0
  336. java/pkg2/java/lang/Runnable.java +0 −0
  337. java/pkg2/java/lang/Runtime.java +0 −0
  338. java/pkg2/java/lang/RuntimeException.java +0 −0
  339. java/pkg2/java/lang/Runtime_L.b +161 −0
  340. java/pkg2/java/lang/Runtime_L.m +20 −0
  341. java/pkg2/java/lang/SecurityException.java +0 −0
  342. java/pkg2/java/lang/SecurityManager.java +0 −0
  343. java/pkg2/java/lang/SecurityManager_L.b +175 −0
  344. java/pkg2/java/lang/SecurityManager_L.m +19 −0
  345. java/pkg2/java/lang/Short.java +0 −0
  346. java/pkg2/java/lang/StackOverflowError.java +0 −0
  347. java/pkg2/java/lang/String.java +0 −0
  348. java/pkg2/java/lang/StringBuffer.java +0 −0
  349. java/pkg2/java/lang/StringBuffer_L.b +359 −0
  350. java/pkg2/java/lang/StringBuffer_L.m +42 −0
  351. java/pkg2/java/lang/StringIndexOutOfBoundsE..a +0 −0
  352. java/pkg2/java/lang/String_L.b +517 −0
  353. java/pkg2/java/lang/String_L.m +30 −0
  354. java/pkg2/java/lang/System.java +0 −0
  355. java/pkg2/java/lang/System_L.b +133 −0
  356. java/pkg2/java/lang/System_L.m +20 −0
  357. java/pkg2/java/lang/Thread.java +0 −0
  358. java/pkg2/java/lang/ThreadDeath.java +0 −0
  359. java/pkg2/java/lang/ThreadGroup.java +0 −0
  360. java/pkg2/java/lang/Thread_L.b +455 −0
  361. java/pkg2/java/lang/Thread_L.m +21 −0
  362. java/pkg2/java/lang/Throwable.java +0 −0
  363. java/pkg2/java/lang/Throwable_L.b +96 −0
  364. java/pkg2/java/lang/Throwable_L.m +16 −0
  365. java/pkg2/java/lang/UnknownError.java +0 −0
  366. java/pkg2/java/lang/UnsatisfiedLinkError.java +0 −0
  367. java/pkg2/java/lang/VerifyError.java +0 −0
  368. java/pkg2/java/lang/VirtualMachineError.java +0 −0
  369. java/pkg2/java/lang/Void.java +0 −0
  370. java/pkg2/java/lang/mkfile +152 −0
  371. java/pkg2/java/lang/reflect/Array.java +0 −0
  372. java/pkg2/java/lang/reflect/Array_L.b +417 −0
  373. java/pkg2/java/lang/reflect/Array_L.m +33 −0
  374. java/pkg2/java/lang/reflect/Constructor.java +0 −0
  375. java/pkg2/java/lang/reflect/Constructor_L.b +90 −0
  376. java/pkg2/java/lang/reflect/Constructor_L.m +18 −0
  377. java/pkg2/java/lang/reflect/Field.java +0 −0
  378. java/pkg2/java/lang/reflect/Field_L.b +469 −0
  379. java/pkg2/java/lang/reflect/Field_L.m +35 −0
  380. java/pkg2/java/lang/reflect/InvocationTargetExcepti..a +0 −0
  381. java/pkg2/java/lang/reflect/Member.java +0 −0
  382. java/pkg2/java/lang/reflect/Method.java +0 −0
  383. java/pkg2/java/lang/reflect/Method_L.b +117 −0
  384. java/pkg2/java/lang/reflect/Method_L.m +20 −0
  385. java/pkg2/java/lang/reflect/Modifier.java +0 −0
  386. java/pkg2/java/lang/reflect/mkfile +46 −0
  387. java/pkg2/java/lang/reflect/reflect.b +327 −0
  388. java/pkg2/java/lang/reflect/reflect.m +19 −0
  389. java/pkg2/java/lang/unicode_table.b +1285 −0
  390. java/pkg2/java/lang/unicode_table.m +8 −0
  391. java/pkg2/java/mkfile +13 −0
  392. java/pkg2/java/net/BindException.java +0 −0
  393. java/pkg2/java/net/ConnectException.java +0 −0
  394. java/pkg2/java/net/ContentHandler.java +0 −0
  395. java/pkg2/java/net/ContentHandlerFactory.java +0 −0
  396. java/pkg2/java/net/DatagramPacket.java +0 −0
  397. java/pkg2/java/net/DatagramPacket_L.m +16 −0
  398. java/pkg2/java/net/DatagramSocket.java +0 −0
  399. java/pkg2/java/net/DatagramSocketImpl.java +0 −0
  400. java/pkg2/java/net/DatagramSocketImpl_L.m +14 −0
  401. java/pkg2/java/net/FileNameMap.java +0 −0
  402. java/pkg2/java/net/HttpURLConnection.java +0 −0
  403. java/pkg2/java/net/InetAddress.java +0 −0
  404. java/pkg2/java/net/InetAddressImpl_L.b +218 −0
  405. java/pkg2/java/net/InetAddressImpl_L.m +17 −0
  406. java/pkg2/java/net/InetAddress_L.m +12 −0
  407. java/pkg2/java/net/MalformedURLException.java +0 −0
  408. java/pkg2/java/net/MulticastSocket.java +0 −0
  409. java/pkg2/java/net/NoRouteToHostException.java +0 −0
  410. java/pkg2/java/net/PlainDatagramSocketImpl..a +0 −0
  411. java/pkg2/java/net/PlainDatagramSocketImpl_L.b +695 −0
  412. java/pkg2/java/net/PlainDatagramSocketImpl_L.m +29 −0
  413. java/pkg2/java/net/PlainSocketImpl.java +0 −0
  414. java/pkg2/java/net/PlainSocketImpl_L.b +685 −0
  415. java/pkg2/java/net/PlainSocketImpl_L.m +30 −0
  416. java/pkg2/java/net/ProtocolException.java +0 −0
  417. java/pkg2/java/net/ServerSocket.java +0 −0
  418. java/pkg2/java/net/Socket.java +0 −0
  419. java/pkg2/java/net/SocketException.java +0 −0
  420. java/pkg2/java/net/SocketImpl.java +0 −0
  421. java/pkg2/java/net/SocketImplFactory.java +0 −0
  422. java/pkg2/java/net/SocketImpl_L.m +19 −0
  423. java/pkg2/java/net/SocketInputStream.java +0 −0
  424. java/pkg2/java/net/SocketInputStream_L.b +173 −0
  425. java/pkg2/java/net/SocketInputStream_L.m +17 −0
  426. java/pkg2/java/net/SocketOptions.java +0 −0
  427. java/pkg2/java/net/SocketOutputStream.java +0 −0
  428. java/pkg2/java/net/SocketOutputStream_L.b +95 −0
  429. java/pkg2/java/net/SocketOutputStream_L.m +16 −0
  430. java/pkg2/java/net/URL.java +0 −0
  431. java/pkg2/java/net/URLConnection.java +0 −0
  432. java/pkg2/java/net/URLEncoder.java +0 −0
  433. java/pkg2/java/net/URLStreamHandler.java +0 −0
  434. java/pkg2/java/net/URLStreamHandlerFactory.java +0 −0
  435. java/pkg2/java/net/UnknownHostException.java +0 −0
  436. java/pkg2/java/net/UnknownServiceException.java +0 −0
  437. java/pkg2/java/net/jnet.m +23 −0
  438. java/pkg2/java/net/mkfile +100 −0
  439. java/pkg2/java/security/DigestException.java +0 −0
  440. java/pkg2/java/security/DigestOutputStream.java +0 −0
  441. java/pkg2/java/security/MessageDigest.java +0 −0
  442. java/pkg2/java/security/NoSuchAlgorithmException.java +0 −0
  443. java/pkg2/java/security/NoSuchProviderException.java +0 −0
  444. java/pkg2/java/security/Provider.java +0 −0
  445. java/pkg2/java/security/Security.java +0 −0
  446. java/pkg2/java/security/mkfile +22 −0
  447. java/pkg2/java/util/BitSet.java +0 −0
  448. java/pkg2/java/util/Calendar.java +782 −0
  449. java/pkg2/java/util/Date.java +0 −0
  450. java/pkg2/java/util/Date_L.b +180 −0
  451. java/pkg2/java/util/Date_L.m +30 −0
  452. java/pkg2/java/util/Dictionary.java +0 −0
  453. java/pkg2/java/util/EmptyStackException.java +0 −0
  454. java/pkg2/java/util/Enumeration.java +0 −0
  455. java/pkg2/java/util/EventListener.java +0 −0
  456. java/pkg2/java/util/EventObject.java +0 −0
  457. java/pkg2/java/util/GregorianCalendar.java +557 −0
  458. java/pkg2/java/util/Hashtable.java +0 −0
  459. java/pkg2/java/util/ListResourceBundle.java +169 −0
  460. java/pkg2/java/util/Locale.java +631 −0
  461. java/pkg2/java/util/MissingResourceException.java +73 −0
  462. java/pkg2/java/util/NoSuchElementException.java +0 −0
  463. java/pkg2/java/util/Observable.java +0 −0
  464. java/pkg2/java/util/Observer.java +0 −0
  465. java/pkg2/java/util/Properties.java +0 −0
  466. java/pkg2/java/util/PropertyResourceBundle.java +121 −0
  467. java/pkg2/java/util/Random.java +0 −0
  468. java/pkg2/java/util/ResourceBundle.java +536 −0
  469. java/pkg2/java/util/ResourceBundle_L.b +48 −0
  470. java/pkg2/java/util/ResourceBundle_L.m +14 −0
  471. java/pkg2/java/util/SimpleTimeZone.java +246 −0
  472. java/pkg2/java/util/Stack.java +0 −0
  473. java/pkg2/java/util/StringTokenizer.java +0 −0
  474. java/pkg2/java/util/TimeZone.java +193 −0
  475. java/pkg2/java/util/TooManyListenersException.java +65 −0
  476. java/pkg2/java/util/Vector.java +0 −0
  477. java/pkg2/java/util/mkfile +88 −0
  478. java/pkg2/java/util/zip/CRC32.java +0 −0
  479. java/pkg2/java/util/zip/CRC32_L.b +51 −0
  480. java/pkg2/java/util/zip/CRC32_L.m +15 −0
  481. java/pkg2/java/util/zip/CheckedInputStream.java +0 −0
  482. java/pkg2/java/util/zip/CheckedOutputStream.java +0 −0
  483. java/pkg2/java/util/zip/Checksum.java +0 −0
  484. java/pkg2/java/util/zip/DataFormatException.java +0 −0
  485. java/pkg2/java/util/zip/GZIPInputStream.java +0 −0
  486. java/pkg2/java/util/zip/Inflater.java +0 −0
  487. java/pkg2/java/util/zip/InflaterInputStream.java +0 −0
  488. java/pkg2/java/util/zip/Inflater_L.b +77 −0
  489. java/pkg2/java/util/zip/Inflater_L.m +24 −0
  490. java/pkg2/java/util/zip/ZipConstants.java +0 −0
  491. java/pkg2/java/util/zip/ZipEntry.java +0 −0
  492. java/pkg2/java/util/zip/ZipException.java +0 −0
  493. java/pkg2/java/util/zip/ZipInputStream.java +0 −0
  494. java/pkg2/java/util/zip/mkfile +38 −0
java/pkg2/java/applet/Applet.java+593−0
@@ -0,0 +1,593 @@
1/*
2 * Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
3 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
4 *
5 *
6 *
7 *
8 *
9 *
10 *
11 *
12 *
13 *
14 *
15 *
16 *
17 *
18 *
19 *
20 *
21 *
22 *
23 *
24 */
25package java.applet;
26
27import java.awt.*;
28import java.awt.image.ColorModel;
29import java.io.IOException;
30import java.io.ObjectInputStream;
31import java.net.URL;
32import java.net.MalformedURLException;
33import java.util.Hashtable;
34import java.util.Locale;
35import javax.accessibility.*;
36
37/**
38 * An applet is a small program that is intended not to be run on
39 * its own, but rather to be embedded inside another application.
40 * <p>
41 * The <code>Applet</code> class must be the superclass of any
42 * applet that is to be embedded in a Web page or viewed by the Java
43 * Applet Viewer. The <code>Applet</code> class provides a standard
44 * interface between applets and their environment.
45 *
46 * @author Arthur van Hoff
47 * @author Chris Warth
48 * @since JDK1.0
49 */
50public class Applet extends Panel {
51
52 /**
53 * Constructs a new Applet.
54 * <p>
55 * Note: Many methods in <code>java.applet.Applet</code>
56 * may be invoked by the applet only after the applet is
57 * fully constructed; applet should avoid calling methods
58 * in <code>java.applet.Applet</code> in the constructor.
59 *
60 * @exception HeadlessException if GraphicsEnvironment.isHeadless()
61 * returns true.
62 * @see java.awt.GraphicsEnvironment#isHeadless
63 * @since 1.4
64 */
65 public Applet() throws HeadlessException {
66 if (GraphicsEnvironment.isHeadless()) {
67 throw new HeadlessException();
68 }
69 }
70
71 /**
72 * Applets can be serialized but the following conventions MUST be followed:
73 *
74 * Before Serialization:
75 * An applet must be in STOPPED state.
76 *
77 * After Deserialization:
78 * The applet will be restored in STOPPED state (and most clients will
79 * likely move it into RUNNING state).
80 * The stub field will be restored by the reader.
81 */
82 transient private AppletStub stub;
83
84 /* version ID for serialized form. */
85 private static final long serialVersionUID = -5836846270535785031L;
86
87 /**
88 * Read an applet from an object input stream.
89 * @exception HeadlessException if
90 * <code>GraphicsEnvironment.isHeadless()</code> returns
91 * <code>true</code>
92 * @serial
93 * @see java.awt.GraphicsEnvironment#isHeadless
94 * @since 1.4
95 */
96 private void readObject(ObjectInputStream s)
97 throws ClassNotFoundException, IOException, HeadlessException {
98 if (GraphicsEnvironment.isHeadless()) {
99 throw new HeadlessException();
100 }
101 s.defaultReadObject();
102 }
103
104 /**
105 * Sets this applet's stub. This is done automatically by the system.
106 * <p>If there is a security manager, its <code> checkPermission </code>
107 * method is called with the
108 * <code>AWTPermission("setAppletStub")</code>
109 * permission if a stub has already been set.
110 * @param stub the new stub.
111 * @exception SecurityException if the caller cannot set the stub
112 */
113 public final void setStub(AppletStub stub) {
114 if (this.stub != null) {
115 SecurityManager s = System.getSecurityManager();
116 if (s != null) {
117 s.checkPermission(new AWTPermission("setAppletStub"));
118 }
119 }
120 this.stub = (AppletStub)stub;
121 }
122
123 /**
124 * Determines if this applet is active. An applet is marked active
125 * just before its <code>start</code> method is called. It becomes
126 * inactive just before its <code>stop</code> method is called.
127 *
128 * @return <code>true</code> if the applet is active;
129 * <code>false</code> otherwise.
130 * @see java.applet.Applet#start()
131 * @see java.applet.Applet#stop()
132 */
133 public boolean isActive() {
134 if (stub != null) {
135 return stub.isActive();
136 } else { // If stub field not filled in, applet never active
137 return false;
138 }
139 }
140
141 /**
142 * Gets the URL of the document in which this applet is embedded.
143 * For example, suppose an applet is contained
144 * within the document:
145 * <blockquote><pre>
146 * http://java.sun.com/products/jdk/1.2/index.html
147 * </pre></blockquote>
148 * The document base is:
149 * <blockquote><pre>
150 * http://java.sun.com/products/jdk/1.2/index.html
151 * </pre></blockquote>
152 *
153 * @return the {@link java.net.URL} of the document that contains this
154 * applet.
155 * @see java.applet.Applet#getCodeBase()
156 */
157 public URL getDocumentBase() {
158 return stub.getDocumentBase();
159 }
160
161 /**
162 * Gets the base URL. This is the URL of the directory which contains this applet.
163 *
164 * @return the base {@link java.net.URL} of
165 * the directory which contains this applet.
166 * @see java.applet.Applet#getDocumentBase()
167 */
168 public URL getCodeBase() {
169 return stub.getCodeBase();
170 }
171
172 /**
173 * Returns the value of the named parameter in the HTML tag. For
174 * example, if this applet is specified as
175 * <blockquote><pre>
176 * &lt;applet code="Clock" width=50 height=50&gt;
177 * &lt;param name=Color value="blue"&gt;
178 * &lt;/applet&gt;
179 * </pre></blockquote>
180 * <p>
181 * then a call to <code>getParameter("Color")</code> returns the
182 * value <code>"blue"</code>.
183 * <p>
184 * The <code>name</code> argument is case insensitive.
185 *
186 * @param name a parameter name.
187 * @return the value of the named parameter,
188 * or <code>null</code> if not set.
189 */
190 public String getParameter(String name) {
191 return stub.getParameter(name);
192 }
193
194 /**
195 * Determines this applet's context, which allows the applet to
196 * query and affect the environment in which it runs.
197 * <p>
198 * This environment of an applet represents the document that
199 * contains the applet.
200 *
201 * @return the applet's context.
202 */
203 public AppletContext getAppletContext() {
204 return stub.getAppletContext();
205 }
206
207 /**
208 * Requests that this applet be resized.
209 *
210 * @param width the new requested width for the applet.
211 * @param height the new requested height for the applet.
212 */
213 public void resize(int width, int height) {
214 Dimension d = size();
215 if ((d.width != width) || (d.height != height)) {
216 super.resize(width, height);
217 if (stub != null) {
218 stub.appletResize(width, height);
219 }
220 }
221 }
222
223 /**
224 * Requests that this applet be resized.
225 *
226 * @param d an object giving the new width and height.
227 */
228 public void resize(Dimension d) {
229 resize(d.width, d.height);
230 }
231
232 /**
233 * Indicates if this container is a validate root.
234 * <p>
235 * {@code Applet} objects are the validate roots, and, therefore, they
236 * override this method to return {@code true}.
237 *
238 * @return {@code true}
239 * @since 1.7
240 * @see java.awt.Container#isValidateRoot
241 */
242 @Override
243 public boolean isValidateRoot() {
244 return true;
245 }
246
247 /**
248 * Requests that the argument string be displayed in the
249 * "status window". Many browsers and applet viewers
250 * provide such a window, where the application can inform users of
251 * its current state.
252 *
253 * @param msg a string to display in the status window.
254 */
255 public void showStatus(String msg) {
256 getAppletContext().showStatus(msg);
257 }
258
259 /**
260 * Returns an <code>Image</code> object that can then be painted on
261 * the screen. The <code>url</code> that is passed as an argument
262 * must specify an absolute URL.
263 * <p>
264 * This method always returns immediately, whether or not the image
265 * exists. When this applet attempts to draw the image on the screen,
266 * the data will be loaded. The graphics primitives that draw the
267 * image will incrementally paint on the screen.
268 *
269 * @param url an absolute URL giving the location of the image.
270 * @return the image at the specified URL.
271 * @see java.awt.Image
272 */
273 public Image getImage(URL url) {
274 return getAppletContext().getImage(url);
275 }
276
277 /**
278 * Returns an <code>Image</code> object that can then be painted on
279 * the screen. The <code>url</code> argument must specify an absolute
280 * URL. The <code>name</code> argument is a specifier that is
281 * relative to the <code>url</code> argument.
282 * <p>
283 * This method always returns immediately, whether or not the image
284 * exists. When this applet attempts to draw the image on the screen,
285 * the data will be loaded. The graphics primitives that draw the
286 * image will incrementally paint on the screen.
287 *
288 * @param url an absolute URL giving the base location of the image.
289 * @param name the location of the image, relative to the
290 * <code>url</code> argument.
291 * @return the image at the specified URL.
292 * @see java.awt.Image
293 */
294 public Image getImage(URL url, String name) {
295 try {
296 return getImage(new URL(url, name));
297 } catch (MalformedURLException e) {
298 return null;
299 }
300 }
301
302 /**
303 * Get an audio clip from the given URL.
304 *
305 * @param url points to the audio clip
306 * @return the audio clip at the specified URL.
307 *
308 * @since 1.2
309 */
310 public final static AudioClip newAudioClip(URL url) {
311 return new sun.applet.AppletAudioClip(url);
312 }
313
314 /**
315 * Returns the <code>AudioClip</code> object specified by the
316 * <code>URL</code> argument.
317 * <p>
318 * This method always returns immediately, whether or not the audio
319 * clip exists. When this applet attempts to play the audio clip, the
320 * data will be loaded.
321 *
322 * @param url an absolute URL giving the location of the audio clip.
323 * @return the audio clip at the specified URL.
324 * @see java.applet.AudioClip
325 */
326 public AudioClip getAudioClip(URL url) {
327 return getAppletContext().getAudioClip(url);
328 }
329
330 /**
331 * Returns the <code>AudioClip</code> object specified by the
332 * <code>URL</code> and <code>name</code> arguments.
333 * <p>
334 * This method always returns immediately, whether or not the audio
335 * clip exists. When this applet attempts to play the audio clip, the
336 * data will be loaded.
337 *
338 * @param url an absolute URL giving the base location of the
339 * audio clip.
340 * @param name the location of the audio clip, relative to the
341 * <code>url</code> argument.
342 * @return the audio clip at the specified URL.
343 * @see java.applet.AudioClip
344 */
345 public AudioClip getAudioClip(URL url, String name) {
346 try {
347 return getAudioClip(new URL(url, name));
348 } catch (MalformedURLException e) {
349 return null;
350 }
351 }
352
353 /**
354 * Returns information about this applet. An applet should override
355 * this method to return a <code>String</code> containing information
356 * about the author, version, and copyright of the applet.
357 * <p>
358 * The implementation of this method provided by the
359 * <code>Applet</code> class returns <code>null</code>.
360 *
361 * @return a string containing information about the author, version, and
362 * copyright of the applet.
363 */
364 public String getAppletInfo() {
365 return null;
366 }
367
368 /**
369 * Gets the locale of the applet. It allows the applet
370 * to maintain its own locale separated from the locale
371 * of the browser or appletviewer.
372 *
373 * @return the locale of the applet; if no locale has
374 * been set, the default locale is returned.
375 * @since JDK1.1
376 */
377 public Locale getLocale() {
378 Locale locale = super.getLocale();
379 if (locale == null) {
380 return Locale.getDefault();
381 }
382 return locale;
383 }
384
385 /**
386 * Returns information about the parameters that are understood by
387 * this applet. An applet should override this method to return an
388 * array of <code>Strings</code> describing these parameters.
389 * <p>
390 * Each element of the array should be a set of three
391 * <code>Strings</code> containing the name, the type, and a
392 * description. For example:
393 * <p><blockquote><pre>
394 * String pinfo[][] = {
395 * {"fps", "1-10", "frames per second"},
396 * {"repeat", "boolean", "repeat image loop"},
397 * {"imgs", "url", "images directory"}
398 * };
399 * </pre></blockquote>
400 * <p>
401 * The implementation of this method provided by the
402 * <code>Applet</code> class returns <code>null</code>.
403 *
404 * @return an array describing the parameters this applet looks for.
405 */
406 public String[][] getParameterInfo() {
407 return null;
408 }
409
410 /**
411 * Plays the audio clip at the specified absolute URL. Nothing
412 * happens if the audio clip cannot be found.
413 *
414 * @param url an absolute URL giving the location of the audio clip.
415 */
416 public void play(URL url) {
417 AudioClip clip = getAudioClip(url);
418 if (clip != null) {
419 clip.play();
420 }
421 }
422
423 /**
424 * Plays the audio clip given the URL and a specifier that is
425 * relative to it. Nothing happens if the audio clip cannot be found.
426 *
427 * @param url an absolute URL giving the base location of the
428 * audio clip.
429 * @param name the location of the audio clip, relative to the
430 * <code>url</code> argument.
431 */
432 public void play(URL url, String name) {
433 AudioClip clip = getAudioClip(url, name);
434 if (clip != null) {
435 clip.play();
436 }
437 }
438
439 /**
440 * Called by the browser or applet viewer to inform
441 * this applet that it has been loaded into the system. It is always
442 * called before the first time that the <code>start</code> method is
443 * called.
444 * <p>
445 * A subclass of <code>Applet</code> should override this method if
446 * it has initialization to perform. For example, an applet with
447 * threads would use the <code>init</code> method to create the
448 * threads and the <code>destroy</code> method to kill them.
449 * <p>
450 * The implementation of this method provided by the
451 * <code>Applet</code> class does nothing.
452 *
453 * @see java.applet.Applet#destroy()
454 * @see java.applet.Applet#start()
455 * @see java.applet.Applet#stop()
456 */
457 public void init() {
458 }
459
460 /**
461 * Called by the browser or applet viewer to inform
462 * this applet that it should start its execution. It is called after
463 * the <code>init</code> method and each time the applet is revisited
464 * in a Web page.
465 * <p>
466 * A subclass of <code>Applet</code> should override this method if
467 * it has any operation that it wants to perform each time the Web
468 * page containing it is visited. For example, an applet with
469 * animation might want to use the <code>start</code> method to
470 * resume animation, and the <code>stop</code> method to suspend the
471 * animation.
472 * <p>
473 * Note: some methods, such as <code>getLocationOnScreen</code>, can only
474 * provide meaningful results if the applet is showing. Because
475 * <code>isShowing</code> returns <code>false</code> when the applet's
476 * <code>start</code> is first called, methods requiring
477 * <code>isShowing</code> to return <code>true</code> should be called from
478 * a <code>ComponentListener</code>.
479 * <p>
480 * The implementation of this method provided by the
481 * <code>Applet</code> class does nothing.
482 *
483 * @see java.applet.Applet#destroy()
484 * @see java.applet.Applet#init()
485 * @see java.applet.Applet#stop()
486 * @see java.awt.Component#isShowing()
487 * @see java.awt.event.ComponentListener#componentShown(java.awt.event.ComponentEvent)
488 */
489 public void start() {
490 }
491
492 /**
493 * Called by the browser or applet viewer to inform
494 * this applet that it should stop its execution. It is called when
495 * the Web page that contains this applet has been replaced by
496 * another page, and also just before the applet is to be destroyed.
497 * <p>
498 * A subclass of <code>Applet</code> should override this method if
499 * it has any operation that it wants to perform each time the Web
500 * page containing it is no longer visible. For example, an applet
501 * with animation might want to use the <code>start</code> method to
502 * resume animation, and the <code>stop</code> method to suspend the
503 * animation.
504 * <p>
505 * The implementation of this method provided by the
506 * <code>Applet</code> class does nothing.
507 *
508 * @see java.applet.Applet#destroy()
509 * @see java.applet.Applet#init()
510 */
511 public void stop() {
512 }
513
514 /**
515 * Called by the browser or applet viewer to inform
516 * this applet that it is being reclaimed and that it should destroy
517 * any resources that it has allocated. The <code>stop</code> method
518 * will always be called before <code>destroy</code>.
519 * <p>
520 * A subclass of <code>Applet</code> should override this method if
521 * it has any operation that it wants to perform before it is
522 * destroyed. For example, an applet with threads would use the
523 * <code>init</code> method to create the threads and the
524 * <code>destroy</code> method to kill them.
525 * <p>
526 * The implementation of this method provided by the
527 * <code>Applet</code> class does nothing.
528 *
529 * @see java.applet.Applet#init()
530 * @see java.applet.Applet#start()
531 * @see java.applet.Applet#stop()
532 */
533 public void destroy() {
534 }
535
536 //
537 // Accessibility support
538 //
539
540 AccessibleContext accessibleContext = null;
541
542 /**
543 * Gets the AccessibleContext associated with this Applet.
544 * For applets, the AccessibleContext takes the form of an
545 * AccessibleApplet.
546 * A new AccessibleApplet instance is created if necessary.
547 *
548 * @return an AccessibleApplet that serves as the
549 * AccessibleContext of this Applet
550 * @since 1.3
551 */
552 public AccessibleContext getAccessibleContext() {
553 if (accessibleContext == null) {
554 accessibleContext = new AccessibleApplet();
555 }
556 return accessibleContext;
557 }
558
559 /**
560 * This class implements accessibility support for the
561 * <code>Applet</code> class. It provides an implementation of the
562 * Java Accessibility API appropriate to applet user-interface elements.
563 * @since 1.3
564 */
565 protected class AccessibleApplet extends AccessibleAWTPanel {
566
567 private static final long serialVersionUID = 8127374778187708896L;
568
569 /**
570 * Get the role of this object.
571 *
572 * @return an instance of AccessibleRole describing the role of the
573 * object
574 */
575 public AccessibleRole getAccessibleRole() {
576 return AccessibleRole.FRAME;
577 }
578
579 /**
580 * Get the state of this object.
581 *
582 * @return an instance of AccessibleStateSet containing the current
583 * state set of the object
584 * @see AccessibleState
585 */
586 public AccessibleStateSet getAccessibleStateSet() {
587 AccessibleStateSet states = super.getAccessibleStateSet();
588 states.add(AccessibleState.ACTIVE);
589 return states;
590 }
591
592 }
593}
java/pkg2/java/applet/AppletContext.java+194−0
@@ -0,0 +1,194 @@
1/*
2 * Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
3 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
4 *
5 *
6 *
7 *
8 *
9 *
10 *
11 *
12 *
13 *
14 *
15 *
16 *
17 *
18 *
19 *
20 *
21 *
22 *
23 *
24 */
25
26package java.applet;
27
28import java.awt.Image;
29import java.awt.Graphics;
30import java.awt.image.ColorModel;
31import java.net.URL;
32import java.util.Enumeration;
33import java.io.InputStream;
34import java.io.IOException;
35import java.util.Iterator;
36
37/**
38 * This interface corresponds to an applet's environment: the
39 * document containing the applet and the other applets in the same
40 * document.
41 * <p>
42 * The methods in this interface can be used by an applet to obtain
43 * information about its environment.
44 *
45 * @author Arthur van Hoff
46 * @since JDK1.0
47 */
48public interface AppletContext {
49 /**
50 * Creates an audio clip.
51 *
52 * @param url an absolute URL giving the location of the audio clip.
53 * @return the audio clip at the specified URL.
54 */
55 AudioClip getAudioClip(URL url);
56
57 /**
58 * Returns an <code>Image</code> object that can then be painted on
59 * the screen. The <code>url</code> argument<code> </code>that is
60 * passed as an argument must specify an absolute URL.
61 * <p>
62 * This method always returns immediately, whether or not the image
63 * exists. When the applet attempts to draw the image on the screen,
64 * the data will be loaded. The graphics primitives that draw the
65 * image will incrementally paint on the screen.
66 *
67 * @param url an absolute URL giving the location of the image.
68 * @return the image at the specified URL.
69 * @see java.awt.Image
70 */
71 Image getImage(URL url);
72
73 /**
74 * Finds and returns the applet in the document represented by this
75 * applet context with the given name. The name can be set in the
76 * HTML tag by setting the <code>name</code> attribute.
77 *
78 * @param name an applet name.
79 * @return the applet with the given name, or <code>null</code> if
80 * not found.
81 */
82 Applet getApplet(String name);
83
84 /**
85 * Finds all the applets in the document represented by this applet
86 * context.
87 *
88 * @return an enumeration of all applets in the document represented by
89 * this applet context.
90 */
91 Enumeration<Applet> getApplets();
92
93 /**
94 * Requests that the browser or applet viewer show the Web page
95 * indicated by the <code>url</code> argument. The browser or
96 * applet viewer determines which window or frame to display the
97 * Web page. This method may be ignored by applet contexts that
98 * are not browsers.
99 *
100 * @param url an absolute URL giving the location of the document.
101 */
102 void showDocument(URL url);
103
104 /**
105 * Requests that the browser or applet viewer show the Web page
106 * indicated by the <code>url</code> argument. The
107 * <code>target</code> argument indicates in which HTML frame the
108 * document is to be displayed.
109 * The target argument is interpreted as follows:
110 * <p>
111 * <center><table border="3" summary="Target arguments and their descriptions">
112 * <tr><th>Target Argument</th><th>Description</th></tr>
113 * <tr><td><code>"_self"</code> <td>Show in the window and frame that
114 * contain the applet.</tr>
115 * <tr><td><code>"_parent"</code><td>Show in the applet's parent frame. If
116 * the applet's frame has no parent frame,
117 * acts the same as "_self".</tr>
118 * <tr><td><code>"_top"</code> <td>Show in the top-level frame of the applet's
119 * window. If the applet's frame is the
120 * top-level frame, acts the same as "_self".</tr>
121 * <tr><td><code>"_blank"</code> <td>Show in a new, unnamed
122 * top-level window.</tr>
123 * <tr><td><i>name</i><td>Show in the frame or window named <i>name</i>. If
124 * a target named <i>name</i> does not already exist, a
125 * new top-level window with the specified name is created,
126 * and the document is shown there.</tr>
127 * </table> </center>
128 * <p>
129 * An applet viewer or browser is free to ignore <code>showDocument</code>.
130 *
131 * @param url an absolute URL giving the location of the document.
132 * @param target a <code>String</code> indicating where to display
133 * the page.
134 */
135 public void showDocument(URL url, String target);
136
137 /**
138 * Requests that the argument string be displayed in the
139 * "status window". Many browsers and applet viewers
140 * provide such a window, where the application can inform users of
141 * its current state.
142 *
143 * @param status a string to display in the status window.
144 */
145 void showStatus(String status);
146
147 /**
148 * Associates the specified stream with the specified key in this
149 * applet context. If the applet context previously contained a mapping
150 * for this key, the old value is replaced.
151 * <p>
152 * For security reasons, mapping of streams and keys exists for each
153 * codebase. In other words, applet from one codebase cannot access
154 * the streams created by an applet from a different codebase
155 * <p>
156 * @param key key with which the specified value is to be associated.
157 * @param stream stream to be associated with the specified key. If this
158 * parameter is <code>null</code>, the specified key is removed
159 * in this applet context.
160 * @throws <code>IOException</code> if the stream size exceeds a certain
161 * size limit. Size limit is decided by the implementor of this
162 * interface.
163 * @since 1.4
164 */
165 public void setStream(String key, InputStream stream)throws IOException;
166
167 /**
168 * Returns the stream to which specified key is associated within this
169 * applet context. Returns <tt>null</tt> if the applet context contains
170 * no stream for this key.
171 * <p>
172 * For security reasons, mapping of streams and keys exists for each
173 * codebase. In other words, applet from one codebase cannot access
174 * the streams created by an applet from a different codebase
175 * <p>
176 * @return the stream to which this applet context maps the key
177 * @param key key whose associated stream is to be returned.
178 * @since 1.4
179 */
180 public InputStream getStream(String key);
181
182 /**
183 * Finds all the keys of the streams in this applet context.
184 * <p>
185 * For security reasons, mapping of streams and keys exists for each
186 * codebase. In other words, applet from one codebase cannot access
187 * the streams created by an applet from a different codebase
188 * <p>
189 * @return an Iterator of all the names of the streams in this applet
190 * context.
191 * @since 1.4
192 */
193 public Iterator<String> getStreamKeys();
194}
java/pkg2/java/applet/AppletStub.java+111−0
@@ -0,0 +1,111 @@
1/*
2 * Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
3 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
4 *
5 *
6 *
7 *
8 *
9 *
10 *
11 *
12 *
13 *
14 *
15 *
16 *
17 *
18 *
19 *
20 *
21 *
22 *
23 *
24 */
25package java.applet;
26
27import java.net.URL;
28
29/**
30 * When an applet is first created, an applet stub is attached to it
31 * using the applet's <code>setStub</code> method. This stub
32 * serves as the interface between the applet and the browser
33 * environment or applet viewer environment in which the application
34 * is running.
35 *
36 * @author Arthur van Hoff
37 * @see java.applet.Applet#setStub(java.applet.AppletStub)
38 * @since JDK1.0
39 */
40public interface AppletStub {
41 /**
42 * Determines if the applet is active. An applet is active just
43 * before its <code>start</code> method is called. It becomes
44 * inactive just before its <code>stop</code> method is called.
45 *
46 * @return <code>true</code> if the applet is active;
47 * <code>false</code> otherwise.
48 */
49 boolean isActive();
50
51
52 /**
53 * Gets the URL of the document in which the applet is embedded.
54 * For example, suppose an applet is contained
55 * within the document:
56 * <blockquote><pre>
57 * http://java.sun.com/products/jdk/1.2/index.html
58 * </pre></blockquote>
59 * The document base is:
60 * <blockquote><pre>
61 * http://java.sun.com/products/jdk/1.2/index.html
62 * </pre></blockquote>
63 *
64 * @return the {@link java.net.URL} of the document that contains the
65 * applet.
66 * @see java.applet.AppletStub#getCodeBase()
67 */
68 URL getDocumentBase();
69
70 /**
71 * Gets the base URL. This is the URL of the directory which contains the applet.
72 *
73 * @return the base {@link java.net.URL} of
74 * the directory which contains the applet.
75 * @see java.applet.AppletStub#getDocumentBase()
76 */
77 URL getCodeBase();
78
79 /**
80 * Returns the value of the named parameter in the HTML tag. For
81 * example, if an applet is specified as
82 * <blockquote><pre>
83 * &lt;applet code="Clock" width=50 height=50&gt;
84 * &lt;param name=Color value="blue"&gt;
85 * &lt;/applet&gt;
86 * </pre></blockquote>
87 * <p>
88 * then a call to <code>getParameter("Color")</code> returns the
89 * value <code>"blue"</code>.
90 *
91 * @param name a parameter name.
92 * @return the value of the named parameter,
93 * or <tt>null</tt> if not set.
94 */
95 String getParameter(String name);
96
97 /**
98 * Returns the applet's context.
99 *
100 * @return the applet's context.
101 */
102 AppletContext getAppletContext();
103
104 /**
105 * Called when the applet wants to be resized.
106 *
107 * @param width the new requested width for the applet.
108 * @param height the new requested height for the applet.
109 */
110 void appletResize(int width, int height);
111}
java/pkg2/java/applet/AudioClip.java+53−0
@@ -0,0 +1,53 @@
1/*
2 * Copyright (c) 1995, 1997, Oracle and/or its affiliates. All rights reserved.
3 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
4 *
5 *
6 *
7 *
8 *
9 *
10 *
11 *
12 *
13 *
14 *
15 *
16 *
17 *
18 *
19 *
20 *
21 *
22 *
23 *
24 */
25
26package java.applet;
27
28/**
29 * The <code>AudioClip</code> interface is a simple abstraction for
30 * playing a sound clip. Multiple <code>AudioClip</code> items can be
31 * playing at the same time, and the resulting sound is mixed
32 * together to produce a composite.
33 *
34 * @author Arthur van Hoff
35 * @since JDK1.0
36 */
37public interface AudioClip {
38 /**
39 * Starts playing this audio clip. Each time this method is called,
40 * the clip is restarted from the beginning.
41 */
42 void play();
43
44 /**
45 * Starts playing this audio clip in a loop.
46 */
47 void loop();
48
49 /**
50 * Stops playing this audio clip.
51 */
52 void stop();
53}
java/pkg2/java/applet/mkfile+11−0
@@ -0,0 +1,11 @@
1<../../../../mkconfig
2
3TARG=\
4 Applet.dis\
5 AppletContext.dis\
6 AppletStub.dis\
7 AudioClip.dis\
8
9DISBIN=$ROOT/java/dis/java/java/applet
10
11<$ROOT/mkfiles/mkjava
java/pkg2/java/awt/AWTError.java+0−0

Empty file added.

java/pkg2/java/awt/AWTEvent.java+0−0

Empty file added.

java/pkg2/java/awt/AWTEventMulticaster.java+0−0

Empty file added.

java/pkg2/java/awt/AWTException.java+0−0

Empty file added.

java/pkg2/java/awt/ActionInputPreferred.java+5−0
@@ -0,0 +1,5 @@
1
2package java.awt;
3
4public interface ActionInputPreferred {
5}
java/pkg2/java/awt/Adjustable.java+0−0

Empty file added.

java/pkg2/java/awt/BorderLayout.java+0−0

Empty file added.

java/pkg2/java/awt/Button.java+0−0

Empty file added.

java/pkg2/java/awt/Canvas.java+0−0

Empty file added.

java/pkg2/java/awt/CardLayout.java+0−0

Empty file added.

java/pkg2/java/awt/Checkbox.java+0−0

Empty file added.

java/pkg2/java/awt/CheckboxGroup.java+0−0

Empty file added.

java/pkg2/java/awt/CheckboxMenuItem.java+0−0

Empty file added.

java/pkg2/java/awt/Choice.java+0−0

Empty file added.

java/pkg2/java/awt/Color.java+0−0

Empty file added.

java/pkg2/java/awt/Component.java+0−0

Empty file added.

java/pkg2/java/awt/Container.java+0−0

Empty file added.

java/pkg2/java/awt/Cursor.java+0−0

Empty file added.

java/pkg2/java/awt/Dialog.java+0−0

Empty file added.

java/pkg2/java/awt/Dimension.java+0−0

Empty file added.

java/pkg2/java/awt/Event.java+0−0

Empty file added.

java/pkg2/java/awt/EventDispatchThread.java+0−0

Empty file added.

java/pkg2/java/awt/EventQueue.java+0−0

Empty file added.

java/pkg2/java/awt/FileDialog.java+0−0

Empty file added.

java/pkg2/java/awt/FlowLayout.java+0−0

Empty file added.

java/pkg2/java/awt/Font.java+0−0

Empty file added.

java/pkg2/java/awt/FontMetrics.java+0−0

Empty file added.

java/pkg2/java/awt/Frame.java+0−0

Empty file added.

java/pkg2/java/awt/Graphics.java+0−0

Empty file added.

java/pkg2/java/awt/GridBagConstraints.java+0−0

Empty file added.

java/pkg2/java/awt/GridBagLayout.java+0−0

Empty file added.

java/pkg2/java/awt/GridLayout.java+0−0

Empty file added.

java/pkg2/java/awt/IllegalComponentStateEx.java+0−0

Empty file added.

java/pkg2/java/awt/Image.java+0−0

Empty file added.

java/pkg2/java/awt/Insets.java+0−0

Empty file added.

java/pkg2/java/awt/ItemSelectable.java+0−0

Empty file added.

java/pkg2/java/awt/KeyboardInputPreferred.java+5−0
@@ -0,0 +1,5 @@
1
2package java.awt;
3
4public interface KeyboardInputPreferred {
5}
java/pkg2/java/awt/Label.java+0−0

Empty file added.

java/pkg2/java/awt/LayoutManager.java+0−0

Empty file added.

java/pkg2/java/awt/LayoutManager2.java+0−0

Empty file added.

java/pkg2/java/awt/List.java+0−0

Empty file added.

java/pkg2/java/awt/MediaTracker.java+0−0

Empty file added.

java/pkg2/java/awt/Menu.java+0−0

Empty file added.

java/pkg2/java/awt/MenuBar.java+0−0

Empty file added.

java/pkg2/java/awt/MenuComponent.java+0−0

Empty file added.

java/pkg2/java/awt/MenuContainer.java+0−0

Empty file added.

java/pkg2/java/awt/MenuItem.java+0−0

Empty file added.

java/pkg2/java/awt/MenuShortcut.java+0−0

Empty file added.

java/pkg2/java/awt/Misc.java+95−0
@@ -0,0 +1,95 @@
1package java.awt;
2
3import java.awt.*;
4
5public class Misc {
6
7 public static void drawDisabledString(String label,int x,int y,Graphics g)
8 {
9 Color c=g.getColor();
10 g.setColor(SystemColor.controlLtHighlight);
11 g.drawString(label,x+1,y+1);
12 g.setColor(SystemColor.controlShadow);
13 g.drawString(label,x,y);
14 g.setColor(c);
15 }
16
17 public static void fill3DRect(int x,int y,int width,int height,boolean raised,Graphics g)
18 {
19 fill3DRect(new Rectangle(x,y,width,height),raised,g);
20 }
21
22 public static void fill3DRect(Rectangle area,boolean raised,Graphics g)
23 {
24 int left=area.x;
25 int top=area.y;
26 int bottom=top+area.height-1;
27 int right=left+area.width-1;
28
29 Color c=g.getColor();
30
31 g.setColor(raised?SystemColor.controlLtHighlight:SystemColor.controlShadow);
32
33 g.drawLine(left,top,right-1,top);
34 g.drawLine(left,top+1,left,bottom);
35
36 g.setColor(raised?SystemColor.controlShadow:SystemColor.controlLtHighlight);
37
38 g.drawLine(right,bottom,right,top);
39 g.drawLine(right-1,bottom,left+1,bottom);
40
41 g.setColor(c);
42
43 g.fillRect(left+1,top+1,area.width-2,area.height-2);
44
45 }
46
47
48 public static void Draw3DArea(int x,int y,int width,int height,Graphics g)
49 {
50 Draw3DArea(new Rectangle(x,y,width,height),g);
51 }
52
53 public static void Draw3DArea(Rectangle area,Graphics g)
54 {
55 int left=area.x;
56 int top=area.y;
57 int bottom=top+area.height-1;
58 int right=left+area.width-1;
59
60 g.setColor(SystemColor.controlHighlight);
61 g.drawLine(left,top,left,bottom-1);
62 g.drawLine(left,top,right-1,top);
63
64 g.setColor(SystemColor.controlLtHighlight);
65 g.drawLine(left+1, top+1, right-2, top+1);
66 g.drawLine(left+1, top+2, left+1, bottom-2);
67
68 g.setColor(SystemColor.controlShadow);
69 g.drawLine(right-1, top+1, right-1, bottom-1);
70 g.drawLine(left+1, bottom-1, right-1, bottom-1);
71
72 g.setColor(SystemColor.controlDkShadow);
73 g.drawLine(right, top, right, bottom);
74 g.drawLine(left, bottom, right, bottom);
75
76
77 }
78
79
80 public static void drawTick(Graphics g,int x,int y,int boxsize)
81
82 {
83 int tickWidth=(boxsize-4)/3;
84 for (int off=0;off<tickWidth;off++)
85 {
86 g.drawLine(x+3,y+boxsize-3-tickWidth-off,x+tickWidth+2,y+boxsize-4-off);
87 g.drawLine(x+tickWidth+3,y+boxsize-5-off,x+boxsize-4,y+tickWidth+2-off);
88 }
89 }
90
91
92
93
94}
95
java/pkg2/java/awt/NoInputPreferred.java+5−0
@@ -0,0 +1,5 @@
1
2package java.awt;
3
4public interface NoInputPreferred {
5}
java/pkg2/java/awt/Panel.java+0−0

Empty file added.

java/pkg2/java/awt/Point.java+0−0

Empty file added.

java/pkg2/java/awt/Polygon.java+0−0

Empty file added.

java/pkg2/java/awt/PopupMenu.java+0−0

Empty file added.

java/pkg2/java/awt/PositionalInputPreferre.java+5−0
@@ -0,0 +1,5 @@
1
2package java.awt;
3
4public interface PositionalInputPreferred {
5}
java/pkg2/java/awt/PrintGraphics.java+0−0

Empty file added.

java/pkg2/java/awt/PrintJob.java+0−0

Empty file added.

java/pkg2/java/awt/Rectangle.java+0−0

Empty file added.

java/pkg2/java/awt/ScrollPane.java+0−0

Empty file added.

java/pkg2/java/awt/Scrollbar.java+0−0

Empty file added.

java/pkg2/java/awt/Shape.java+0−0

Empty file added.

java/pkg2/java/awt/SystemColor.java+0−0

Empty file added.

java/pkg2/java/awt/TextArea.java+0−0

Empty file added.

java/pkg2/java/awt/TextComponent.java+0−0

Empty file added.

java/pkg2/java/awt/TextField.java+0−0

Empty file added.

java/pkg2/java/awt/Toolkit.java+0−0

Empty file added.

java/pkg2/java/awt/Window.java+0−0

Empty file added.

java/pkg2/java/awt/datatransfer/Clipboard.java+0−0

Empty file added.

java/pkg2/java/awt/datatransfer/ClipboardOwner.java+0−0

Empty file added.

java/pkg2/java/awt/datatransfer/DataFlavor.java+0−0

Empty file added.

java/pkg2/java/awt/datatransfer/StringSelection.java+0−0

Empty file added.

java/pkg2/java/awt/datatransfer/Transferable.java+0−0

Empty file added.

java/pkg2/java/awt/datatransfer/UnsupportedFlavorExcept..a+0−0

Empty file added.

java/pkg2/java/awt/datatransfer/mkfile+17−0
@@ -0,0 +1,17 @@
1<../../../../../mkconfig
2
3TARG=\
4 Clipboard.dis\
5 ClipboardOwner.dis\
6 DataFlavor.dis\
7 StringSelection.dis\
8 Transferable.dis\
9# for UnsupportedFlavorException.dis\
10 XJ67lvo7CEuYBAk8ihSb4.dis\
11
12DISBIN=$ROOT/java/dis/java/java/awt/datatransfer
13
14<$ROOT/mkfiles/mkjava
15
16XJ67lvo7CEuYBAk8ihSb4.dis: UnsupportedFlavorException.class
17 j2d $prereq
java/pkg2/java/awt/event/ActionEvent.java+0−0

Empty file added.

java/pkg2/java/awt/event/ActionListener.java+0−0

Empty file added.

java/pkg2/java/awt/event/AdjustmentEvent.java+0−0

Empty file added.

java/pkg2/java/awt/event/AdjustmentListener.java+0−0

Empty file added.

java/pkg2/java/awt/event/ComponentAdapter.java+0−0

Empty file added.

java/pkg2/java/awt/event/ComponentEvent.java+0−0

Empty file added.

java/pkg2/java/awt/event/ComponentListener.java+0−0

Empty file added.

java/pkg2/java/awt/event/ContainerAdapter.java+0−0

Empty file added.

java/pkg2/java/awt/event/ContainerEvent.java+0−0

Empty file added.

java/pkg2/java/awt/event/ContainerListener.java+0−0

Empty file added.

java/pkg2/java/awt/event/FocusAdapter.java+0−0

Empty file added.

java/pkg2/java/awt/event/FocusEvent.java+0−0

Empty file added.

java/pkg2/java/awt/event/FocusListener.java+0−0

Empty file added.

java/pkg2/java/awt/event/InputEvent.java+0−0

Empty file added.

java/pkg2/java/awt/event/ItemEvent.java+0−0

Empty file added.

java/pkg2/java/awt/event/ItemListener.java+0−0

Empty file added.

java/pkg2/java/awt/event/KeyAdapter.java+0−0

Empty file added.

java/pkg2/java/awt/event/KeyEvent.java+0−0

Empty file added.

java/pkg2/java/awt/event/KeyListener.java+0−0

Empty file added.

java/pkg2/java/awt/event/MouseAdapter.java+0−0

Empty file added.

java/pkg2/java/awt/event/MouseEvent.java+0−0

Empty file added.

java/pkg2/java/awt/event/MouseListener.java+0−0

Empty file added.

java/pkg2/java/awt/event/MouseMotionAdapter.java+0−0

Empty file added.

java/pkg2/java/awt/event/MouseMotionListener.java+0−0

Empty file added.

java/pkg2/java/awt/event/PaintEvent.java+0−0

Empty file added.

java/pkg2/java/awt/event/TextEvent.java+0−0

Empty file added.

java/pkg2/java/awt/event/TextListener.java+0−0

Empty file added.

java/pkg2/java/awt/event/WindowAdapter.java+0−0

Empty file added.

java/pkg2/java/awt/event/WindowEvent.java+0−0

Empty file added.

java/pkg2/java/awt/event/WindowListener.java+0−0

Empty file added.

java/pkg2/java/awt/event/mkfile+37−0
@@ -0,0 +1,37 @@
1<../../../../../mkconfig
2
3TARG=\
4 ActionEvent.dis\
5 ActionListener.dis\
6 AdjustmentEvent.dis\
7 AdjustmentListener.dis\
8 ComponentAdapter.dis\
9 ComponentEvent.dis\
10 ComponentListener.dis\
11 ContainerAdapter.dis\
12 ContainerEvent.dis\
13 ContainerListener.dis\
14 FocusAdapter.dis\
15 FocusEvent.dis\
16 FocusListener.dis\
17 InputEvent.dis\
18 ItemEvent.dis\
19 ItemListener.dis\
20 KeyAdapter.dis\
21 KeyEvent.dis\
22 KeyListener.dis\
23 MouseAdapter.dis\
24 MouseEvent.dis\
25 MouseListener.dis\
26 MouseMotionAdapter.dis\
27 MouseMotionListener.dis\
28 PaintEvent.dis\
29 TextEvent.dis\
30 TextListener.dis\
31 WindowAdapter.dis\
32 WindowEvent.dis\
33 WindowListener.dis\
34
35DISBIN=$ROOT/java/dis/java/java/awt/event
36
37<$ROOT/mkfiles/mkjava
java/pkg2/java/awt/image/AreaAveragingScaleFilte.java+0−0

Empty file added.

java/pkg2/java/awt/image/ColorModel.java+0−0

Empty file added.

java/pkg2/java/awt/image/ColorModel_L.b+49−0
@@ -0,0 +1,49 @@
1implement ColorModel_L;
2
3# javal v1.4 generated file: edit with care
4
5include "jni.m";
6 jni : JNI;
7 ClassModule,
8 JString,
9 JArray,
10 JArrayI,
11 JArrayC,
12 JArrayB,
13 JArrayS,
14 JArrayJ,
15 JArrayF,
16 JArrayD,
17 JArrayZ,
18 JArrayJObject,
19 JArrayJClass,
20 JArrayJString,
21 JClass,
22 JThread,
23 JObject : import jni;
24
25#>> extra pre includes here
26
27include "java/lang/ClassLoader_L.m";
28
29#<<
30
31include "ColorModel_L.m";
32
33#>> extra post includes here
34
35#<<
36
37init( jni_p : JNI )
38{
39 # save java native inteface mod instance
40 jni = jni_p;
41 #>>extra initialization here
42 #<<
43}
44
45deletepData_V( this : ref ColorModel_obj)
46{#>>
47 this.pData = 0;
48}#<<
49
java/pkg2/java/awt/image/ColorModel_L.m+15−0
@@ -0,0 +1,15 @@
1# javal v1.4 generated file: edit with care
2
3ColorModel_L : module
4{
5 ColorModel_obj : adt
6 {
7 cl_mod : ClassModule;
8 pData : int;
9 pixel_bits : int;
10 };
11
12 init : fn( jni_p : JNI );
13 deletepData_V : fn( this : ref ColorModel_obj);
14
15};
java/pkg2/java/awt/image/CropImageFilter.java+0−0

Empty file added.

java/pkg2/java/awt/image/DirectColorModel.java+0−0

Empty file added.

java/pkg2/java/awt/image/FilteredImageSource.java+0−0

Empty file added.

java/pkg2/java/awt/image/ImageConsumer.java+0−0

Empty file added.

java/pkg2/java/awt/image/ImageFilter.java+0−0

Empty file added.

java/pkg2/java/awt/image/ImageObserver.java+0−0

Empty file added.

java/pkg2/java/awt/image/ImageProducer.java+0−0

Empty file added.

java/pkg2/java/awt/image/IndexColorModel.java+0−0

Empty file added.

java/pkg2/java/awt/image/MemoryImageSource.java+0−0

Empty file added.

java/pkg2/java/awt/image/PixelGrabber.java+0−0

Empty file added.

java/pkg2/java/awt/image/RGBImageFilter.java+0−0

Empty file added.

java/pkg2/java/awt/image/ReplicateScaleFilter.java+0−0

Empty file added.

java/pkg2/java/awt/image/mkfile+46−0
@@ -0,0 +1,46 @@
1<../../../../../mkconfig
2
3TARG=\
4# for AreaAveragingScaleFilter.dis\
5 CEw7djK-zeE4-ezmJIAZ+.dis\
6 ColorModel.dis\
7 CropImageFilter.dis\
8 DirectColorModel.dis\
9 FilteredImageSource.dis\
10 ImageConsumer.dis\
11 ImageFilter.dis\
12 ImageObserver.dis\
13 ImageProducer.dis\
14 IndexColorModel.dis\
15 MemoryImageSource.dis\
16 PixelGrabber.dis\
17 RGBImageFilter.dis\
18 ReplicateScaleFilter.dis\
19# Limbo code\
20 ColorModel_L.dis\
21
22MODULES=\
23 $ROOT/java/module/classloader.m\
24 $ROOT/java/module/jni.m\
25 $ROOT/java/module/cast.m\
26 ColorModel_L.m\
27
28SYSMODULES=\
29 draw.m\
30 hash.m\
31 keyring.m\
32 loader.m\
33 math.m\
34 string.m\
35 sys.m\
36
37DISBIN=$ROOT/java/dis/java/java/awt/image
38
39<$ROOT/mkfiles/mkjava
40
41LIMBOINCL=\
42 $LIMBOINCL\
43 -I$ROOT/java/pkg\
44
45CEw7djK-zeE4-ezmJIAZ+.dis: AreaAveragingScaleFilter.class
46 j2d AreaAveragingScaleFilter.class
java/pkg2/java/awt/mkfile+138−0
@@ -0,0 +1,138 @@
1<../../../../mkconfig
2
3DIRS=\
4 event\
5 datatransfer\
6 image\
7 peer\
8
9TARG=\
10 AWTError.dis\
11 AWTEvent.dis\
12 AWTEventMulticaster.dis\
13 AWTException.dis\
14 ActionInputPreferred.dis\
15 Adjustable.dis\
16 BorderLayout.dis\
17 Button.dis\
18 Canvas.dis\
19 CardLayout.dis\
20 Checkbox.dis\
21 CheckboxGroup.dis\
22 CheckboxMenuItem.dis\
23 Choice.dis\
24 Choice\$MenuWindow.dis\
25 Color.dis\
26 Component.dis\
27# for Component\$NativeInLightFixer.dis\
28 uU+tI9EeZru56jt4ABTyZ.dis\
29 Container.dis\
30 Cursor.dis\
31 Dialog.dis\
32 Dimension.dis\
33 Event.dis\
34 EventDispatchThread.dis\
35 EventQueue.dis\
36 EventQueueItem.dis\
37 FileDialog.dis\
38 FlowLayout.dis\
39 FocusManager.dis\
40 Font.dis\
41 FontMetrics.dis\
42 Frame.dis\
43 Graphics.dis\
44 GridBagConstraints.dis\
45 GridBagLayout.dis\
46 GridBagLayoutInfo.dis\
47 GridLayout.dis\
48# for IllegalComponentStateException.dis\
49 0xdZMaDu4YDn6Gv1ojXOi.dis\
50 Image.dis\
51 ImageMediaEntry.dis\
52 Insets.dis\
53 ItemSelectable.dis\
54# for KeyboardInputPreferred.dis\
55 tZW2Nc+oIyd6dX0M-UilD.dis\
56 Label.dis\
57 LayoutManager.dis\
58 LayoutManager2.dis\
59 LightweightDispatcher.dis\
60 LightweightPeer.dis\
61 List.dis\
62 MediaEntry.dis\
63 MediaTracker.dis\
64 Menu.dis\
65 MenuBar.dis\
66 MenuComponent.dis\
67 MenuContainer.dis\
68 MenuItem.dis\
69 MenuShortcut.dis\
70 Misc.dis\
71 NoInputPreferred.dis\
72 Panel.dis\
73 Point.dis\
74 Polygon.dis\
75 PopupMenu.dis\
76# for PositionalInputPreferred.dis\
77 8AdFAaM7LI8fj1v6d+cNK.dis\
78 PrintGraphics.dis\
79 PrintJob.dis\
80 Rectangle.dis\
81 ScrollPane.dis\
82 ScrollPane\$PeerFixer.dis\
83 ScrollPaneAdjustable.dis\
84 Scrollbar.dis\
85 Shape.dis\
86 SystemColor.dis\
87 TextArea.dis\
88 TextComponent.dis\
89 TextField.dis\
90 Toolkit.dis\
91 Window.dis\
92
93DISBIN=$ROOT/java/dis/java/java/awt
94
95<$ROOT/mkfiles/mkjava
96<$ROOT/mkfiles/mksubdirs
97
98Choice\$MenuWindow.dis: Choice.class
99 j2d Choice\$MenuWindow.class
100
101uU+tI9EeZru56jt4ABTyZ.dis: Component.class
102 j2d Component\$NativeInLightFixer.class
103
104LightweightDispatcher.dis: Container.class
105 j2d LightweightDispatcher.class
106
107EventQueueItem.dis: EventQueue.class
108 j2d EventQueueItem.class
109
110GridBagLayoutInfo.dis: GridBagLayout.class
111 j2d GridBagLayoutInfo.class
112
1130xdZMaDu4YDn6Gv1ojXOi.dis: IllegalComponentStateException.class
114 j2d $prereq
115
116tZW2Nc+oIyd6dX0M-UilD.dis: KeyboardInputPreferred.class
117 j2d $prereq
118
119ImageMediaEntry.dis: MediaTracker.class
120 j2d ImageMediaEntry.class
121
122MediaEntry.dis: MediaTracker.class
123 j2d MediaEntry.class
124
1258AdFAaM7LI8fj1v6d+cNK.dis: PositionalInputPreferred.class
126 j2d $prereq
127
128ScrollPane\$PeerFixer.dis: ScrollPane.class
129 j2d ScrollPane\$PeerFixer.class
130
131ScrollPaneAdjustable.dis: ScrollPane.class
132 j2d ScrollPaneAdjustable.class
133
134LightweightPeer.dis: Toolkit.class
135 j2d LightweightPeer.class
136
137FocusManager.dis: Window.class
138 j2d FocusManager.class
java/pkg2/java/awt/peer/ActiveEvent.java+0−0

Empty file added.

java/pkg2/java/awt/peer/ButtonPeer.java+0−0

Empty file added.

java/pkg2/java/awt/peer/CanvasPeer.java+0−0

Empty file added.

java/pkg2/java/awt/peer/CheckboxMenuItemPeer.java+0−0

Empty file added.

java/pkg2/java/awt/peer/CheckboxPeer.java+0−0

Empty file added.

java/pkg2/java/awt/peer/ChoicePeer.java+0−0

Empty file added.

java/pkg2/java/awt/peer/ComponentPeer.java+0−0

Empty file added.

java/pkg2/java/awt/peer/ContainerPeer.java+0−0

Empty file added.

java/pkg2/java/awt/peer/DialogPeer.java+0−0

Empty file added.

java/pkg2/java/awt/peer/DoubleBufferingPeer.java+6−0
@@ -0,0 +1,6 @@
1
2package java.awt.peer;
3
4public interface DoubleBufferingPeer {
5 public boolean isDoubleBuffered();
6}
java/pkg2/java/awt/peer/FileDialogPeer.java+0−0

Empty file added.

java/pkg2/java/awt/peer/FontPeer.java+0−0

Empty file added.

java/pkg2/java/awt/peer/FramePeer.java+0−0

Empty file added.

java/pkg2/java/awt/peer/LabelPeer.java+0−0

Empty file added.

java/pkg2/java/awt/peer/LightweightPeer.java+0−0

Empty file added.

java/pkg2/java/awt/peer/ListPeer.java+0−0

Empty file added.

java/pkg2/java/awt/peer/MenuBarPeer.java+0−0

Empty file added.

java/pkg2/java/awt/peer/MenuComponentPeer.java+0−0

Empty file added.

java/pkg2/java/awt/peer/MenuItemPeer.java+0−0

Empty file added.

java/pkg2/java/awt/peer/MenuPeer.java+0−0

Empty file added.

java/pkg2/java/awt/peer/PanelPeer.java+0−0

Empty file added.

java/pkg2/java/awt/peer/PopupMenuPeer.java+0−0

Empty file added.

java/pkg2/java/awt/peer/ScrollPanePeer.java+0−0

Empty file added.

java/pkg2/java/awt/peer/ScrollbarPeer.java+0−0

Empty file added.

java/pkg2/java/awt/peer/TextAreaPeer.java+0−0

Empty file added.

java/pkg2/java/awt/peer/TextComponentPeer.java+0−0

Empty file added.

java/pkg2/java/awt/peer/TextFieldPeer.java+0−0

Empty file added.

java/pkg2/java/awt/peer/WindowPeer.java+0−0

Empty file added.

java/pkg2/java/awt/peer/mkfile+35−0
@@ -0,0 +1,35 @@
1<../../../../../mkconfig
2
3TARG=\
4 ActiveEvent.dis\
5 ButtonPeer.dis\
6 CanvasPeer.dis\
7 CheckboxMenuItemPeer.dis\
8 CheckboxPeer.dis\
9 ChoicePeer.dis\
10 ComponentPeer.dis\
11 ContainerPeer.dis\
12 DialogPeer.dis\
13 DoubleBufferingPeer.dis\
14 FileDialogPeer.dis\
15 FontPeer.dis\
16 FramePeer.dis\
17 LabelPeer.dis\
18 LightweightPeer.dis\
19 ListPeer.dis\
20 MenuBarPeer.dis\
21 MenuComponentPeer.dis\
22 MenuItemPeer.dis\
23 MenuPeer.dis\
24 PanelPeer.dis\
25 PopupMenuPeer.dis\
26 ScrollPanePeer.dis\
27 ScrollbarPeer.dis\
28 TextAreaPeer.dis\
29 TextComponentPeer.dis\
30 TextFieldPeer.dis\
31 WindowPeer.dis\
32
33DISBIN=$ROOT/java/dis/java/java/awt/peer
34
35<$ROOT/mkfiles/mkjava
java/pkg2/java/beans/BeanDescriptor.java+0−0

Empty file added.

java/pkg2/java/beans/BeanInfo.java+0−0

Empty file added.

java/pkg2/java/beans/Beans.java+0−0

Empty file added.

java/pkg2/java/beans/Customizer.java+0−0

Empty file added.

java/pkg2/java/beans/EventSetDescriptor.java+0−0

Empty file added.

java/pkg2/java/beans/FeatureDescriptor.java+0−0

Empty file added.

java/pkg2/java/beans/IndexedPropertyDescript.java+0−0

Empty file added.

java/pkg2/java/beans/IntrospectionException.java+0−0

Empty file added.

java/pkg2/java/beans/Introspector.java+0−0

Empty file added.

java/pkg2/java/beans/MethodDescriptor.java+0−0

Empty file added.

java/pkg2/java/beans/ParameterDescriptor.java+0−0

Empty file added.

java/pkg2/java/beans/PropertyChangeEvent.java+0−0

Empty file added.

java/pkg2/java/beans/PropertyChangeListener.java+0−0

Empty file added.

java/pkg2/java/beans/PropertyChangeSupport.java+0−0

Empty file added.

java/pkg2/java/beans/PropertyDescriptor.java+0−0

Empty file added.

java/pkg2/java/beans/PropertyEditor.java+0−0

Empty file added.

java/pkg2/java/beans/PropertyEditorManager.java+0−0

Empty file added.

java/pkg2/java/beans/PropertyEditorSupport.java+0−0

Empty file added.

java/pkg2/java/beans/PropertyVetoException.java+0−0

Empty file added.

java/pkg2/java/beans/SimpleBeanInfo.java+0−0

Empty file added.

java/pkg2/java/beans/VetoableChangeListener.java+0−0

Empty file added.

java/pkg2/java/beans/VetoableChangeSupport.java+0−0

Empty file added.

java/pkg2/java/beans/Visibility.java+0−0

Empty file added.

java/pkg2/java/beans/mkfile+63−0
@@ -0,0 +1,63 @@
1<../../../../mkconfig
2
3TARG=\
4 BeanDescriptor.dis\
5 BeanInfo.dis\
6 Beans.dis\
7 BeansAppletContext.dis\
8 BeansAppletStub.dis\
9 Customizer.dis\
10 EventSetDescriptor.dis\
11 FeatureDescriptor.dis\
12 GenericBeanInfo.dis\
13# for IndexedPropertyDescriptor.dis\
14 ilsoQHwwPML2uGzS7a9sz.dis\
15# for IntrospectionException.dis\
16 kKxvl0RXJ9GHO1gHFFNvw.dis\
17 Introspector.dis\
18 MethodDescriptor.dis\
19# for ObjectInputStreamWithLoader.dis\
20 fOuvWMGaSExrtMuU8Cw+S.dis\
21 ParameterDescriptor.dis\
22 PropertyChangeEvent.dis\
23# for PropertyChangeListener.dis\
24 M7phJvk2kRU7An2nlvP+n.dis\
25 PropertyChangeSupport.dis\
26 PropertyDescriptor.dis\
27 PropertyEditor.dis\
28 PropertyEditorManager.dis\
29 PropertyEditorSupport.dis\
30 PropertyVetoException.dis\
31 SimpleBeanInfo.dis\
32# for VetoableChangeListener.dis\
33 QD20WmJQo8+7yc9BbLrqW.dis\
34 VetoableChangeSupport.dis\
35 Visibility.dis\
36
37DISBIN=$ROOT/java/dis/java/java/beans
38
39<$ROOT/mkfiles/mkjava
40
41BeansAppletContext.dis: Beans.class
42 j2d BeansAppletContext.class
43
44BeansAppletStub.dis: Beans.class
45 j2d BeansAppletStub.class
46
47fOuvWMGaSExrtMuU8Cw+S.dis: Beans.class
48 j2d ObjectInputStreamWithLoader.class
49
50ilsoQHwwPML2uGzS7a9sz.dis: IndexedPropertyDescriptor.class
51 j2d $prereq
52
53kKxvl0RXJ9GHO1gHFFNvw.dis: IntrospectionException.class
54 j2d $prereq
55
56GenericBeanInfo.dis: Introspector.class
57 j2d GenericBeanInfo.class
58
59M7phJvk2kRU7An2nlvP+n.dis: PropertyChangeListener.class
60 j2d $prereq
61
62QD20WmJQo8+7yc9BbLrqW.dis: VetoableChangeListener.class
63 j2d $prereq
java/pkg2/java/io/BufferedInputStream.java+0−0

Empty file added.

java/pkg2/java/io/BufferedOutputStream.java+0−0

Empty file added.

java/pkg2/java/io/BufferedReader.java+0−0

Empty file added.

java/pkg2/java/io/BufferedWriter.java+0−0

Empty file added.

java/pkg2/java/io/ByteArrayInputStream.java+0−0

Empty file added.

java/pkg2/java/io/ByteArrayOutputStream.java+0−0

Empty file added.

java/pkg2/java/io/CharArrayReader.java+0−0

Empty file added.

java/pkg2/java/io/CharArrayWriter.java+0−0

Empty file added.

java/pkg2/java/io/CharConversionException.java+0−0

Empty file added.

java/pkg2/java/io/DataInput.java+0−0

Empty file added.

java/pkg2/java/io/DataInputStream.java+0−0

Empty file added.

java/pkg2/java/io/DataOutput.java+0−0

Empty file added.

java/pkg2/java/io/DataOutputStream.java+0−0

Empty file added.

java/pkg2/java/io/EOFException.java+0−0

Empty file added.

java/pkg2/java/io/Externalizable.java+0−0

Empty file added.

java/pkg2/java/io/File.java+0−0

Empty file added.

java/pkg2/java/io/FileDescriptor.java+0−0

Empty file added.

java/pkg2/java/io/FileDescriptor_L.b+72−0
@@ -0,0 +1,72 @@
1implement FileDescriptor_L;
2
3# javal v1.3 generated file: edit with care
4
5include "jni.m";
6 jni : JNI;
7 ClassModule,
8 JString,
9 JArray,
10 JArrayI,
11 JArrayC,
12 JArrayB,
13 JArrayS,
14 JArrayJ,
15 JArrayF,
16 JArrayD,
17 JArrayZ,
18 JArrayJObject,
19 JArrayJClass,
20 JArrayJString,
21 JClass,
22 JThread,
23 JObject : import jni;
24
25#>> extra pre includes here
26 sys : import jni;
27 FALSE : import jni;
28 TRUE : import jni;
29#<<
30
31include "FileDescriptor_L.m";
32
33#>> extra post includes here
34#<<
35
36init( jni_p : JNI )
37{
38 # save java native inteface mod instance
39 jni = jni_p;
40 #>>extra initialization here
41 sys = jni->sys;
42 #<<
43}
44
45valid_Z( this : ref FileDescriptor_obj) : int
46{#>>
47 if (this.fd != nil)
48 return TRUE;
49 else
50 return FALSE;
51}#<<
52
53sync_V( this : ref FileDescriptor_obj)
54{#>>
55 # this routine has no meaning in the limbo world because there is
56 # nothing to sync or flush. It may have meaning to each underlying
57 # file system (device driver) but at the present there is no devtab
58 # interface to the device driver for sync. As such, this routine is
59 # a noop.
60 jni->ThrowException("java.io.SyncFailedException", "sync not gauranteed");
61}#<<
62
63initSystemFD_rFileDescriptor_I_rFileDescriptor( p0 : ref FileDescriptor_obj,p1 : int) : ref FileDescriptor_obj
64{#>>
65 p0.fd = sys->fildes(p1);
66 return (p0);
67}#<<
68
69
70
71
72
java/pkg2/java/io/FileDescriptor_L.m+16−0
@@ -0,0 +1,16 @@
1# javal v1.3 generated file: edit with care
2
3FileDescriptor_L : module
4{
5 FileDescriptor_obj : adt
6 {
7 cl_mod : ClassModule;
8 fd : ref Sys->FD;
9 };
10
11 init : fn( jni_p : JNI );
12 valid_Z : fn( this : ref FileDescriptor_obj) : int;
13 sync_V : fn( this : ref FileDescriptor_obj);
14 initSystemFD_rFileDescriptor_I_rFileDescriptor : fn( p0 : ref FileDescriptor_obj,p1 : int) : ref FileDescriptor_obj;
15
16};
java/pkg2/java/io/FileInputStream.java+0−0

Empty file added.

java/pkg2/java/io/FileInputStream_L.b+135−0
@@ -0,0 +1,135 @@
1implement FileInputStream_L;
2
3# javal v1.3 generated file: edit with care
4
5include "jni.m";
6 jni : JNI;
7 ClassModule,
8 JString,
9 JArray,
10 JArrayI,
11 JArrayC,
12 JArrayB,
13 JArrayS,
14 JArrayJ,
15 JArrayF,
16 JArrayD,
17 JArrayZ,
18 JArrayJObject,
19 JArrayJClass,
20 JArrayJString,
21 JClass,
22 JThread,
23 JObject : import jni;
24
25#>> extra pre includes here
26 sys : import jni;
27 FALSE : import jni;
28 TRUE : import jni;
29include "FileDescriptor_L.m";
30 FileDescriptor_obj : import FileDescriptor_L;
31#<<
32
33include "FileInputStream_L.m";
34
35#>> extra post includes here
36#<<
37
38init( jni_p : JNI )
39{
40 # save java native inteface mod instance
41 jni = jni_p;
42 #>>extra initialization here
43 sys = jni->sys;
44 #<<
45}
46
47open_rString_V( this : ref FileInputStream_obj, p0 : JString)
48{#>>
49 # p0 == file name
50
51 if ((p0 == nil) || (p0.str == nil))
52 jni->ThrowException("java.lang.NullPointerException", "str is nil");
53
54 this.fd.fd = sys->open(p0.str, sys->OREAD);
55 if(this.fd.fd == nil)
56 jni->ThrowException("java.io.IOException", "open error");
57}#<<
58
59read_I( this : ref FileInputStream_obj) : int
60{#>>
61 buf := array[1] of byte;
62
63 if (this.fd.fd == nil)
64 jni->ThrowException("java.lang.NullPointerException", "null FileDescriptor");
65 readin := sys->read(this.fd.fd, buf, 1);
66 if (readin == 0) # EOF
67 return -1;
68
69 if (readin < 0)
70 jni->ThrowException("java.io.IOException", sys->sprint("%r"));
71 return (int buf[0]);
72
73}#<<
74
75readBytes_aB_I_I_I( this : ref FileInputStream_obj, p0 : JArrayB,p1 : int,p2 : int) : int
76{#>>
77 # p0 == input buffer (array of bytes)
78 # p1 == offset
79 # p2 == length
80 # read p2 bytes from the file and place them at location (p0 + p1)
81
82 if (this.fd == nil)
83 jni->ThrowException("java.lang.NullPointerException", "null FileDescriptor");
84 if ((p0 == nil) || (p0.ary == nil))
85 jni->ThrowException("java.lang.NullPointerException", "nil buffer pointer");
86 if ((p1 < 0) || (p1 > len p0.ary))
87 jni->ThrowException("java.lang.ArrayIndexOutOfBoundsException",
88 jni->sys->sprint( "offset=%d len buf array=%d", p1, len p0.ary));
89
90 if ((p1 + p2) > len p0.ary)
91 p2 = (len p0.ary) - p1;
92 if (p2 <= 0)
93 return 0;
94
95 n := sys->read(this.fd.fd, p0.ary[p1: len p0.ary], p2);
96 if (n == 0) # EOF
97 return -1;
98
99 if (n < 0)
100 jni->ThrowException("java.io.IOException", sys->sprint("%r"));
101 return n;
102}#<<
103
104skip_J_J( this : ref FileInputStream_obj, p0 : big) : big
105{#>>
106 # skip the next p0 bytes from the Input stream. First find out where you are in
107 # the stream. Next skip the bytes then return the "actual" bytes skipped.
108
109 if (this.fd.fd == nil)
110 jni->ThrowException("java.lang.NullPointerException", "null FileDescriptor");
111 cur := sys->seek(this.fd.fd, 0, sys->SEEKRELA);
112 end := sys->seek(this.fd.fd, (int p0), sys->SEEKRELA);
113 return big (end - cur);
114}#<<
115
116available_I( this : ref FileInputStream_obj) : int
117{#>>
118 if (this.fd.fd == nil)
119 jni->ThrowException("java.lang.NullPointerException", "null FileDescriptor");
120 cur := sys->seek(this.fd.fd, 0, Sys->SEEKRELA);
121 end := sys->seek(this.fd.fd, 0, Sys->SEEKEND);
122 sys->seek(this.fd.fd, cur, Sys->SEEKSTART);
123
124 return (end - cur);
125}#<<
126
127close_V( this : ref FileInputStream_obj)
128{#>>
129 if (this.fd != nil)
130 this.fd.fd = nil;
131}#<<
132
133
134
135
java/pkg2/java/io/FileInputStream_L.m+19−0
@@ -0,0 +1,19 @@
1# javal v1.3 generated file: edit with care
2
3FileInputStream_L : module
4{
5 FileInputStream_obj : adt
6 {
7 cl_mod : ClassModule;
8 fd : ref FileDescriptor_obj;
9 };
10
11 init : fn( jni_p : JNI );
12 open_rString_V : fn( this : ref FileInputStream_obj, p0 : JString);
13 read_I : fn( this : ref FileInputStream_obj) : int;
14 readBytes_aB_I_I_I : fn( this : ref FileInputStream_obj, p0 : JArrayB,p1 : int,p2 : int) : int;
15 skip_J_J : fn( this : ref FileInputStream_obj, p0 : big) : big;
16 available_I : fn( this : ref FileInputStream_obj) : int;
17 close_V : fn( this : ref FileInputStream_obj);
18
19};
java/pkg2/java/io/FileNotFoundException.java+0−0

Empty file added.

java/pkg2/java/io/FileOutputStream.java+0−0

Empty file added.

java/pkg2/java/io/FileOutputStream_L.b+116−0
@@ -0,0 +1,116 @@
1implement FileOutputStream_L;
2
3# javal v1.3 generated file: edit with care
4
5include "jni.m";
6 jni : JNI;
7 ClassModule,
8 JString,
9 JArray,
10 JArrayI,
11 JArrayC,
12 JArrayB,
13 JArrayS,
14 JArrayJ,
15 JArrayF,
16 JArrayD,
17 JArrayZ,
18 JArrayJObject,
19 JArrayJClass,
20 JArrayJString,
21 JClass,
22 JThread,
23 JObject : import jni;
24
25#>> extra pre includes here
26 sys : import jni;
27 FALSE : import jni;
28 TRUE : import jni;
29include "FileDescriptor_L.m";
30 FileDescriptor_obj : import FileDescriptor_L;
31#<<
32
33include "FileOutputStream_L.m";
34
35#>> extra post includes here
36#<<
37
38init( jni_p : JNI )
39{
40 # save java native inteface mod instance
41 jni = jni_p;
42 #>>extra initialization here
43 sys = jni->sys;
44 #<<
45}
46
47open_rString_V( this : ref FileOutputStream_obj, p0 : JString)
48{#>>
49 # open file pointed to by p0. If it does not exists, create it and
50 # and open it with mode of 644.
51
52 if ((p0 == nil) || (p0.str == nil))
53 jni->ThrowException("java.lang.NullPointerException", "null file name");
54
55 this.fd.fd = sys->create(p0.str, sys->OWRITE, 8r666);
56 if(this.fd.fd == nil)
57 jni->ThrowException("java.io.IOException", sys->sprint("%r"));
58}#<<
59
60openAppend_rString_V( this : ref FileOutputStream_obj, p0 : JString)
61{#>>
62 if ((p0 == nil) || (p0.str == nil))
63 jni->ThrowException("java.lang.NullPointerException", "null filename");
64
65 this.fd.fd = sys->open(p0.str, sys->OWRITE);
66 if(this.fd.fd == nil)
67 jni->ThrowException("java.io.IOException", sys->sprint("%r"));
68 sys->seek(this.fd.fd, 0, sys->SEEKEND);
69}#<<
70
71write_I_V( this : ref FileOutputStream_obj, p0 : int)
72{#>>
73 # p0 == character to write
74 c := array[1] of byte;
75 c[0] = byte p0;
76
77 if ((this.fd == nil) || (this.fd.fd == nil))
78 jni->ThrowException("java.lang.NullPointerException", "null FileDescriptor");
79
80 if (sys->write(this.fd.fd, c, 1) != 1)
81 jni->ThrowException("java.io.IOException", sys->sprint("%r"));
82}#<<
83
84writeBytes_aB_I_I_V( this : ref FileOutputStream_obj, p0 : JArrayB,p1 : int,p2 : int)
85{#>>
86 # p0 == buffer array to write from
87 # p1 == offset in buffer
88 # p2 == length to write out
89
90 if ((this.fd == nil) || (this.fd.fd == nil))
91 jni->ThrowException("java.lang.NullPointerException", "null FileDescriptor");
92 if ((p0 == nil) || (p0.ary == nil))
93 jni->ThrowException("java.lang.NullPointerException", nil);
94 if ((p1 < 0) || (p2 < 0) || (p1 > (len p0.ary)))
95 jni->ThrowException("java.lang.ArrayIndexOutOfBoundsException", nil);
96
97 n := 0;
98 while (p2 > 0) {
99 # you can also write the following line as.....
100 # n = sys->write(this.fd.fd, p0.ary[p1:], p2);
101 n = sys->write(this.fd.fd, p0.ary[p1:len p0.ary], p2);
102 if (n == -1) {
103 jni->ThrowException("java.io.IOException", sys->sprint("%r"));
104 break;
105 }
106 p1 += n;
107 p2 -= n;
108 }
109}#<<
110
111close_V( this : ref FileOutputStream_obj)
112{#>>
113 if (this.fd != nil)
114 this.fd.fd = nil;
115}#<<
116
java/pkg2/java/io/FileOutputStream_L.m+18−0
@@ -0,0 +1,18 @@
1# javal v1.3 generated file: edit with care
2
3FileOutputStream_L : module
4{
5 FileOutputStream_obj : adt
6 {
7 cl_mod : ClassModule;
8 fd : ref FileDescriptor_obj;
9 };
10
11 init : fn( jni_p : JNI );
12 open_rString_V : fn( this : ref FileOutputStream_obj, p0 : JString);
13 openAppend_rString_V : fn( this : ref FileOutputStream_obj, p0 : JString);
14 write_I_V : fn( this : ref FileOutputStream_obj, p0 : int);
15 writeBytes_aB_I_I_V : fn( this : ref FileOutputStream_obj, p0 : JArrayB,p1 : int,p2 : int);
16 close_V : fn( this : ref FileOutputStream_obj);
17
18};
java/pkg2/java/io/FileReader.java+0−0

Empty file added.

java/pkg2/java/io/FileWriter.java+0−0

Empty file added.

java/pkg2/java/io/File_L.b+332−0
@@ -0,0 +1,332 @@
1implement File_L;
2
3# javal v1.3 generated file: edit with care
4
5include "jni.m";
6 jni : JNI;
7 ClassModule,
8 JString,
9 JArray,
10 JArrayI,
11 JArrayC,
12 JArrayB,
13 JArrayS,
14 JArrayJ,
15 JArrayF,
16 JArrayD,
17 JArrayZ,
18 JArrayJObject,
19 JArrayJClass,
20 JArrayJString,
21 JClass,
22 JThread,
23 JObject : import jni;
24
25#>> extra pre includes here
26 sys : import jni;
27 str : import jni;
28 FALSE : import jni;
29 TRUE : import jni;
30#<<
31
32include "File_L.m";
33
34#>> extra post includes here
35include "workdir.m";
36include "regex.m";
37str_mod : String;
38#<<
39
40init( jni_p : JNI )
41{
42 # save java native inteface mod instance
43 jni = jni_p;
44 #>>extra initialization here
45 sys = jni->sys;
46 str_mod = jni->str;
47 #<<
48}
49
50exists0_Z( this : ref File_obj) : int
51{#>>
52 (ok, nil) := sys->stat(this.path.str);
53 if (ok == -1)
54 return (FALSE);
55 return (TRUE);
56}#<<
57
58canWrite0_Z( this : ref File_obj) : int
59{#>>
60 # this routine is real cludgy...try to open the file for writing
61 # to see if you have WRITE access rights or not.
62
63 local_fd := sys->open(this.path.str, sys->OWRITE);
64 if (local_fd == nil)
65 return (FALSE);
66 return (TRUE);
67}#<<
68
69canRead0_Z( this : ref File_obj) : int
70{#>>
71 # this routine is real cludgy...try to open the file for reading
72 # to see if you have READ access rights or not.
73
74 local_fd := sys->open(this.path.str, sys->OREAD);
75 if (local_fd == nil)
76 return (FALSE);
77 return (TRUE);
78}#<<
79
80isFile0_Z( this : ref File_obj) : int
81{#>>
82 (ok, dir) := sys->stat(this.path.str);
83 if(ok >= 0 && !(dir.mode & Sys->CHDIR))
84 return (TRUE);
85 return (FALSE);
86}#<<
87
88isDirectory0_Z( this : ref File_obj) : int
89{#>>
90 (ok, dir) := sys->stat(this.path.str);
91 if(ok >= 0 && (dir.mode & Sys->CHDIR))
92 return (TRUE);
93 return (FALSE);
94}#<<
95
96lastModified0_J( this : ref File_obj) : big
97{#>>
98 (ok, dir) := sys->stat(this.path.str);
99 if(ok >= 0)
100 return (big dir.mtime);
101 return (big 0);
102}#<<
103
104length0_J( this : ref File_obj) : big
105{#>>
106 (ok, dir) := sys->stat(this.path.str);
107 if(ok >= 0)
108 return (big dir.length);
109 return (big 0);
110}#<<
111
112mkdir0_Z( this : ref File_obj) : int
113{#>>
114 (ok, nil) := sys->stat(this.path.str);
115 if(ok >= 0)
116 return (FALSE);
117 fd := sys->create(this.path.str, sys->OREAD, sys->CHDIR + 8r777);
118 if(fd == nil)
119 return (FALSE);
120 fd = nil;
121 return (TRUE);
122}#<<
123
124renameTo0_rFile_Z( this : ref File_obj, p0 : ref File_obj) : int
125{#>>
126 # this routine is based on the appl/cmd/mv command in inferno....
127
128 #put from and to file names into complete path names
129 frompath := pathname(this.path.str);
130 topath := pathname(p0.path.str);
131
132 #seperate the name of the file from the directory the files reside in
133 (fromdir, fromname) := split(frompath);
134 (todir, toname) := split(topath);
135
136 (i, dirf) := sys->stat(this.path.str);
137 if ( i == -1 )
138 return FALSE;
139
140 # are the files in the same directory????
141 if ( samefile(fromdir, todir) ) {
142 if ( toname == fromname )
143 return TRUE;
144 (j, dirt) := sys->stat(p0.path.str);
145 if ( j == 0 ) {
146 if ( (dirf.mode | dirt.mode) & Sys->CHDIR )
147 return FALSE;
148 hardremove(topath);
149 }
150 dirf.name = toname;
151 if ( sys->wstat(this.path.str, dirf) >= 0 )
152 return TRUE;
153 }
154 #open the from file....
155 if ( (fdf := sys->open(this.path.str, Sys->OREAD)) == nil )
156 return FALSE;
157
158 #open the to file....
159 if ( (fdt := sys->create(p0.path.str, Sys->OWRITE, dirf.mode)) == nil )
160 return FALSE;;
161
162 #copy data from from file to to file....
163 if ( (stat := copy1(fdf, fdt)) == TRUE ) {
164 fdf = nil;
165 if ( sys->remove(this.path.str) < 0 )
166 return FALSE;
167 }
168 else {
169 fdt = nil;
170 sys->remove(p0.path.str);
171 }
172 return stat;
173}#<<
174
175delete0_Z( this : ref File_obj) : int
176{#>>
177 if (isFile0_Z(this) == TRUE)
178 return (remove0_b(this));
179 return (FALSE);
180}#<<
181
182rmdir0_Z( this : ref File_obj) : int
183{#>>
184 if (isDirectory0_Z(this) == TRUE)
185 return (remove0_b(this));
186 return (FALSE);
187}#<<
188
189list0_aString( this : ref File_obj) : JArrayJString
190{#>>
191 fd := sys->open(this.path.str, sys->OREAD);
192 if(fd == nil) {
193 return nil;
194 }
195
196 dir_array := array[200] of Sys->Dir;
197 n := 0;
198 for(;;){
199 if(len dir_array - n == 0){
200 # expand dir_array
201 nd := array[2 * len dir_array] of Sys->Dir;
202 nd[0:] = dir_array;
203 dir_array = nd;
204 }
205 nr := sys->dirread(fd, dir_array[n:]);
206 if(nr < 0)
207 return nil;
208 if(nr == 0)
209 break;
210 n += nr;
211 }
212 file_name := array[n] of string;
213
214 for(i := 0; i < n; i++)
215 file_name[i] = dir_array[i].name;
216
217 return (jni->MkAString(file_name));
218}#<<
219
220canonPath_rString_rString( this : ref File_obj, p0 : JString) : JString
221{#>>
222 TRACE_1 := this; # to remove warning msg at compile time;
223
224 path := pathname(p0.str) + "/";
225
226 regex := load Regex Regex->PATH;
227 if ( regex == nil )
228 jni->InitError( sys->sprint( "java.io.File: could not load %s: %r", Regex->PATH ) );
229
230 path = squeeze_out(regex, regex->compile("//", 0), "/", path);
231 path = squeeze_out(regex, regex->compile("/\\./", 0), "/", path);
232 path = squeeze_out(regex, regex->compile("/[^/]+/\\.\\./", 0), "/", path);
233
234 if ( len path > 1 && path[len path - 1] == '/' )
235 path = path[0:len path - 1];
236
237 return (jni->NewString( path));
238}#<<
239
240isAbsolute_Z( this : ref File_obj) : int
241{#>>
242 if (str_mod->prefix("/", this.path.str))
243 return (TRUE);
244 return (FALSE);
245}#<<
246
247
248
249
250
251remove0_b( this : ref File_obj) : int
252{
253 if (sys->remove(this.path.str) < 0)
254 return (FALSE);
255 return (TRUE);
256}
257
258copy1(fdf, fdt : ref Sys->FD): int
259{
260 n : int;
261 buf := array[8192] of byte;
262
263 for ( ; ; ) {
264 n = sys->read(fdf, buf, len buf);
265 if (n<=0)
266 break;
267 n1 := sys->write(fdt, buf, n);
268 if ( n1 != n )
269 return FALSE;
270 }
271 if ( n < 0 )
272 return FALSE;
273 return TRUE;
274}
275
276#convert a file name into complete path name
277pathname(p : string) : string
278{
279 if ( p == nil || p[0] == '/' )
280 return p;
281 gwd := load Workdir Workdir->PATH;
282 if ( gwd == nil )
283 jni->InitError( sys->sprint( "java.io.File: could not load %s: %r", Workdir->PATH ) );
284
285 wd := gwd->init();
286 if ( len wd == 0 )
287 return p;
288 return wd + "/" + p;
289}
290
291#pull out the name of the file only
292split(name : string): (string,string)
293{
294 (d,t) := str_mod->splitr(name, "/");
295 if ( d != nil )
296 return(d,t);
297 else if ( name == ".." )
298 return("../",".");
299 else
300 return("./",name);
301}
302
303# return TRUE if file a is same as file b
304samefile(a,b : string): int
305{
306 if ( a == b )
307 return 1;
308 (i, file_a) := sys->stat(a);
309 (j, file_b) := sys->stat(b);
310 if ( i < 0 || j < 0 )
311 return 0;
312 i = ((file_a.qid.path == file_b.qid.path) && (file_a.qid.vers == file_b.qid.vers) &&
313 (file_a.dev == file_b.dev) && (file_a.dtype == file_b.dtype));
314 return i;
315}
316
317hardremove(a: string)
318{
319 do; while ( sys->remove(a) != -1 );
320}
321
322squeeze_out(r : Regex, pat : Regex->Re, repl, str :string) : string
323{
324 while ( str_mod->prefix("/../", str) )
325 str = str[3:];
326 a := r->execute(pat, str);
327 if (a == nil)
328 return str;
329 (beg, end) := a[0];
330 str = str[0:beg] + repl + str[end:];
331 return squeeze_out(r, pat, repl, str);
332}
java/pkg2/java/io/File_L.m+27−0
@@ -0,0 +1,27 @@
1# javal v1.3 generated file: edit with care
2
3File_L : module
4{
5 File_obj : adt
6 {
7 cl_mod : ClassModule;
8 path : JString;
9 };
10
11 init : fn( jni_p : JNI );
12 exists0_Z : fn( this : ref File_obj) : int;
13 canWrite0_Z : fn( this : ref File_obj) : int;
14 canRead0_Z : fn( this : ref File_obj) : int;
15 isFile0_Z : fn( this : ref File_obj) : int;
16 isDirectory0_Z : fn( this : ref File_obj) : int;
17 lastModified0_J : fn( this : ref File_obj) : big;
18 length0_J : fn( this : ref File_obj) : big;
19 mkdir0_Z : fn( this : ref File_obj) : int;
20 renameTo0_rFile_Z : fn( this : ref File_obj, p0 : ref File_obj) : int;
21 delete0_Z : fn( this : ref File_obj) : int;
22 rmdir0_Z : fn( this : ref File_obj) : int;
23 list0_aString : fn( this : ref File_obj) : JArrayJString;
24 canonPath_rString_rString : fn( this : ref File_obj, p0 : JString) : JString;
25 isAbsolute_Z : fn( this : ref File_obj) : int;
26
27};
java/pkg2/java/io/FilenameFilter.java+0−0

Empty file added.

java/pkg2/java/io/FilterInputStream.java+0−0

Empty file added.

java/pkg2/java/io/FilterOutputStream.java+0−0

Empty file added.

java/pkg2/java/io/FilterReader.java+0−0

Empty file added.

java/pkg2/java/io/FilterWriter.java+0−0

Empty file added.

java/pkg2/java/io/IOException.java+0−0

Empty file added.

java/pkg2/java/io/InputStream.java+0−0

Empty file added.

java/pkg2/java/io/InputStreamReader.java+0−0

Empty file added.

java/pkg2/java/io/InterruptedIOException.java+0−0

Empty file added.

java/pkg2/java/io/InvalidClassException.java+0−0

Empty file added.

java/pkg2/java/io/InvalidObjectException.java+0−0

Empty file added.

java/pkg2/java/io/LineNumberInputStream.java+0−0

Empty file added.

java/pkg2/java/io/LineNumberReader.java+0−0

Empty file added.

java/pkg2/java/io/NotActiveException.java+0−0

Empty file added.

java/pkg2/java/io/NotSerializableExceptio.java+0−0

Empty file added.

java/pkg2/java/io/ObjectInput.java+0−0

Empty file added.

java/pkg2/java/io/ObjectInputStream.java+0−0

Empty file added.

java/pkg2/java/io/ObjectInputStream_L.b+397−0
@@ -0,0 +1,397 @@
1implement ObjectInputStream_L;
2
3# javal v1.3 generated file: edit with care
4
5include "jni.m";
6 jni : JNI;
7 ClassModule,
8 JString,
9 JArray,
10 JArrayI,
11 JArrayC,
12 JArrayB,
13 JArrayS,
14 JArrayJ,
15 JArrayF,
16 JArrayD,
17 JArrayZ,
18 JArrayJObject,
19 JArrayJClass,
20 JArrayJString,
21 JClass,
22 JThread,
23 JObject : import jni;
24
25#>> extra pre includes here
26 sys : import jni;
27 str : import jni;
28 FALSE : import jni;
29 TRUE : import jni;
30#<<
31
32include "ObjectInputStream_L.m";
33
34#>> extra post includes here
35include "workdir.m";
36include "regex.m";
37str_mod : String;
38ClassData, Value : import jni;
39cast : Cast;
40low : Low;
41#<<
42
43init( jni_p : JNI )
44{
45 # save java native inteface mod instance
46 jni = jni_p;
47 #>>extra initialization here
48 sys = jni->sys;
49 str_mod = jni->str;
50 cast = jni->CastMod();
51 low = jni->LowMod();
52 #<<
53}
54
55loadClass0_rClass_rString_rClass( this : ref ObjectInputStream_obj, p0 : JClass,p1 : JString) : JClass
56{#>>
57 TRACE_1 := (this, p0);
58 if(p1.str[0] == '[')
59 return jni->LookupArrayClass(p1.str);
60 else
61 return jni->GetClassObject( jni->FindClass(p1.str) );
62}#<<
63
64inputClassFields_rObject_rClass_aI_V( this : JObject, p0 : JObject,p1 : JClass,p2 : JArrayI)
65{#>>
66 #p0 the object being inputted
67 #p1 class being referred to
68 #p2 fieldSequence array
69
70 ok : int;
71 val : ref Value;
72 #
73 # get all fields except the transient and static
74 #
75 fields_n_sigs := jni->GetFieldSignatures(p1, (JNI->ACC_STATIC|JNI->ACC_TRANSIENT));
76 #
77 # for each field, parse out the field name and signature. Then based on the
78 # signature, call the appropriate read routine.
79 #
80 for (i:=0; i < len p2.ary; i += 2) {
81 fldindex := p2.ary[i+1];
82
83 (str_part, tmp_str) := str_mod->splitl((fields_n_sigs.ary[fldindex]).str, " ");
84 sig_part := tmp_str[1];
85 #
86 # call the appropriate read routine to get the value of this field
87 #
88 case sig_part {
89 # SIGNATURE_BYTE
90 'B' =>
91 (val, ok) = jni->CallMethod(this, "readByte", "()B", nil);
92 # SIGNATURE_CHAR
93 'C' =>
94 (val, ok) = jni->CallMethod(this, "readChar", "()C", nil);
95 # SIGNATURE_FLOAT
96 'F' =>
97 (val, ok) = jni->CallMethod(this, "readFloat", "()F", nil);
98 # SIGNATURE_DOUBLE
99 'D' =>
100 (val, ok) = jni->CallMethod(this, "readDouble", "()D", nil);
101 # SIGNATURE_INT
102 'I' =>
103 (val, ok) = jni->CallMethod(this, "readInt", "()I", nil);
104 # SIGNATURE_LONG
105 'J' =>
106 (val, ok) = jni->CallMethod(this, "readLong", "()J", nil);
107 # SIGNATURE_SHORT
108 'S' =>
109 (val, ok) = jni->CallMethod(this, "readShort", "()S", nil);
110 # SIGNATURE_BOOLEAN
111 'Z' =>
112 (val, ok) = jni->CallMethod(this, "readBoolean", "()Z", nil);
113 # SIGNATURE_ARRAY
114 '[' =>
115 (val, ok) = jni->CallMethod(this, "readObject", "()Ljava/lang/Object;", nil);
116 # SIGNATURE_CLASS
117 'L' =>
118 (val, ok) = jni->CallMethod(this, "readObject", "()Ljava/lang/Object;", nil);
119 }
120 #
121 # now take that just readin value and store into the object.
122 #
123 if (ok == JNI->OK)
124 jni->SetObjField(p0, str_part, val);
125 }
126}#<<
127
128inputArrayValues_rObject_rClass_V( this : JObject, p0 : JObject,p1 : JClass)
129{#>>
130 # p0 is an array of Objects. We have to look at the signature
131 # of the array to find what the Objects really are.
132 #
133 # p1 the class name of the elements of the array (this is also
134 # the arrays signature)
135 #
136 # make sure this is an array we have. If so, get its length.
137 #
138 if ( jni->IsArray(p0) == JNI->FALSE) {
139 jni->ThrowException("java.io.InvalidClassException", "Not an array");
140 }
141 length := jni->GetArrayLength(cast->ToJArray(p0));
142 ok : int;
143 val : ref Value;
144
145 #
146 # dispatch on the signature of the array and read in each element.
147 #
148 i : int;
149 case p1.aryname[1] {
150 # SIGNATURE_BYTE
151 'B' =>
152 {
153 mul_args := array[3] of ref Value;
154 mul_args[0] = ref Value.TObject(p0);
155 mul_args[1] = ref Value.TInt(0);
156 mul_args[2] = ref Value.TInt(length);
157 (val, ok) = jni->CallMethod(this, "readFully", "([BII)V", mul_args);
158 }
159 # SIGNATURE_CHAR
160 'C' =>
161 {
162 JAChar := cast->ToJArrayI(p0);
163 for (i = 0; i < length; i++) {
164 (val, ok) = jni->CallMethod(this, "readChar", "()C", nil);
165 JAChar.ary[i] = val.Char();
166 }
167 }
168 # SIGNATURE_FLOAT
169 'F' =>
170 {
171 JAFloat := cast->ToJArrayF(p0);
172 for (i = 0; i < length; i++) {
173 (val, ok) = jni->CallMethod(this, "readFloat", "()F", nil);
174 JAFloat.ary[i] = val.Float();
175 }
176 }
177 # SIGNATURE_DOUBLE
178 'D' =>
179 {
180 JADouble := cast->ToJArrayD(p0);
181 for (i = 0; i < length; i++) {
182 (val, ok) = jni->CallMethod(this, "readDouble", "()D", nil);
183 JADouble.ary[i] = val.Double();
184 }
185 }
186 # SIGNATURE_INT
187 'I' =>
188 {
189 JAInt := cast->ToJArrayI(p0);
190 for (i = 0; i < length; i++) {
191 (val, ok) = jni->CallMethod(this, "readInt", "()I", nil);
192 JAInt.ary[i] = val.Int();
193 }
194 }
195 # SIGNATURE_LONG
196 'J' =>
197 {
198 JALong := cast->ToJArrayJ(p0);
199 for (i = 0; i < length; i++) {
200 (val, ok) = jni->CallMethod(this, "readLong", "()J", nil);
201 JALong.ary[i] = val.Long();
202 }
203 }
204 # SIGNATURE_SHORT
205 'S' =>
206 {
207 JAShort := cast->ToJArrayI(p0);
208 for (i = 0; i < length; i++) {
209 (val, ok) = jni->CallMethod(this, "readShort", "()S", nil);
210 JAShort.ary[i] = val.Short();
211 }
212 }
213 # SIGNATURE_BOOLEAN
214 'Z' =>
215 {
216 JABool := cast->ToJArrayZ(p0);
217 for (i = 0; i < length; i++) {
218 (val, ok) = jni->CallMethod(this, "readBoolean", "()Z", nil);
219 JABool.ary[i] = byte val.Boolean();
220 }
221 }
222 # SIGNATURE_ARRAY
223 '[' =>
224 {
225 JAObj := cast->ToJArrayJObject(p0);
226 for (i = 0; i < length; i++) {
227 (val, ok) = jni->CallMethod(this, "readObject", "()Ljava/lang/Object;", nil);
228 JAObj.ary[i] = val.Object();
229 }
230 }
231 # SIGNATURE_CLASS
232 'L' =>
233 {
234 JAObj := cast->ToJArrayJObject(p0);
235 for (i = 0; i < length; i++) {
236 (val, ok) = jni->CallMethod(this, "readObject", "()Ljava/lang/Object;", nil);
237 JAObj.ary[i] = val.Object();
238 }
239 }
240 }
241}#<<
242
243#
244# Does class c directly implement interface iface?
245#
246directImp(c: ClassData, iface: string): int
247{
248 l := c.interdirect;
249 while(l != nil) {
250 i := hd l;
251 if(i.name == iface)
252 return 1;
253 l = tl l;
254 }
255 return 0;
256}
257
258#
259# If c directly implements Externalizable, then call its default
260# constructor (if there is one).
261# Otherwise, c must directly implement Serializable. In this case,
262# find the nearest super that doesn't implement Serializable and call
263# its default constructor (if there is one).
264# In either case, if there is a constructor to call, then it must be public.
265# If not, an IllegalAccessException is thrown.
266#
267
268callCtor(c: ClassData, o: JObject)
269{
270 if(directImp(c, "java/io/Externalizable") == 0) {
271 if(directImp(c, "java/io/Serializable") == 0)
272 return;
273 c = c.super;
274 while(c != nil) {
275 if(directImp(c, "java/io/Serializable") == 0)
276 break;
277 c = c.super;
278 }
279 }
280 if(c == nil)
281 return;
282 (mod, ix) := jni->FindMethod(c, "<init>", "()V", JNI->METH_INIT);
283 if(mod == nil)
284 return;
285 flags := jni->GetMethodFlags(c.this, "<init> ()V");
286 if((flags & JNI->ACC_PUBLIC) == 0)
287 jni->ThrowException("java.lang.IllegalAccessException", "");
288 low->CallMethod(mod, ix, o, array[0] of ref Value, nil);
289}
290
291#
292# Allocate a new object of class p0.
293#
294allocateNewObject_rClass_rClass_rObject(p0 : JClass, p1 : JClass) : JObject
295{#>>
296 TRACE_1 := p1;
297 o := jni->AllocObject(p0.class);
298 callCtor(p0.class, o);
299 return o;
300}#<<
301
302allocateNewArray_rClass_I_rObject( p0 : JClass,p1 : int) : JObject
303{#>>
304 #
305 # p0 is the class of the array elements
306 # p1 is number of elelments.
307 #
308 #
309 # example transformation.....
310 # jni->MkALong(array[p1] of big) ==> JArrayJ
311 # cast->BigToJArray(JArrayJ (aka BigArray)) ==> JArray
312 # cast->FromJArray(JArray) ==> JObject
313 #
314 case p0.aryname[1] {
315 # SIGNATURE_BYTE
316 'B' =>
317 {
318 # limbo array ==>JArrayB ==>JArray ==>JObject
319 return (cast->FromJArray(cast->ByteToJArray(jni->MkAByte(array[p1] of byte))));
320 }
321 # SIGNATURE_CHAR
322 'C' =>
323 {
324 # limbo array ==>JArrayC ==>JArray ==>JObject
325 return (cast->FromJArray(cast->IntToJArray(jni->MkAChar(array[p1] of int))));
326 }
327 # SIGNATURE_FLOAT
328 'F' =>
329 {
330 # limbo array ==>JArrayF ==>JArray ==>JObject
331 return (cast->FromJArray(cast->RealToJArray(jni->MkAFloat(array[p1] of real))));
332 }
333 # SIGNATURE_DOUBLE
334 'D' =>
335 {
336 # limbo array ==>JArrayD ==>JArray ==>JObject
337 return (cast->FromJArray(cast->RealToJArray(jni->MkADouble(array[p1] of real))));
338 }
339 # SIGNATURE_INT
340 'I' =>
341 {
342 # limbo array ==>JArrayI ==>JArray ==>JObject
343 return (cast->FromJArray(cast->IntToJArray(jni->MkAInt(array[p1] of int))));
344 }
345 # SIGNATURE_LONG
346 'J' =>
347 {
348 # limbo array ==>JArrayJ ==>JArray ==>JObject
349 return (cast->FromJArray(cast->BigToJArray(jni->MkALong(array[p1] of big))));
350 }
351 # SIGNATURE_SHORT
352 'S' =>
353 {
354 # limbo array ==>JArrayS ==>JArray ==>JObject
355 return (cast->FromJArray(cast->IntToJArray(jni->MkAShort(array[p1] of int))));
356 }
357 # SIGNATURE_BOOLEAN
358 'Z' =>
359 {
360 # limbo array ==>JArrayZ ==>JArray ==>JObject
361 return (cast->FromJArray(cast->ByteToJArray(jni->MkABoolean(array[p1] of byte))));
362 }
363 # SIGNATURE_ARRAY
364 '[' =>
365 {
366 objarray := cast->ObjectToJArray(jni->MkAObject(array[p1] of JObject));
367 desc := jni->JSigToDescriptor(p0.aryname);
368 objarray.dims = desc.dims;
369 objarray.class = desc.class;
370 objarray.primitive = desc.prim;
371 return (cast->FromJArray(objarray));
372 }
373 # SIGNATURE_CLASS
374 'L' =>
375 {
376 objarray := cast->ObjectToJArray(jni->MkAObject(array[p1] of JObject));
377 objarray.class = jni->FindClass(p0.aryname[2:len p0.aryname-1]);
378 return (cast->FromJArray(objarray));
379 }
380 }
381 jni->ThrowException("java.io.InvalidClassException", "Unknown signature");
382 return nil;
383}#<<
384
385invokeObjectReader_rObject_rClass_Z( this : JObject, p0 : JObject,p1 : JClass) : int
386{#>>
387 junk := p1;
388 #
389 # call readObject() on object "p0" with an argument of "this"
390 #
391 MyValueArray := array[] of {
392 ref Value.TObject(this)
393 };
394 (a, b) := jni->CallMethod(p0, "readObject", "(Ljava/io/ObjectInputStream;)V", MyValueArray);
395
396 return b == JNI->OK;
397}#<<
java/pkg2/java/io/ObjectInputStream_L.m+36−0
@@ -0,0 +1,36 @@
1# generated file edit with care
2
3ObjectInputStream_L : module
4{
5 ObjectInputStream_obj : adt
6 {
7 cl_mod : ClassModule;
8 in : JObject;
9 count : int;
10 blockDataMode : byte;
11 dis : JObject;
12 abortIOException : JObject;
13 abortClassNotFoundException : JObject;
14 currentObject : JObject;
15 currentClassDesc : JObject;
16 currentClass : JClass;
17 classdesc : JArrayJObject;
18# classes : JArrayJClass;
19 spClass : int;
20 wireHandle2Object : JObject;
21 nextWireOffset : int;
22 callbacks : JObject;
23 recursionDepth : int;
24 currCode : byte;
25 enableResolve : byte;
26 };
27
28 init : fn( jni_p : JNI );
29 loadClass0_rClass_rString_rClass : fn( this : ref ObjectInputStream_obj, p0 : JClass,p1 : JString) : JClass;
30 inputClassFields_rObject_rClass_aI_V : fn( this : JObject, p0 : JObject,p1 : JClass,p2 : JArrayI);
31 inputArrayValues_rObject_rClass_V : fn( this : JObject, p0 : JObject,p1 : JClass);
32 allocateNewObject_rClass_rClass_rObject : fn( p0 : JClass,p1 : JClass) : JObject;
33 allocateNewArray_rClass_I_rObject : fn( p0 : JClass,p1 : int) : JObject;
34 invokeObjectReader_rObject_rClass_Z : fn( this : JObject, p0 : JObject,p1 : JClass) : int;
35
36};
java/pkg2/java/io/ObjectInputValidation.java+0−0

Empty file added.

java/pkg2/java/io/ObjectOutput.java+0−0

Empty file added.

java/pkg2/java/io/ObjectOutputStream.java+0−0

Empty file added.

java/pkg2/java/io/ObjectOutputStream_L.b+257−0
@@ -0,0 +1,257 @@
1implement ObjectOutputStream_L;
2
3# javal v1.3 generated file: edit with care
4
5include "jni.m";
6 jni : JNI;
7 ClassModule,
8 JString,
9 JArray,
10 JArrayI,
11 JArrayC,
12 JArrayB,
13 JArrayS,
14 JArrayJ,
15 JArrayF,
16 JArrayD,
17 JArrayZ,
18 JArrayJObject,
19 JArrayJClass,
20 JArrayJString,
21 JClass,
22 JThread,
23 JObject : import jni;
24
25#>> extra pre includes here
26 sys : import jni;
27 str : import jni;
28 FALSE : import jni;
29 TRUE : import jni;
30#<<
31
32include "ObjectOutputStream_L.m";
33
34#>> extra post includes here
35include "workdir.m";
36include "regex.m";
37str_mod : String;
38Value : import jni;
39cast : Cast;
40#<<
41
42init( jni_p : JNI )
43{
44 # save java native inteface mod instance
45 jni = jni_p;
46 #>>extra initialization here
47 sys = jni->sys;
48 str_mod = jni->str;
49 cast = jni->CastMod();
50 #<<
51}
52
53outputClassFields_rObject_rClass_aI_V( this : JObject, p0 : JObject,p1 : JClass,p2 : JArrayI)
54{#>>
55
56 class := jni->GetObjectClass(p0);
57 #p0 the object being outputted
58 #p1 class being referred to
59 #p2 fieldSequence array
60
61 a : ref Value;
62 b : int;
63 #
64 # get all fields except the transient and static
65 #
66 fields_n_sigs := jni->GetFieldSignatures(p1, (JNI->ACC_STATIC|JNI->ACC_TRANSIENT));
67 #
68 # for each field, parse out the field name and signature. Then based on the
69 # signature, call the appropriate write routine.
70 #
71 for (i:=0; i < len p2.ary; i += 2) {
72 fldindex := p2.ary[i+1];
73
74 (str_part, tmp_str) := str_mod->splitl((fields_n_sigs.ary[fldindex]).str, " ");
75 sig_part := tmp_str[1];
76 #
77 # get the value of this field and call the write routine
78 #
79 argv := array[] of {
80 jni->GetObjField(p0, str_part, tmp_str[1:])
81 };
82 pick v := argv[0] {
83 TByte =>
84 argv[0] = ref Value.TInt(v.jbyte);
85 TChar =>
86 argv[0] = ref Value.TInt(v.jchar);
87 TShort =>
88 argv[0] = ref Value.TInt(v.jshort);
89 }
90 case sig_part {
91 # SIGNATURE_BYTE
92 'B' =>
93 (a, b) = jni->CallMethod(this, "writeByte", "(I)V", argv);
94 # SIGNATURE_CHAR
95 'C' =>
96 (a, b) = jni->CallMethod(this, "writeChar", "(I)V", argv);
97 # SIGNATURE_FLOAT
98 'F' =>
99 (a, b) = jni->CallMethod(this, "writeFloat", "(F)V", argv);
100 # SIGNATURE_DOUBLE
101 'D' =>
102 (a, b) = jni->CallMethod(this, "writeDouble", "(D)V", argv);
103 # SIGNATURE_INT
104 'I' =>
105 (a, b) = jni->CallMethod(this, "writeInt", "(I)V", argv);
106 # SIGNATURE_LONG
107 'J' =>
108 (a, b) = jni->CallMethod(this, "writeLong", "(J)V", argv);
109 # SIGNATURE_SHORT
110 'S' =>
111 (a, b) = jni->CallMethod(this, "writeShort", "(I)V", argv);
112 # SIGNATURE_BOOLEAN
113 'Z' =>
114 (a, b) = jni->CallMethod(this, "writeBoolean", "(Z)V", argv);
115 # SIGNATURE_ARRAY
116 '[' =>
117 (a, b) = jni->CallMethod(this, "writeObject", "(Ljava/lang/Object;)V", argv);
118 # SIGNATURE_CLASS
119 'L' =>
120 (a, b) = jni->CallMethod(this, "writeObject", "(Ljava/lang/Object;)V", argv);
121 }
122 }
123}#<<
124
125outputArrayValues_rObject_rClass_V( this : JObject, p0 : JObject,p1 : JClass)
126{#>>
127 # p0 the array being outputted
128 # p1 the class name of the elements of the array (this is also the arrays signature)
129 #
130 #
131 # make sure this is an array we have. If so, get the
132 # length and write it out.
133 #
134 if ( jni->IsArray(p0) == JNI->FALSE) {
135 jni->ThrowException("java.io.InvalidClassException", "Not an array");
136 }
137 length := jni->GetArrayLength(cast->ToJArray(p0));
138 argv := array[1] of ref Value;
139 argv[0] = ref Value.TInt(length);
140 (a, b) := jni->CallMethod(this, "writeInt", "(I)V", argv);
141
142 #
143 # dispatch on the signature of the array and print out each element.
144 #
145 i : int;
146 case p1.aryname[1] {
147 # SIGNATURE_BYTE
148 'B' =>
149 {
150 JAByte := cast->ToJArrayB(p0);
151 for (i = 0; i < length; i++) {
152 argv[0] = ref Value.TInt(int JAByte.ary[i]);
153 (a, b) = jni->CallMethod(this, "writeByte", "(I)V", argv);
154 }
155 }
156 # SIGNATURE_CHAR
157 'C' =>
158 {
159 JAChar := cast->ToJArrayI(p0);
160 for (i = 0; i < length; i++) {
161 argv[0] = ref Value.TInt(JAChar.ary[i]);
162 (a, b) = jni->CallMethod(this, "writeChar", "(I)V", argv);
163 }
164 }
165 # SIGNATURE_FLOAT
166 'F' =>
167 {
168 JAFloat := cast->ToJArrayF(p0);
169 for (i = 0; i < length; i++) {
170 argv[0] = ref Value.TFloat(JAFloat.ary[i]);
171 (a, b) = jni->CallMethod(this, "writeFloat", "(F)V", argv);
172 }
173 }
174 # SIGNATURE_DOUBLE
175 'D' =>
176 {
177 JADouble := cast->ToJArrayD(p0);
178 for (i = 0; i < length; i++) {
179 argv[0] = ref Value.TDouble(JADouble.ary[i]);
180 (a, b) = jni->CallMethod(this, "writeDouble", "(D)V", argv);
181 }
182 }
183 # SIGNATURE_INT
184 'I' =>
185 {
186 JAInt := cast->ToJArrayI(p0);
187 for (i = 0; i < length; i++) {
188 argv[0] = ref Value.TInt(JAInt.ary[i]);
189 (a, b) = jni->CallMethod(this, "writeInt", "(I)V", argv);
190 }
191 }
192 # SIGNATURE_LONG
193 'J' =>
194 {
195 JALong := cast->ToJArrayJ(p0);
196 for (i = 0; i < length; i++) {
197 argv[0] = ref Value.TLong(JALong.ary[i]);
198 (a, b) = jni->CallMethod(this, "writeLong", "(J)V", argv);
199 }
200 }
201 # SIGNATURE_SHORT
202 'S' =>
203 {
204 JAShort := cast->ToJArrayI(p0);
205 for (i = 0; i < length; i++) {
206 argv[0] = ref Value.TInt(JAShort.ary[i]);
207 (a, b) = jni->CallMethod(this, "writeShort", "(I)V", argv);
208 }
209 }
210 # SIGNATURE_BOOLEAN
211 'Z' =>
212 {
213 JABool := cast->ToJArrayZ(p0);
214 for (i = 0; i < length; i++) {
215 argv[0] = ref Value.TBoolean(int JABool.ary[i]);
216 (a, b) = jni->CallMethod(this, "writeBoolean", "(Z)V", argv);
217 }
218 }
219 # SIGNATURE_ARRAY
220 '[' =>
221 {
222 JAObj := cast->ToJArrayJObject(p0);
223 for (i = 0; i < length; i++) {
224 argv[0] = ref Value.TObject(JAObj.ary[i]);
225 (a, b) = jni->CallMethod(this, "writeObject", "(Ljava/lang/Object;)V", argv);
226 }
227 }
228 # SIGNATURE_CLASS
229 'L' =>
230 {
231 JAObj := cast->ToJArrayJObject(p0);
232 for (i = 0; i < length; i++) {
233 argv[0] = ref Value.TObject(JAObj.ary[i]);
234 (a, b) = jni->CallMethod(this, "writeObject", "(Ljava/lang/Object;)V", argv);
235 }
236 }
237 }
238}#<<
239
240invokeObjectWriter_rObject_rClass_Z( this : JObject, p0 : JObject,p1 : JClass) : int
241{#>>
242 junk := p1;
243 #
244 # call writeObject() on object "p0" with an argument of "this"
245 #
246 MyValueArray := array[] of {
247 ref Value.TObject(this)
248 };
249 (a, b) := jni->CallMethod(p0, "writeObject", "(Ljava/io/ObjectOutputStream;)V", MyValueArray);
250
251 return b == JNI->OK;
252}#<<
253
254getRefHashCode_rObject_I( p0 : JObject) : int
255{#>>
256 return( jni->IdentityHash(p0) );
257}#<<
java/pkg2/java/io/ObjectOutputStream_L.m+33−0
@@ -0,0 +1,33 @@
1# generated file edit with care
2
3ObjectOutputStream_L : module
4{
5 ObjectOutputStream_obj : adt
6 {
7 cl_mod : ClassModule;
8 blockDataMode : byte;
9 buf : JArrayB;
10 count : int;
11 out : JObject;
12 dos : JObject;
13 abortIOException : JObject;
14 wireHandle2Object : JArrayJObject;
15 wireNextHandle : JArrayI;
16 wireHash2Handle : JArrayI;
17 nextWireOffset : int;
18 currentObject : JObject;
19 currentClassDesc : JObject;
20 classDescStack : JObject;
21 enableReplace : byte;
22 replaceObjects : JArrayJObject;
23 nextReplaceOffset : int;
24 recursionDepth : int;
25 };
26
27 init : fn( jni_p : JNI );
28 outputClassFields_rObject_rClass_aI_V : fn( this : JObject, p0 : JObject,p1 : JClass,p2 : JArrayI);
29 outputArrayValues_rObject_rClass_V : fn( this : JObject, p0 : JObject,p1 : JClass);
30 invokeObjectWriter_rObject_rClass_Z : fn( this : JObject, p0 : JObject,p1 : JClass) : int;
31 getRefHashCode_rObject_I : fn( p0 : JObject) : int;
32
33};
java/pkg2/java/io/ObjectStreamClass.java+0−0

Empty file added.

java/pkg2/java/io/ObjectStreamClass_L.b+164−0
@@ -0,0 +1,164 @@
1implement ObjectStreamClass_L;
2
3# javal v1.3 generated file: edit with care
4
5include "jni.m";
6 jni : JNI;
7 ClassModule,
8 JString,
9 JArray,
10 JArrayI,
11 JArrayC,
12 JArrayB,
13 JArrayS,
14 JArrayJ,
15 JArrayF,
16 JArrayD,
17 JArrayZ,
18 JArrayJObject,
19 JArrayJClass,
20 JArrayJString,
21 JClass,
22 JThread,
23 JObject : import jni;
24
25#>> extra pre includes here
26 sys : import jni;
27 str : import jni;
28 FALSE : import jni;
29 TRUE : import jni;
30#<<
31
32include "ObjectStreamClass_L.m";
33
34#>> extra post includes here
35include "workdir.m";
36include "regex.m";
37str_mod : String;
38Value : import jni;
39cast : Cast;
40#<<
41
42init( jni_p : JNI )
43{
44 # save java native inteface mod instance
45 jni = jni_p;
46 #>>extra initialization here
47 sys = jni->sys;
48 str_mod = jni->str;
49 cast = jni->CastMod();
50 #<<
51}
52
53getClassAccess_rClass_I( p0 : JClass) : int
54{#>>
55 return (jni->GetClassFlags(p0) & JNI->ACC_WRITTEN_FLAGS);
56}#<<
57
58getMethodSignatures_rClass_aString( p0 : JClass) : JArrayJString
59{#>>
60 # Return an array of Strings containing the method names and signatures.
61 return (jni->GetMethodSignatures(p0, 0));
62}#<<
63
64getMethodAccess_rClass_rString_I( p0 : JClass,p1 : JString) : int
65{#>>
66 return (jni->GetMethodFlags(p0, p1.str) & JNI->ACC_WRITTEN_FLAGS);
67}#<<
68
69getFieldSignatures_rClass_aString( p0 : JClass) : JArrayJString
70{#>>
71 # Return an array of Strings containing the field names and signatures.
72 return (jni->GetFieldSignatures(p0, 0));
73}#<<
74
75getFieldAccess_rClass_rString_I( p0 : JClass,p1 : JString) : int
76{#>>
77 return (jni->GetFieldFlags(p0, p1.str) & JNI->ACC_WRITTEN_FLAGS);
78}#<<
79
80getFields0_rClass_aObjectStreamField( this : ref ObjectStreamClass_obj, p0 : JClass) : JArrayJObject
81{#>>
82 #
83 # Return an array of ObjectStreamField objects for each non-static and
84 # non-transient field of the specified class. First find and load the
85 # ObjectStreamField class.
86 #
87 junk := this;
88 cl_data := jni->FindClass("java/io/ObjectStreamField");
89 if (cl_data == nil)
90 jni->FatalError("ObjectStreamClass could not load java/io/ObjectStreamField");
91
92 #
93 # Get a list of all non-static and non transient fields of this class. If there are
94 # non, jni->GetFieldSignatures() returns an array of length 0.
95 #
96 fields_n_sigs := jni->GetFieldSignatures(p0, (JNI->ACC_STATIC|JNI->ACC_TRANSIENT));
97
98 MyValueArray := array[4] of ref Value;
99 MyObjectArray := array[len fields_n_sigs.ary] of JObject;
100
101 #
102 # for each non-static and non-transient fields of this class...
103 # call constructor for ObjectStreamField as follows
104 # ObjectStreamField(n, sig, o, t)
105 # where n is field name, sig is first byte of field signature
106 # o is index into class field table and if sig != [ or L,
107 # t is NULL. If sig is [ or L, t is signature.
108 # For each of those constructors that are created, stuff them into
109 # an array entry.
110 #
111 for (i:=0; i < len fields_n_sigs.ary; i++) {
112 #
113 # Each entry in fields_n_sigs.ary is of the format <name> <sig> where name is
114 # the name of the field and signature is its full signature. Seperate them
115 # out and format a call instruction to call the constructor for ObjectStreamField.
116 #
117 (name, full_sig) := str_mod->splitl((fields_n_sigs.ary[i]).str, " ");
118 full_sig = full_sig[1:];
119
120 MyValueArray[0] = ref Value.TObject(cast->FromJString(jni->NewString(name)));
121 MyValueArray[1] = ref Value.TChar(full_sig[0]);
122 # NOT offset of field in object (but does it matter)???
123 MyValueArray[2] = ref Value.TInt(i);
124 if ((full_sig[0] == 'L') || (full_sig[0] == '['))
125 MyValueArray[3] = ref Value.TObject(cast->FromJString(jni->NewString(full_sig)));
126 else
127 MyValueArray[3] = ref Value.TObject(nil);
128
129 jObj := jni->AllocObject(cl_data);
130 (ret, ok) := jni->CallMethod(jObj, "<init>", "(Ljava/lang/String;CILjava/lang/String;)V", MyValueArray);
131 if (ok != JNI->OK)
132 jni->FatalError("ObjectStreamClass could not create ObjectStreamField");
133 #
134 # make an array of these created objects.
135 #
136 MyObjectArray[i] = jObj;
137 }
138 #
139 # Finally, return the full array.
140 #
141 jary := jni->MkAObject(MyObjectArray);
142 jary.class = cl_data;
143 return jary;
144}#<<
145
146getSerialVersionUID_rClass_J( p0 : JClass) : big
147{#>>
148 ret : big;
149 val : ref Value;
150 val = jni->GetStaticField(p0.class, "serialVersionUID", "J");
151 if (val != nil)
152 ret = val.Long();
153 else
154 ret = big 0;
155 return ret;
156}#<<
157
158hasWriteObject_rClass_Z( p0 : JClass) : int
159{#>>
160 if (jni->GetMethodFlags(p0, "writeObject (Ljava/io/ObjectOutputStream;)V") != 0)
161 return JNI->TRUE;
162 else
163 return JNI->FALSE;
164}#<<
java/pkg2/java/io/ObjectStreamClass_L.m+30−0
@@ -0,0 +1,30 @@
1# generated file edit with care
2
3ObjectStreamClass_L : module
4{
5 ObjectStreamClass_obj : adt
6 {
7 cl_mod : ClassModule;
8 name : JString;
9 superclass : ref ObjectStreamClass_obj;
10 serializable : byte;
11 externalizable : byte;
12 fields : JArrayJObject;
13 ofClass : JClass;
14 suid : big;
15 fieldSequence : JArrayI;
16 hasWriteObjectMethod : byte;
17 localClassDesc : ref ObjectStreamClass_obj;
18 };
19
20 init : fn( jni_p : JNI );
21 getClassAccess_rClass_I : fn( p0 : JClass) : int;
22 getMethodSignatures_rClass_aString : fn( p0 : JClass) : JArrayJString;
23 getMethodAccess_rClass_rString_I : fn( p0 : JClass,p1 : JString) : int;
24 getFieldSignatures_rClass_aString : fn( p0 : JClass) : JArrayJString;
25 getFieldAccess_rClass_rString_I : fn( p0 : JClass,p1 : JString) : int;
26 getFields0_rClass_aObjectStreamField : fn( this : ref ObjectStreamClass_obj, p0 : JClass) : JArrayJObject;
27 getSerialVersionUID_rClass_J : fn( p0 : JClass) : big;
28 hasWriteObject_rClass_Z : fn( p0 : JClass) : int;
29
30};
java/pkg2/java/io/ObjectStreamConstants.java+0−0

Empty file added.

java/pkg2/java/io/ObjectStreamException.java+0−0

Empty file added.

java/pkg2/java/io/ObjectStreamField.java+0−0

Empty file added.

java/pkg2/java/io/OptionalDataException.java+0−0

Empty file added.

java/pkg2/java/io/OutputStream.java+0−0

Empty file added.

java/pkg2/java/io/OutputStreamWriter.java+0−0

Empty file added.

java/pkg2/java/io/PipedInputStream.java+0−0

Empty file added.

java/pkg2/java/io/PipedOutputStream.java+0−0

Empty file added.

java/pkg2/java/io/PipedReader.java+0−0

Empty file added.

java/pkg2/java/io/PipedWriter.java+0−0

Empty file added.

java/pkg2/java/io/PrintStream.java+0−0

Empty file added.

java/pkg2/java/io/PrintWriter.java+0−0

Empty file added.

java/pkg2/java/io/PushbackInputStream.java+0−0

Empty file added.

java/pkg2/java/io/PushbackReader.java+0−0

Empty file added.

java/pkg2/java/io/RandomAccessFile.java+0−0

Empty file added.

java/pkg2/java/io/RandomAccessFile_L.b+190−0
@@ -0,0 +1,190 @@
1implement RandomAccessFile_L;
2
3# javal v1.3 generated file: edit with care
4
5include "jni.m";
6 jni : JNI;
7 ClassModule,
8 JString,
9 JArray,
10 JArrayI,
11 JArrayC,
12 JArrayB,
13 JArrayS,
14 JArrayJ,
15 JArrayF,
16 JArrayD,
17 JArrayZ,
18 JArrayJObject,
19 JArrayJClass,
20 JArrayJString,
21 JClass,
22 JThread,
23 JObject : import jni;
24
25#>> extra pre includes here
26 sys : import jni;
27 FALSE : import jni;
28 TRUE : import jni;
29include "FileDescriptor_L.m";
30 FileDescriptor_obj : import FileDescriptor_L;
31#<<
32
33include "RandomAccessFile_L.m";
34
35#>> extra post includes here
36#<<
37
38init( jni_p : JNI )
39{
40 # save java native inteface mod instance
41 jni = jni_p;
42 #>>extra initialization here
43 sys = jni->sys;
44 #<<
45}
46
47open_rString_Z_V( this : ref RandomAccessFile_obj, p0 : JString,p1 : int)
48{#>>
49 # p0 == file name
50 # p1 == writable flag
51
52 if ((this.fd == nil) || (p0 == nil) || (p0.str == nil))
53 jni->ThrowException("java.lang.NullPointerException", "null path name");
54
55 if (p1 == TRUE){
56 this.fd.fd = sys->open(p0.str, sys->ORDWR);
57 if(this.fd.fd == nil)
58 this.fd.fd = sys->create(p0.str, Sys->ORDWR, 8r640);
59 }
60 else
61 this.fd.fd = sys->open(p0.str, sys->OREAD);
62
63 if(this.fd.fd == nil)
64 jni->ThrowException("java.io.IOException", sys->sprint("%r"));
65}#<<
66
67read_I( this : ref RandomAccessFile_obj) : int
68{#>>
69 buf := array[1] of byte;
70
71 if ((this.fd == nil) || (this.fd.fd == nil))
72 jni->ThrowException("java.lang.NullPointerException", "null FileDescriptor");
73
74 readin := sys->read(this.fd.fd, buf, 1);
75 if (readin == 0) # EOF
76 return -1;
77
78 if (readin < 0)
79 jni->ThrowException("java.io.IOException", sys->sprint("%r"));
80 return (int buf[0]);
81}#<<
82
83FD: import Sys;
84stderr: ref FD;
85readBytes_aB_I_I_I( this : ref RandomAccessFile_obj, p0 : JArrayB,p1 : int,p2 : int) : int
86{#>>
87 # p0 == buffer for read in data
88 # p1 == offset in buffer to start to place data
89 # p2 == amount of data to read in
90
91 if ((this.fd == nil) || (this.fd.fd == nil))
92 jni->ThrowException("java.lang.NullPointerException", "null FileDescriptor");
93
94 if ((p0 == nil) || (p0.ary == nil))
95 jni->ThrowException("java.lang.NullPointerException", "null array");
96
97 if ((p1 < 0) || (p1 > len p0.ary))
98 jni->ThrowException("java.lang.ArrayIndexOutOfBoundsException", nil);
99
100 if ((p1 + p2) > len p0.ary)
101 p2 = (len p0.ary) - p1;
102
103 if (p2 <= 0)
104 jni->ThrowException("java.lang.ArrayIndexOutOfBoundsException",
105nil);
106
107 n := sys->read(this.fd.fd, p0.ary[p1:len p0.ary], p2);
108 if (n == 0) # EOF
109 return -1;
110
111 if (n < 0)
112 jni->ThrowException("java.io.IOException", sys->sprint("%r"));
113 return n;
114}#<<
115
116write_I_V( this : ref RandomAccessFile_obj, p0 : int)
117{#>>
118 c := array[1] of byte;
119 c[0] = byte p0;
120
121 if ((this.fd == nil) || (this.fd.fd == nil))
122 jni->ThrowException("java.lang.NullPointerException", "null FileDescriptor");
123
124 if (sys->write(this.fd.fd, c, 1) != 1)
125 jni->ThrowException("java.io.IOException", sys->sprint("%r"));
126}#<<
127
128writeBytes_aB_I_I_V( this : ref RandomAccessFile_obj, p0 : JArrayB,p1 : int,p2 : int)
129{#>>
130 # p0 == buffer array to write from
131 # p1 == offset in buffer
132 # p2 == amount to write out
133
134 if ((this.fd == nil) || (this.fd.fd == nil))
135 jni->ThrowException("java.lang.NullPointerException", "null FileDescriptor");
136 if ((p0 == nil) || (p0.ary == nil))
137 jni->ThrowException("java.lang.NullPointerException", nil);
138 if ((p1 < 0) || (p2 < 0) || (p1 + p2 > (len p0.ary)))
139 jni->ThrowException("java.lang.ArrayIndexOutOfBoundsException", nil);
140
141 n := 0;
142 while (p2 > 0) {
143 n = sys->write(this.fd.fd, p0.ary[p1:len p0.ary], p2);
144 if (n == -1) {
145 jni->ThrowException("java.io.IOException", sys->sprint("%r"));
146 break;
147 }
148 p1 += n;
149 p2 -= n;
150 }
151}#<<
152
153getFilePointer_J( this : ref RandomAccessFile_obj) : big
154{#>>
155 if (this.fd == nil)
156 jni->ThrowException("java.io.IOException", "this.fd nil");
157 cur := sys->seek(this.fd.fd, 0, sys->SEEKRELA);
158 if (cur < 0)
159 jni->ThrowException("java.io.IOException", sys->sprint("%r"));
160 return (big cur);
161}#<<
162
163seek_J_V( this : ref RandomAccessFile_obj, p0 : big)
164{#>>
165 if (this.fd == nil)
166 jni->ThrowException("java.io.IOException", "this.fd nil");
167 sys->seek(this.fd.fd, (int p0), sys->SEEKSTART);
168}#<<
169
170length_J( this : ref RandomAccessFile_obj) : big
171{#>>
172 if (this.fd == nil)
173 jni->ThrowException("java.io.IOException", "this.fd nil");
174 cur := sys->seek(this.fd.fd, 0, sys->SEEKRELA);
175 end := sys->seek(this.fd.fd, 0, sys->SEEKEND);
176 sys->seek(this.fd.fd, cur, sys->SEEKSTART);
177
178 return (big end);
179}#<<
180
181close_V( this : ref RandomAccessFile_obj)
182{#>>
183 if (this.fd != nil)
184 this.fd.fd = nil;
185}#<<
186
187
188
189
190
java/pkg2/java/io/RandomAccessFile_L.m+22−0
@@ -0,0 +1,22 @@
1# javal v1.3 generated file: edit with care
2
3RandomAccessFile_L : module
4{
5 RandomAccessFile_obj : adt
6 {
7 cl_mod : ClassModule;
8 fd : ref FileDescriptor_obj;
9 };
10
11 init : fn( jni_p : JNI );
12 open_rString_Z_V : fn( this : ref RandomAccessFile_obj, p0 : JString,p1 : int);
13 read_I : fn( this : ref RandomAccessFile_obj) : int;
14 readBytes_aB_I_I_I : fn( this : ref RandomAccessFile_obj, p0 : JArrayB,p1 : int,p2 : int) : int;
15 write_I_V : fn( this : ref RandomAccessFile_obj, p0 : int);
16 writeBytes_aB_I_I_V : fn( this : ref RandomAccessFile_obj, p0 : JArrayB,p1 : int,p2 : int);
17 getFilePointer_J : fn( this : ref RandomAccessFile_obj) : big;
18 seek_J_V : fn( this : ref RandomAccessFile_obj, p0 : big);
19 length_J : fn( this : ref RandomAccessFile_obj) : big;
20 close_V : fn( this : ref RandomAccessFile_obj);
21
22};
java/pkg2/java/io/Reader.java+0−0

Empty file added.

java/pkg2/java/io/SequenceInputStream.java+0−0

Empty file added.

java/pkg2/java/io/Serializable.java+0−0

Empty file added.

java/pkg2/java/io/StreamCorruptedExceptio.java+0−0

Empty file added.

java/pkg2/java/io/StreamTokenizer.java+0−0

Empty file added.

java/pkg2/java/io/StringBufferInputStream.java+0−0

Empty file added.

java/pkg2/java/io/StringReader.java+0−0

Empty file added.

java/pkg2/java/io/StringWriter.java+0−0

Empty file added.

java/pkg2/java/io/SyncFailedException.java+0−0

Empty file added.

java/pkg2/java/io/UTFDataFormatException.java+0−0

Empty file added.

java/pkg2/java/io/UnsupportedEncodingExce.java+0−0

Empty file added.

java/pkg2/java/io/WriteAbortedException.java+0−0

Empty file added.

java/pkg2/java/io/Writer.java+0−0

Empty file added.

java/pkg2/java/io/mkfile+150−0
@@ -0,0 +1,150 @@
1<../../../../mkconfig
2
3TARG=\
4 BufferedInputStream.dis\
5 BufferedOutputStream.dis\
6 BufferedReader.dis\
7 BufferedWriter.dis\
8 ByteArrayInputStream.dis\
9 ByteArrayOutputStream.dis\
10 CharArrayReader.dis\
11 CharArrayWriter.dis\
12# for CharConversionException.dis\
13 oF8WXXue0VYZof82fzj4L.dis\
14 DataInput.dis\
15 DataInputStream.dis\
16 DataOutput.dis\
17 DataOutputStream.dis\
18 EOFException.dis\
19 Externalizable.dis\
20 File.dis\
21 FileDescriptor.dis\
22 FileInputStream.dis\
23 FileNotFoundException.dis\
24 FileOutputStream.dis\
25 FileReader.dis\
26 FileWriter.dis\
27 FilenameFilter.dis\
28 FilterInputStream.dis\
29 FilterOutputStream.dis\
30 FilterReader.dis\
31 FilterWriter.dis\
32 IOException.dis\
33 InputStream.dis\
34 InputStreamReader.dis\
35# for InterruptedIOException.dis\
36 Udmf2Su14O7L1V-QzaTq3.dis\
37 InvalidClassException.dis\
38# for InvalidObjectException.dis\
39 PjqhaWOg4nDK5hla7XFmv.dis\
40 LineNumberInputStream.dis\
41 LineNumberReader.dis\
42 NotActiveException.dis\
43# for NotSerializableException.dis\
44 YBCI4zMUNV+Uc45idEPcv.dis\
45 ObjectInput.dis\
46 ObjectInputStream.dis\
47 ObjectInputValidation.dis\
48 ObjectOutput.dis\
49 ObjectOutputStream.dis\
50 ObjectStreamClass.dis\
51# for ObjectStreamClassEntry.dis\
52 6T1LdH4wdbOUJeqUfASeI.dis\
53 ObjectStreamConstants.dis\
54 ObjectStreamException.dis\
55 ObjectStreamField.dis\
56 OptionalDataException.dis\
57 OutputStream.dis\
58 OutputStreamWriter.dis\
59 PipedInputStream.dis\
60 PipedOutputStream.dis\
61 PipedReader.dis\
62 PipedWriter.dis\
63 PrintStream.dis\
64 PrintWriter.dis\
65 PushbackInputStream.dis\
66 PushbackReader.dis\
67 RandomAccessFile.dis\
68 Reader.dis\
69 SequenceInputStream.dis\
70 Serializable.dis\
71# for StreamCorruptedException.dis\
72 7Ev9-si8zsgglOEBSxbM3.dis\
73 StreamTokenizer.dis\
74# for StringBufferInputStream.dis\
75 O+cE9tcuJ1-znyckKtvEt.dis\
76 StringReader.dis\
77 StringWriter.dis\
78 SyncFailedException.dis\
79# for UTFDataFormatException.dis\
80 VgQ9w-N7w2YXJglmrtjzJ.dis\
81# for UnsupportedEncodingException.dis\
82 34nQVDtVtK+3NDDpbkN7j.dis\
83 ValidationCallback.dis\
84 WriteAbortedException.dis\
85 Writer.dis\
86# Limbo code\
87 FileDescriptor_L.dis\
88 FileInputStream_L.dis\
89 FileOutputStream_L.dis\
90 File_L.dis\
91 ObjectInputStream_L.dis\
92 ObjectOutputStream_L.dis\
93 ObjectStreamClass_L.dis\
94 RandomAccessFile_L.dis\
95
96MODULES=\
97 $ROOT/java/module/classloader.m\
98 $ROOT/java/module/jni.m\
99 $ROOT/java/module/cast.m\
100 FileDescriptor_L.m\
101 FileInputStream_L.m\
102 FileOutputStream_L.m\
103 File_L.m\
104 ObjectInputStream_L.m\
105 ObjectOutputStream_L.m\
106 ObjectStreamClass_L.m\
107 RandomAccessFile_L.m\
108
109SYSMODULES=\
110 draw.m\
111 hash.m\
112 keyring.m\
113 loader.m\
114 math.m\
115 string.m\
116 sys.m\
117
118DISBIN=$ROOT/java/dis/java/java/io
119
120<$ROOT/mkfiles/mkjava
121
122oF8WXXue0VYZof82fzj4L.dis: CharConversionException.class
123 j2d CharConversionException.class
124
125Udmf2Su14O7L1V-QzaTq3.dis: InterruptedIOException.class
126 j2d InterruptedIOException.class
127
128PjqhaWOg4nDK5hla7XFmv.dis: InvalidObjectException.class
129 j2d InvalidObjectException.class
130
131YBCI4zMUNV+Uc45idEPcv.dis: NotSerializableException.class
132 j2d NotSerializableException.class
133
1346T1LdH4wdbOUJeqUfASeI.dis: ObjectStreamClass.class
135 j2d ObjectStreamClassEntry.class
136
1377Ev9-si8zsgglOEBSxbM3.dis: StreamCorruptedException.class
138 j2d StreamCorruptedException.class
139
140O+cE9tcuJ1-znyckKtvEt.dis: StringBufferInputStream.class
141 j2d StringBufferInputStream.class
142
143VgQ9w-N7w2YXJglmrtjzJ.dis: UTFDataFormatException.class
144 j2d UTFDataFormatException.class
145
14634nQVDtVtK+3NDDpbkN7j.dis: UnsupportedEncodingException.class
147 j2d UnsupportedEncodingException.class
148
149ValidationCallback.dis: ObjectInputStream.class
150 j2d ValidationCallback.class
java/pkg2/java/lang/AbstractMethodError.java+0−0

Empty file added.

java/pkg2/java/lang/ArithmeticException.java+0−0

Empty file added.

java/pkg2/java/lang/ArrayIndexOutOfBoundsException.java+0−0

Empty file added.

java/pkg2/java/lang/ArrayStoreException.java+0−0

Empty file added.

java/pkg2/java/lang/Boolean.java+0−0

Empty file added.

java/pkg2/java/lang/Byte.java+0−0

Empty file added.

java/pkg2/java/lang/Character.java+0−0

Empty file added.

java/pkg2/java/lang/Character_L.b+63−0
@@ -0,0 +1,63 @@
1implement Character_L;
2
3# javal v1.3 generated file: edit with care
4
5include "jni.m";
6 jni : JNI;
7 ClassModule,
8 JString,
9 JArray,
10 JArrayI,
11 JArrayC,
12 JArrayB,
13 JArrayS,
14 JArrayJ,
15 JArrayF,
16 JArrayD,
17 JArrayZ,
18 JArrayJObject,
19 JArrayJClass,
20 JArrayJString,
21 JClass,
22 JThread,
23 JObject : import jni;
24
25#>> extra pre includes here
26
27#<<
28
29include "Character_L.m";
30
31#>> extra post includes here
32
33include "unicode_table.m";
34
35unicode_table : UnicodeTable;
36 A,
37 Y,
38 X : import unicode_table;
39
40#<<
41
42init( jni_p : JNI )
43{
44 # save java native inteface mod instance
45 jni = jni_p;
46 #>>extra initialization here
47 #<<
48}
49
50lookup_C_I( p0 : int) : int
51{#>>
52 if ( unicode_table == nil )
53 loadtable();
54
55 return( A[Y[(X[p0>>6]<<6)|(p0& 16r3F)]] );
56}#<<
57
58loadtable()
59{
60 unicode_table = load UnicodeTable UnicodeTable->PATH;
61 if ( unicode_table == nil )
62 jni->InitError( jni->sys->sprint( "java.lang.Character: could not load %s: %r", UnicodeTable->PATH ) );
63}
java/pkg2/java/lang/Character_L.m+14−0
@@ -0,0 +1,14 @@
1# javal v1.3 generated file: edit with care
2
3Character_L : module
4{
5 Character_obj : adt
6 {
7 cl_mod : ClassModule;
8 value : int;
9 };
10
11 init : fn( jni_p : JNI );
12 lookup_C_I : fn( p0 : int) : int;
13
14};
java/pkg2/java/lang/Class.java+0−0

Empty file added.

java/pkg2/java/lang/ClassCastException.java+0−0

Empty file added.

java/pkg2/java/lang/ClassCircularityError.java+0−0

Empty file added.

java/pkg2/java/lang/ClassFormatError.java+0−0

Empty file added.

java/pkg2/java/lang/ClassLoader.java+0−0

Empty file added.

java/pkg2/java/lang/ClassLoader_L.b+82−0
@@ -0,0 +1,82 @@
1implement ClassLoader_L;
2
3# javal v1.2 generated file: edit with care
4
5include "jni.m";
6 jni : JNI;
7 ClassModule,
8 JString,
9 JArray,
10 JArrayI,
11 JArrayC,
12 JArrayB,
13 JArrayS,
14 JArrayJ,
15 JArrayF,
16 JArrayD,
17 JArrayZ,
18 JArrayJObject,
19 JArrayJClass,
20 JArrayJString,
21 JClass,
22 JObject : import jni;
23
24#>> extra pre includes here
25
26#<<
27
28include "ClassLoader_L.m";
29
30#>> extra post includes here
31
32#<<
33
34init( jni_p : JNI )
35{
36 # save java native inteface mod instance
37 jni = jni_p;
38 #>>extra initialization here
39 #<<
40}
41
42init_V( this : ref ClassLoader_obj)
43{#>>
44 junk := this;
45}#<<
46
47defineClass0_rString_aB_I_I_rClass( this : ref ClassLoader_obj, p0 : JString,p1 : JArrayB,p2 : int,p3 : int) : JClass
48{#>>
49 junk := (this,p0,p1,p2,p3);
50 jni->ThrowException( "java.lang.ClassNotFoundException", "not implemented" );
51 return( nil );
52}#<<
53
54resolveClass0_rClass_V( this : ref ClassLoader_obj, p0 : JClass)
55{#>>
56 junk := (this,p0);
57 jni->FatalError( "resolveClass() not implemented" );
58}#<<
59
60findSystemClass0_rString_rClass( this : ref ClassLoader_obj, p0 : JString) : JClass
61{#>>
62 junk := (this,p0);
63 jni->FatalError( "findSystemClass() not implemented" );
64 return( nil );
65}#<<
66
67getSystemResourceAsStream0_rString_rInputStream( p0 : JString) : JObject
68{#>>
69 junk := p0;
70 jni->FatalError( "getSystemResourceAsStream() not implemented" );
71 return( nil );
72}#<<
73
74getSystemResourceAsName0_rString_rString( p0 : JString) : JString
75{#>>
76 junk := p0;
77 jni->FatalError( "getSystemResourceAsName() not implemented" );
78 return( nil );
79}#<<
80
81
82
java/pkg2/java/lang/ClassLoader_L.m+20−0
@@ -0,0 +1,20 @@
1# javal v1.2 generated file: edit with care
2
3ClassLoader_L : module
4{
5 ClassLoader_obj : adt
6 {
7 cl_mod : ClassModule;
8 initialized : int;
9 classes : JObject;
10 };
11
12 init : fn( jni_p : JNI );
13 init_V : fn( this : ref ClassLoader_obj);
14 defineClass0_rString_aB_I_I_rClass : fn( this : ref ClassLoader_obj, p0 : JString,p1 : JArrayB,p2 : int,p3 : int) : JClass;
15 resolveClass0_rClass_V : fn( this : ref ClassLoader_obj, p0 : JClass);
16 findSystemClass0_rString_rClass : fn( this : ref ClassLoader_obj, p0 : JString) : JClass;
17 getSystemResourceAsStream0_rString_rInputStream : fn( p0 : JString) : JObject;
18 getSystemResourceAsName0_rString_rString : fn( p0 : JString) : JString;
19
20};
java/pkg2/java/lang/ClassNotFoundException.java+0−0

Empty file added.

java/pkg2/java/lang/Class_L.b+778−0
@@ -0,0 +1,778 @@
1implement Class_L;
2
3# javal v1.2 generated file: edit with care
4
5include "jni.m";
6 jni : JNI;
7 ClassModule,
8 JString,
9 JArray,
10 JArrayI,
11 JArrayC,
12 JArrayB,
13 JArrayS,
14 JArrayJ,
15 JArrayF,
16 JArrayD,
17 JArrayZ,
18 JArrayJObject,
19 JArrayJClass,
20 JArrayJString,
21 JClass,
22 JObject : import jni;
23
24#>> extra pre includes here
25
26 jldr : JavaClassLoader;
27 cast : Cast;
28
29#<<
30
31include "Class_L.m";
32
33#>> extra post includes here
34
35 ClassData,
36 Value : import jni;
37
38include "reflect/reflect.m";
39 refl : Reflect;
40
41#<<
42
43init( jni_p : JNI )
44{
45 # save java native inteface mod instance
46 jni = jni_p;
47 #>>extra initialization here
48 jldr = jni->jldr;
49 cast = jni->CastMod();
50 #<<
51}
52
53forName_rString_rClass( p0 : JString) : JClass
54{#>>
55 e := ref Sys->Exception;
56 if (jni->sys->rescue("JLD:e0*", e) == Sys->HANDLER)
57 {
58 if ( p0.str != nil && p0.str[0] == '[' )
59 return( jni->LookupArrayClass(p0.str) );
60 else
61 return( jni->GetClassObject( jni->FindClass(p0.str) ) );
62 }
63
64 jni->sys->rescued(Sys->ONCE, nil);
65 # turn into a ClassNotFoundException
66 jni->ThrowException( "java.lang.ClassNotFoundException", p0.str );
67 return(nil);
68}#<<
69
70newInstance_rObject( this : JClass) : JObject
71{#>>
72 if ( this.class.flags & (JNI->ACC_INTERFACE | JNI->ACC_ABSTRACT) ) {
73 s : string;
74 if ( isPrimitive_Z(this) == JNI->TRUE )
75 s = this.class.name[len "inferno/vm/":len this.class.name - 2];
76 else if ( this.aryname != nil )
77 s = this.aryname;
78 else
79 s = this.class.name;
80 jni->ThrowException( "java.lang.InstantiationException", s );
81 }
82 # create new object for the given class
83 return( jni->NewObject(this.class) );
84}#<<
85
86isInstance_rObject_Z( this : JClass, p0 : JObject) : int
87{#>>
88 return( jni->IsInstanceOf( p0, this.class ) );
89}#<<
90
91isAssignableFrom_rClass_Z( this : JClass, p0 : JClass) : int
92{#>>
93 return( jni->IsAssignable( p0, this ) );
94}#<<
95
96isInterface_Z( this : JClass) : int
97{#>>
98 return( this.class.flags & JNI->ACC_INTERFACE );
99}#<<
100
101isArray_Z( this : JClass) : int
102{#>>
103 return( this.class.name == "inferno/vm/Array" );
104}#<<
105
106isPrimitive_Z( this : JClass) : int
107{#>>
108 ret : int;
109 if ( jni->PrimitiveIndex(this, 0) > 0 )
110 ret = JNI->TRUE;
111 else
112 ret = JNI->FALSE;
113 return ret;
114}#<<
115
116getName_rString( this : JClass) : JString
117{#>>
118 name : string;
119 if ( isPrimitive_Z(this) == JNI->TRUE )
120 {
121 # mk primitive name from a slice
122 name = this.class.name[len "inferno/vm/":len this.class.name - 2];
123 }
124 else
125 {
126 if ( this.aryname != nil )
127 {
128 name = this.aryname;
129 }
130 else
131 {
132 name = this.class.name;
133 }
134 # change slashes to dots
135 for ( i := 0; i < len name; i++ )
136 if ( name[i] == '/' )
137 name[i] = '.';
138 }
139 return( jni->NewString( name ) );
140}#<<
141
142getClassLoader_rClassLoader( this : JClass) : JObject
143{#>>
144 junk := (this);
145 jni->FatalError( "getClassLoader() not implemented" );
146 return(nil);
147}#<<
148
149getSuperclass_rClass( this : JClass) : JClass
150{#>>
151 if ( isPrimitive_Z(this) == JNI->TRUE
152 || this.class.flags & JNI->ACC_INTERFACE )
153 return nil;
154 if ( (superclass := jni->GetSuperclass(this.class)) == nil )
155 return nil;
156 return( jni->GetClassObject( superclass ) );
157}#<<
158
159getInterfaces_aClass( this : JClass) : JArrayJClass
160{#>>
161 n : int;
162 # kludge for arrays to be consistent with JavaSoft's VM
163 if ( isArray_Z(this) )
164 n = 0;
165 else
166 n = len this.class.interdirect;
167 interface := array [n] of JObject;
168 il := this.class.interdirect;
169 for (i := n-1; i >= 0; i--) {
170 interface[i] = cast->FromJClass(jni->GetClassObject(hd il));
171 il = tl il;
172 }
173 classarray := cast->JArrayToClass(cast->ObjectToJArray(jni->MkAObject(interface)));
174 classarray.class = jni->FindClass("java/lang/Class");
175 return classarray;
176}#<<
177
178getComponentType_rClass(this : JClass) : JClass
179{#>>
180 if(this == nil || this.aryname == nil)
181 return nil;
182
183 name : string;
184 c := this.aryname[1];
185 if(c == '[') {
186 return jni->LookupArrayClass(this.aryname[1:]);
187 } else {
188 if(c == 'L') {
189 name = this.aryname[2:len this.aryname - 1];
190 } else {
191 getReflect();
192 name = "inferno/vm/" + refl->TypeCharToName(c) + "_p";
193 }
194 return jni->GetClassObject(jni->FindClass(name));
195 }
196}#<<
197
198getModifiers_I( this : JClass) : int
199{#>>
200 return( this.class.flags & (~ JNI->ACC_SYNCHRONIZED));
201}#<<
202
203getSigners_aObject( this : JClass) : JArrayJObject
204{#>>
205 junk := (this);
206 jni->FatalError( "getSigners() not implemented" );
207 return(nil);
208}#<<
209
210setSigners_aObject_V( this : JClass, p0 : JArrayJObject)
211{#>>
212 junk := (this,p0);
213 jni->FatalError( "setSigners() not implemented" );
214}#<<
215
216getPrimitiveClass_rString_rClass( p0 : JString) : JClass
217{#>>
218 e := ref Sys->Exception;
219 if (jni->sys->rescue("JLD:e0*", e) == Sys->HANDLER)
220 {
221 return( jni->GetClassObject(jni->FindClass("inferno/vm/"+ p0.str +"_p")) );
222 }
223 return(nil);
224}#<<
225
226getFields0_I_aField( this : JClass, p0 : int) : JArrayJObject
227{#>>
228# 'this' represents the class whose fields are wanted.
229# p0 == 0 for PUBLIC members (includes inherited members)
230# p0 == 1 for DECLARED members (All members but not inherited members)
231
232 objs : list of JObject;
233 if ( !isArray_Z(this) )
234 objs = getFields(this, p0);
235
236 obj_array := array[len objs] of JObject;
237 for ( i := 0; objs != nil ; i++ ) {
238 obj_array[i] = hd objs;
239 objs = tl objs;
240 }
241
242 fieldarray := jni->MkAObject(obj_array);
243 fieldarray.class = jni->FindClass("java/lang/reflect/Field");
244 return fieldarray;
245}#<<
246
247getMethods0_I_aMethod( this : JClass, p0 : int) : JArrayJObject
248{#>>
249# 'this' represents the class whose methods are wanted.
250# p0 == 0 for PUBLIC members (includes inherited members)
251# p0 == 1 for DECLARED members (All members but not inherited members)
252
253 objs : list of JObject;
254
255 # if primitive or interface, filter out java.lang.Object methods
256 if ( isPrimitive_Z(this) == JNI->TRUE
257 || this.class.flags & JNI->ACC_INTERFACE )
258 p0 = 1;
259 objs = getMethods(this, p0);
260
261 obj_array := array[len objs] of JObject;
262 for ( i := 0; objs != nil ; i++ ) {
263 obj_array[i] = hd objs;
264 objs = tl objs;
265 }
266
267 methodarray := jni->MkAObject(obj_array);
268 methodarray.class = jni->FindClass("java/lang/reflect/Method");
269 return methodarray;
270}#<<
271
272getConstructors0_I_aConstructor( this : JClass, p0 : int) : JArrayJObject
273{#>>
274# 'this' represents the class whose constructors are wanted.
275# p0 == 0 for PUBLIC members (includes inherited members)
276# p0 == 1 for DECLARED members (All members but not inherited members)
277
278 objs : list of JObject;
279 if ( isPrimitive_Z(this) == JNI->FALSE && !isArray_Z(this) )
280 objs = getConstructors(this, p0);
281
282 obj_array := array[len objs] of JObject;
283 for ( i := 0; objs != nil ; i++ ) {
284 obj_array[i] = hd objs;
285 objs = tl objs;
286 }
287
288 constructorarray := jni->MkAObject(obj_array);
289 constructorarray.class = jni->FindClass("java/lang/reflect/Constructor");
290 return constructorarray;
291}#<<
292
293getField0_rString_I_rField( this : JClass, p0 : JString,p1 : int) : JObject
294{#>>
295# 'this' represents the class for which a Field is desired.
296# p0 is the name of the field.
297# p1 == 0 for PUBLIC members (includes inherited members)
298# p1 == 1 for DECLARED members (All members but not inherited members)
299
300 staticfields := this.class.staticdata;
301 flg : int;
302 fld : ref jldr->Field;
303 for ( i := 0; i < len staticfields; i++ ) {
304 fld = staticfields[i];
305 flg = fld.flags;
306 if ( fld.field == p0.str &&
307 (p1 != 0 || (flg & JNI->ACC_PUBLIC) != 0) )
308 break;
309 }
310 if ( i >= len staticfields ) { # Not a public static field
311 super : list of ref jldr->Field = nil;
312 if ( (superclass := jni->GetSuperclass(this.class)) != nil &&
313 superclass != this.class )
314 super = superclass.objectdata;
315 objfields := this.class.objectdata;
316 for ( i = 0; objfields != nil; i++ ) {
317 if ( p1 == 1 && objfields == super ) # exclude inherited
318 break;
319 fld = hd objfields;
320 flg = fld.flags;
321 if ( fld.field == p0.str &&
322 (p1 != 0 || (flg & JNI->ACC_PUBLIC) != 0) )
323 break;
324 objfields = tl objfields;
325 }
326 if ( objfields == super || objfields == nil )
327 i = len staticfields + len this.class.objectdata;
328 }
329 if ( i >= len staticfields + len this.class.objectdata ) {
330 jni->ThrowException("java/lang/NoSuchFieldException", "");
331 return nil;
332 }
333 return makeField(this, fld, i);
334}#<<
335
336getMethod0_rString_aClass_I_rMethod( this : JClass, p0 : JString,p1 : JArrayJClass,p2 : int) : JObject
337{#>>
338# 'this' represents the class for which a Method is desired.
339# p0 is the name of the method.
340# p1 is a Java array of Class objects, corresponding to the formal parameters
341# of the method for which a Method object is desired. The array
342# is used to construct a signature string which can be matched against
343# data compiled by the classloader.
344# p2 == 0 for PUBLIC members (includes inherited members)
345# p2 == 1 for DECLARED members (All members but not inherited members)
346
347 signatur := "(" + MakeSignature(p1) + ")";
348
349 methods := this.class.staticmethods;
350 for ( i := 0; i < len methods; i++ ) {
351 fld := methods[i];
352 if ( fld.field == p0.str && jni->str->prefix(signatur, fld.signature) &&
353 (p2 != 0 || (fld.flags & JNI->ACC_PUBLIC) != 0) )
354 return makeMethod(this, fld, i, p1, fld.signature[len signatur:]);
355 }
356 methods = this.class.privatemethods;
357 for ( i = 0; i < len methods; i++ ) {
358 fld := methods[i];
359 if ( fld.field == p0.str && jni->str->prefix(signatur, fld.signature) &&
360 (p2 != 0 || (fld.flags & JNI->ACC_PUBLIC) != 0) )
361 return makeMethod(this, fld, i, p1, fld.signature[len signatur:]);
362 }
363 vmethods := this.class.virtualmethods;
364 for ( i = 0; i < len vmethods; i++ ) {
365 fld := vmethods[i].field;
366 if ( fld.field == p0.str && jni->str->prefix(signatur, fld.signature) &&
367 ((p2 != 0 && this.class == vmethods[i].class)
368 || (fld.flags & JNI->ACC_PUBLIC) != 0) ) {
369 if ( vmethods[i].class != this.class )
370 this = jni->GetClassObject(vmethods[i].class);
371 return makeMethod(this, fld, i, p1, fld.signature[len signatur:]);
372 }
373 }
374 jni->ThrowException("java/lang/NoSuchMethodException", "");
375 return nil;
376}#<<
377
378getConstructor0_aClass_I_rConstructor( this : JClass, p0 : JArrayJClass,p1 : int) : JObject
379{#>>
380# 'this' represents the class for which a Constructor is desired.
381# p0 is a Java array of Class objects, corresponding to the formal parameters
382# of the constructor for which a Constructor object is desired. The array
383# is used to construct a signature string which can be matched against
384# data compiled by the classloader.
385# p1 == 0 for PUBLIC members (includes inherited members)
386# p1 == 1 for DECLARED members (All members but not inherited members)
387
388 signatur := "(" + MakeSignature(p0) + ")";
389
390 initmethods := this.class.initmethods;
391 flg : int;
392 fld : ref jldr->Field;
393 for ( i := 0; i < len initmethods; i++ ) {
394 fld = initmethods[i];
395 flg = fld.flags;
396 if ( jni->str->prefix(signatur, fld.signature) &&
397 (p1 != 0 || (flg & JNI->ACC_PUBLIC) != 0) )
398 break;
399 }
400 if ( i >= len initmethods ) {
401 jni->ThrowException("java/lang/NoSuchMethodException", "");
402 return nil;
403 }
404 return makeMethod(this, fld, i, p0, nil);
405}#<<
406
407#
408# getPublicStaticFields() and doInterfaces() are helper
409# functions for getFields().
410#
411
412#
413# Return list of public static fields of this class.
414#
415
416getPublicStaticFields(this : JClass, objs : list of JObject) : list of JObject
417{
418 flds := this.class.staticdata;
419 for ( i := len flds - 1; i >= 0; i-- )
420 if ( (flds[i].flags & JNI->ACC_PUBLIC) != 0 )
421 objs = makeField(this, flds[i], i) :: objs;
422 return objs;
423}
424
425#
426# Recursively (for superinterfaces) call getPublicStaticFields()
427# on interfaces of this class.
428#
429
430ifacelist: list of JClass;
431
432doInterfaces(this : JClass, objs : list of JObject) : list of JObject
433{
434 ifaces := this.class.interfaces;
435outer: for ( i := 0; i < len ifaces; i++ ) {
436 iface := jni->GetClassObject(ifaces[i].class);
437 for ( l := ifacelist; l != nil; l = tl l )
438 if ( hd l == iface )
439 continue outer;
440 ifacelist = iface :: ifacelist;
441 objs = getPublicStaticFields(iface, objs);
442 objs = doInterfaces(iface, objs);
443 }
444 return objs;
445}
446
447#
448# A helper function that gets fields for the class represented
449# by this. p0 == 0 => PUBLIC fields, p0 == 1 => DECLARED fields.
450# Candidate fields are found in the loader array staticdata (for
451# static fields) and list objectdata (for instance fields).
452#
453
454getFields(this : JClass, p0 : int) : list of JObject
455{
456 objs : list of JObject;
457
458 # get instance fields
459 objdata := this.class.objectdata;
460 flds := array[len objdata] of ref jldr->Field;
461 super : list of ref jldr->Field = nil;
462 if ( (superclass := jni->GetSuperclass(this.class)) != nil )
463 super = superclass.objectdata;
464 for ( i := 0; objdata != nil; i++ ) {
465 if ( p0 == 1 && objdata == super )
466 break;
467 flds[i] = hd objdata;
468 objdata = tl objdata;
469 }
470 # need to associate declaring class with each instance field ???
471 for ( i--; i >= 0; i-- )
472 if ( p0 != 0 || (flds[i].flags & JNI->ACC_PUBLIC) != 0 )
473 objs = makeField(this, flds[i], i) :: objs;
474
475 # get class fields of this class
476 flds = this.class.staticdata;
477 for ( i = len flds - 1; i >= 0; i-- )
478 if ( p0 != 0 || (flds[i].flags & JNI->ACC_PUBLIC) != 0 )
479 objs = makeField(this, flds[i], i) :: objs;
480
481 # get class fields of super classes and interfaces
482 if ( p0 == 0 ) {
483 ifacelist = nil;
484 objs = doInterfaces(this, objs);
485 curclass := this;
486 while ( ( curclass = getSuperclass_rClass(curclass) ) != nil ) {
487 objs = getPublicStaticFields(curclass, objs);
488 objs = doInterfaces(curclass, objs);
489 }
490 }
491
492 return objs;
493}
494#
495# A helper function that gets methods for the class represented
496# by this. p0 == 0 => PUBLIC methods, p0 == 1 => DECLARED methods.
497# Candidate methods are found in the loader arrays staticmethods (for
498# class methods), privatemethods (for methods private to this
499# particular class), and virtualmethods (public instance methods of
500# this class and all its superclasses).
501#
502getMethods(this : JClass, p0 : int) : list of JObject
503{
504 objs : list of JObject;
505
506 getReflect();
507
508 flds := this.class.staticmethods;
509 for ( i := 0; i < len flds; i++ )
510 if ( p0 != 0 || (flds[i].flags & JNI->ACC_PUBLIC) != 0 )
511 objs = makeAMethod(this, flds[i], i) :: objs;
512
513 if ( p0 != 0 ) {
514 flds = this.class.privatemethods;
515 for ( i = len flds - 1; i >= 0; i-- )
516 objs = makeAMethod(this, flds[i], i) :: objs;
517 }
518
519 vflds := this.class.virtualmethods;
520 for ( i = len vflds - 1; i >= 0; i-- )
521 if ( (p0 == 1 && vflds[i].class == this.class) # declared, this class
522 || ( p0 == 0 && (vflds[i].field.flags & JNI->ACC_PUBLIC) != 0 ) ) {
523 if ( vflds[i].class != this.class )
524 this = jni->GetClassObject(vflds[i].class);
525 objs = makeAMethod(this, vflds[i].field, i) :: objs;
526 }
527
528 return objs;
529}
530#
531# A helper function that gets constructors for the class represented
532# by this. p0 == 0 => PUBLIC constructors, p0 == 1 => DECLARED
533# constructors. Candidate constructors are found in the loader
534# array initmethods.
535#
536getConstructors(this : JClass, p0 : int) : list of JObject
537{
538 objs : list of JObject;
539
540 getReflect();
541
542 flds := this.class.initmethods;
543 for ( i := len flds - 1; i >= 0; i-- )
544 if ( p0 != 0 || (flds[i].flags & JNI->ACC_PUBLIC) != 0 )
545 objs = makeAMethod(this, flds[i], i) :: objs;
546
547 return objs;
548}
549#
550# Make sure Reflect module is loaded.
551#
552getReflect()
553{
554 if ( refl == nil ) {
555 refl = load Reflect Reflect->PATH;
556 if ( refl == nil )
557 jni->InitError( jni->sys->sprint( "java.lang.Class: could not load %s: %r", Reflect->PATH ) );
558 else
559 refl->init(jni);
560 }
561}
562#
563# Construct a Field Object. The field is a member of the class
564# represented by this, and the loader data for the field is in fld,
565# which is at offset ix in the appropriate array or list. The 'slot'
566# elements of a Field_obj adt is used only by native methods, and has
567# the fields modifier flags in the low-order 16 bits, and the index
568# into the array/list in the upper 16 bits. (The index into what
569# depends on the modifier flags.)
570#
571makeField(this : JClass, fld : ref jldr->Field, ix : int) : JObject
572{
573 getReflect();
574 fldobj := jni->AllocObject(jni->FindClass("java/lang/reflect/Field"));
575
576 clazz := ref Value.TObject(cast->FromJClass(this));
577 jni->SetObjField(fldobj, "clazz", clazz);
578
579 name := ref Value.TObject(cast->FromJString(jni->NewString(fld.field)));
580 jni->SetObjField(fldobj, "name", name);
581
582 class : ref Value;
583 if ( (typ := refl->SigToType(fld.signature)) > 0 )
584 class = refl->GetPrimitiveClass(typ);
585 else {
586 classname := fld.signature[1:len fld.signature - 1];
587 class = ref Value.TObject(cast->FromJClass(
588 jni->GetClassObject(jni->FindClass(classname))));
589 }
590 jni->SetObjField(fldobj, "type", class);
591
592 slot := ref Value.TInt((fld.flags & 16rffff) | (ix << 16));
593 jni->SetObjField(fldobj, "slot", slot);
594
595 return fldobj;
596}
597#
598# Make a new Method/Constructor object for a method or constructor in
599# the class this. The loader information for the method/constructor is
600# found in the loader Field adt fld, which is at offset ix in its
601# array or list. The signature for the arguments is converted into
602# a corresponding array of Class objects by makeParamClassArray, then
603# makeMethod is called to generate the new object.
604#
605makeAMethod(this: JClass, fld : ref jldr->Field, ix : int) : JObject
606{
607 (sig, retsig) := jni->str->splitr(fld.signature, ")");
608 objectarray := makeParamClassArray(sig);
609
610 classarray := cast->JArrayToClass(cast->ObjectToJArray(objectarray));
611 return makeMethod(this, fld, ix, classarray, retsig);
612}
613#
614# Construct a Method Object. Also used to make Constructor Objects,
615# share several elements with Methods. The two can be distinguished
616# because constructors have the name "<init>" (however, Constructor
617# Objects do not have a 'name' field, nor do they have a 'returnType'
618# field. The 'slot' field, which is only used by native methods,
619# is filled with modifier flags in the lower 16 bits and an index (ix)
620# into an appropriate loader array/list in the upper 16 bits (which
621# array can be determined by the modifier flags. ). The arguments
622# types required by the method are specified by the cl array of
623# Class ofjects. The return value, if any, is specified by the
624# signature given in retsig.
625#
626makeMethod(this: JClass, fld : ref jldr->Field, ix : int, cl : JArrayJClass,
627 retsig : string) : JObject
628{
629 mcl : ClassData;
630 isConstructor := 0;
631 if ( fld.field == "<init>" )
632 isConstructor = 1;
633 if ( isConstructor )
634 mcl = jni->FindClass("java/lang/reflect/Constructor");
635 else
636 mcl = jni->FindClass("java/lang/reflect/Method");
637 methobj := jni->AllocObject(mcl);
638
639 clazz := ref Value.TObject(cast->FromJClass(this));
640 jni->SetObjField(methobj, "clazz", clazz);
641
642 if ( ! isConstructor ) {
643 name := ref Value.TObject(cast->FromJString(jni->NewString(fld.field)));
644 jni->SetObjField(methobj, "name", name);
645 }
646
647 slot := ref Value.TInt((fld.flags & 16rffff) | (ix << 16));
648 jni->SetObjField(methobj, "slot", slot);
649
650 if ( ! isConstructor ) {
651 getReflect();
652 ret : ref Value;
653 if ( (typ := refl->SigToType(retsig)) > 0 )
654 ret = refl->GetPrimitiveClass(typ);
655 else {
656 rclass: JClass;
657 case retsig[0] {
658 'L' =>
659 rcdata := jni->FindClass(retsig[1:len retsig -1]);
660 rclass = jni->GetClassObject(rcdata);
661 '[' =>
662 rclass = jni->LookupArrayClass(retsig);
663 'V' =>
664 rcdata := jni->FindClass("inferno/vm/void_p");
665 rclass = jni->GetClassObject(rcdata);
666 }
667 ret = ref Value.TObject(cast->FromJClass(rclass));
668 }
669 jni->SetObjField(methobj, "returnType", ret);
670 }
671
672 args := ref Value.TObject(cast->FromJArray(cast->ClassToJArray(cl)));
673 jni->SetObjField(methobj, "parameterTypes", args);
674
675 # Don't know how to get the list of exceptions thrown.
676 # jni->SetObjField(methobj, "exceptionTypes", excs);
677 # Set to a sensible default for now.
678 foo := cast->JArrayToClass(cast->ObjectToJArray(makeParamClassArray("()")));
679 excs := ref Value.TObject(cast->FromJArray(cast->ClassToJArray(foo)));
680 jni->SetObjField(methobj, "exceptionTypes", excs);
681 return methobj;
682}
683#
684# Turn a signature into an array of Class Objects.
685#
686makeParamClassArray(sig : string) : JArrayJObject
687{
688 if ( sig[0] != '(' || sig[len sig -1] != ')' )
689 return nil;
690 clist := makeParamClass(sig[1:len sig -1]);
691 jajcl := array[len clist] of JObject;
692 for ( i := 0; i < len jajcl; i++ ) {
693 jajcl[i] = hd clist;
694 clist = tl clist;
695 }
696 paramclassarray := jni->MkAObject(jajcl);
697 paramclassarray.class = jni->FindClass("java/lang/Class");
698 return paramclassarray;
699}
700#
701# Recursively turn a signature into a list of JClass
702#
703makeParamClass(sig : string) : list of JObject
704{
705 if ( sig == "" )
706 return nil;
707
708 (first, rest) := splitSignature(sig);
709 jobj: JObject;
710 case first[0] {
711 'L' =>
712 first = first[1:len first - 1];
713 newcl := jni->GetClassObject(jni->FindClass(first));
714 jobj = cast->FromJClass(newcl);
715 '[' =>
716 newcl := jni->LookupArrayClass(first);
717 jobj = cast->FromJClass(newcl);
718 'Z' or 'B' or 'S' or 'C' or 'I' or 'J' or 'F' or 'D' =>
719 typ := refl->SigToType(first);
720 jobj = refl->GetPrimitiveClass(typ).Object();
721 * =>
722 return nil;
723 }
724
725 return jobj :: makeParamClass(rest);
726}
727#
728# Convert an array of JClass to the corresponding signature string.
729#
730MakeSignature(jcl : JArrayJClass) : string
731{
732 clarray: array of JClass;
733 if ( jcl != nil )
734 clarray = jcl.ary;
735 sig := "";
736 for ( i := 0; i < len clarray; i++)
737 sig += MakeSingleSignature(clarray[i]);
738 return sig;
739}
740#
741# Convert a Jclass to the corresponding signature.
742#
743MakeSingleSignature(this : JClass) : string
744{
745 if ( (typ := jni->PrimitiveIndex(this, 1)) > 0 ) {
746 getReflect();
747 return refl->TypeToSig(typ);
748 }
749
750 if ( this.aryname != nil )
751 return this.aryname;
752
753 #
754 # Must be a class type
755 #
756 return "L" + this.class.name + ";";
757}
758#
759# Break a signature into an initial type plus the remainder.
760#
761splitSignature(sig : string) : (string, string)
762{
763 case sig[0] {
764 'L' =>
765 for ( i := 1; sig[i] != ';'; i++ ) ;
766 i++;
767 return (sig[0:i], sig[i:]);
768
769 '[' => # recurse to get element type
770 (first, rest) := splitSignature(sig[1:]);
771 return ("[" + first, rest);
772
773 'Z' or 'B' or 'S' or 'C' or 'I' or 'J' or 'F' or 'D' =>
774 return (sig[0:1], sig[1:]);
775 }
776 return (nil, nil);
777}
778
java/pkg2/java/lang/Class_L.m+30−0
@@ -0,0 +1,30 @@
1# javal v1.2 generated file: edit with care
2
3Class_L : module
4{
5
6 init : fn( jni_p : JNI );
7 forName_rString_rClass : fn( p0 : JString) : JClass;
8 newInstance_rObject : fn( this : JClass) : JObject;
9 isInstance_rObject_Z : fn( this : JClass, p0 : JObject) : int;
10 isAssignableFrom_rClass_Z : fn( this : JClass, p0 : JClass) : int;
11 isInterface_Z : fn( this : JClass) : int;
12 isArray_Z : fn( this : JClass) : int;
13 isPrimitive_Z : fn( this : JClass) : int;
14 getName_rString : fn( this : JClass) : JString;
15 getClassLoader_rClassLoader : fn( this : JClass) : JObject;
16 getSuperclass_rClass : fn( this : JClass) : JClass;
17 getInterfaces_aClass : fn( this : JClass) : JArrayJClass;
18 getComponentType_rClass : fn( this : JClass) : JClass;
19 getModifiers_I : fn( this : JClass) : int;
20 getSigners_aObject : fn( this : JClass) : JArrayJObject;
21 setSigners_aObject_V : fn( this : JClass, p0 : JArrayJObject);
22 getPrimitiveClass_rString_rClass : fn( p0 : JString) : JClass;
23 getFields0_I_aField : fn( this : JClass, p0 : int) : JArrayJObject;
24 getMethods0_I_aMethod : fn( this : JClass, p0 : int) : JArrayJObject;
25 getConstructors0_I_aConstructor : fn( this : JClass, p0 : int) : JArrayJObject;
26 getField0_rString_I_rField : fn( this : JClass, p0 : JString,p1 : int) : JObject;
27 getMethod0_rString_aClass_I_rMethod : fn( this : JClass, p0 : JString,p1 : JArrayJClass,p2 : int) : JObject;
28 getConstructor0_aClass_I_rConstructor : fn( this : JClass, p0 : JArrayJClass,p1 : int) : JObject;
29
30};
java/pkg2/java/lang/CloneNotSupportedException.java+0−0

Empty file added.

java/pkg2/java/lang/Cloneable.java+0−0

Empty file added.

java/pkg2/java/lang/Compiler.java+0−0

Empty file added.

java/pkg2/java/lang/Double.java+0−0

Empty file added.

java/pkg2/java/lang/Double_L.b+66−0
@@ -0,0 +1,66 @@
1implement Double_L;
2
3# javal v1.3 generated file: edit with care
4
5include "jni.m";
6 jni : JNI;
7 ClassModule,
8 JString,
9 JArray,
10 JArrayI,
11 JArrayC,
12 JArrayB,
13 JArrayS,
14 JArrayJ,
15 JArrayF,
16 JArrayD,
17 JArrayZ,
18 JArrayJObject,
19 JArrayJClass,
20 JArrayJString,
21 JClass,
22 JThread,
23 JObject : import jni;
24
25#>> extra pre includes here
26
27#<<
28
29include "Double_L.m";
30
31#>> extra post includes here
32math : Math;
33#<<
34
35init( jni_p : JNI )
36{
37 # save java native inteface mod instance
38 jni = jni_p;
39 #>>extra initialization here
40 math = jni->math;
41 #<<
42}
43
44doubleToLongBits_D_J( p0 : real) : big
45{#>>
46 return( math->realbits64(p0) );
47}#<<
48
49longBitsToDouble_J_D( p0 : big) : real
50{#>>
51 return( math->bits64real( p0 ) );
52}#<<
53
54valueOf0_rString_D( p0 : JString) : real
55{#>>
56 return( real p0.str );
57}#<<
58
59mkstring_D_rString( p0 : real) : JString
60{#>>
61 s := string p0;
62 if(p0 == 0.0)
63 s += ".0";
64 return( jni->NewString( s ) );
65}#<<
66
java/pkg2/java/lang/Double_L.m+17−0
@@ -0,0 +1,17 @@
1# javal v1.3 generated file: edit with care
2
3Double_L : module
4{
5 Double_obj : adt
6 {
7 cl_mod : ClassModule;
8 value : real;
9 };
10
11 init : fn( jni_p : JNI );
12 doubleToLongBits_D_J : fn( p0 : real) : big;
13 longBitsToDouble_J_D : fn( p0 : big) : real;
14 valueOf0_rString_D : fn( p0 : JString) : real;
15 mkstring_D_rString : fn( p0 : real) : JString;
16
17};
java/pkg2/java/lang/Error.java+0−0

Empty file added.

java/pkg2/java/lang/Exception.java+0−0

Empty file added.

java/pkg2/java/lang/ExceptionInInitializerE..a+73−0
@@ -0,0 +1,73 @@
1/*
2 * @(#)ExceptionInInitializerError.java 1.2 97/01/20
3 *
4 * Copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
5 *
6 * Permission to use, copy, modify, and distribute this software
7 * and its documentation for NON-COMMERCIAL purposes and without
8 * fee is hereby granted provided that this copyright notice
9 * appears in all copies. Please refer to the file "copyright.html"
10 * for further important copyright and licensing information.
11 *
12 * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
13 * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
14 * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
15 * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
16 * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
17 * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
18 */
19
20package java.lang;
21
22/**
23 * Signals that an unexpected exception has occurred in a static initializer.
24 *
25 * @author Frank Yellin
26 * @version 1.2, 01/20/97
27 *
28 * @since JDK1.1
29 */
30public
31class ExceptionInInitializerError extends LinkageError {
32 private Throwable exception;
33
34 /**
35 * Constructs an ExceptionInInitializerError with no detail message.
36 * A detail message is a String that describes this particular exception.
37 *
38 * @since JDK1.1
39 */
40 public ExceptionInInitializerError() {
41 super();
42 }
43
44 /**
45 * Constructs a new ExceptionInInitializerError class initialized to
46 * the specific throwable
47 *
48 * @param thrown The exception thrown
49 * @since JDK1.1
50 */
51 public ExceptionInInitializerError(Throwable thrown) {
52 this.exception = thrown;
53 }
54
55 /**
56 * Constructs a ExceptionInInitializerError with the specified detail message.
57 * A detail message is a String that describes this particular exception.
58 *
59 * @param s the detail message
60 * @since JDK1.1
61 */
62 public ExceptionInInitializerError(String s) {
63 super(s);
64 }
65
66 /**
67 * Returns the exception that occurred during a static initialization that
68 * caused this Error to be created.
69 */
70 public Throwable getException() {
71 return exception;
72 }
73}
java/pkg2/java/lang/Float.java+0−0

Empty file added.

java/pkg2/java/lang/Float_L.b+60−0
@@ -0,0 +1,60 @@
1implement Float_L;
2
3# javal v1.3 generated file: edit with care
4
5include "jni.m";
6 jni : JNI;
7 ClassModule,
8 JString,
9 JArray,
10 JArrayI,
11 JArrayC,
12 JArrayB,
13 JArrayS,
14 JArrayJ,
15 JArrayF,
16 JArrayD,
17 JArrayZ,
18 JArrayJObject,
19 JArrayJClass,
20 JArrayJString,
21 JClass,
22 JThread,
23 JObject : import jni;
24
25#>> extra pre includes here
26
27#<<
28
29include "Float_L.m";
30
31#>> extra post includes here
32math : Math;
33#<<
34
35init( jni_p : JNI )
36{
37 # save java native inteface mod instance
38 jni = jni_p;
39 #>>extra initialization here
40 math = jni->math;
41 #<<
42}
43
44floatToIntBits_F_I( p0 : real) : int
45{#>>
46 return( math->realbits32(p0) );
47}#<<
48
49intBitsToFloat_I_F( p0 : int) : real
50{#>>
51 return( math->bits32real(p0) );
52}#<<
53
54mkstring_F_rString( p0 : real) : JString
55{#>>
56 s := string p0;
57 if(p0 == 0.0)
58 s += ".0";
59 return( jni->NewString( s ) );
60}#<<
java/pkg2/java/lang/Float_L.m+16−0
@@ -0,0 +1,16 @@
1# javal v1.3 generated file: edit with care
2
3Float_L : module
4{
5 Float_obj : adt
6 {
7 cl_mod : ClassModule;
8 value : real;
9 };
10
11 init : fn( jni_p : JNI );
12 floatToIntBits_F_I : fn( p0 : real) : int;
13 intBitsToFloat_I_F : fn( p0 : int) : real;
14 mkstring_F_rString : fn( p0 : real) : JString;
15
16};
java/pkg2/java/lang/IllegalAccessError.java+0−0

Empty file added.

java/pkg2/java/lang/IllegalAccessException.java+0−0

Empty file added.

java/pkg2/java/lang/IllegalArgumentException.java+0−0

Empty file added.

java/pkg2/java/lang/IllegalMonitorStateException.java+0−0

Empty file added.

java/pkg2/java/lang/IllegalStateException.java+0−0

Empty file added.

java/pkg2/java/lang/IllegalThreadStateExcep..a+0−0

Empty file added.

java/pkg2/java/lang/IncompatibleClassChange..a+0−0

Empty file added.

java/pkg2/java/lang/IndexOutOfBoundsExcepti..a+0−0

Empty file added.

java/pkg2/java/lang/InfernoProcess.java+0−0

Empty file added.

java/pkg2/java/lang/InfernoProcess_L.b+207−0
@@ -0,0 +1,207 @@
1implement InfernoProcess_L;
2
3# javal v1.3 generated file: edit with care
4
5include "jni.m";
6 jni : JNI;
7 ClassModule,
8 JString,
9 JArray,
10 JArrayI,
11 JArrayC,
12 JArrayB,
13 JArrayS,
14 JArrayJ,
15 JArrayF,
16 JArrayD,
17 JArrayZ,
18 JArrayJObject,
19 JArrayJClass,
20 JArrayJString,
21 JClass,
22 JThread,
23 JObject : import jni;
24
25#>> extra pre includes here
26
27include "java/io/FileDescriptor_L.m";
28 FileDescriptor_obj : import FileDescriptor_L;
29
30#<<
31
32include "InfernoProcess_L.m";
33
34#>> extra post includes here
35
36include "sh.m";
37
38ioexception := "";
39
40#<<
41
42init( jni_p : JNI )
43{
44 # save java native inteface mod instance
45 jni = jni_p;
46 #>>extra initialization here
47 #<<
48}
49
50initProc_aString_aString_V( this : ref InfernoProcess_obj, p0 : JArrayJString,p1 : JArrayJString)
51{#>>
52 #
53 # p0 : command and arguments
54 # p1 : environment in for var=value; does not apply in Inferno
55 #
56 dummy := this;
57 jstrs := p0.ary;
58 args : list of string;
59 l := len jstrs;
60 for ( i := l-1; i >= 0; i--)
61 args = jstrs[i].str :: args;
62
63 sync := chan of int;
64 spawn exec(this, args, sync);
65 pid := <- sync;
66 if ( pid == 0 )
67 jni->ThrowException("java.io.IOException", ioexception);
68}#<<
69
70waitFor_I( this : ref InfernoProcess_obj) : int
71{#>>
72 if ( this.waitfd.fd == nil )
73 this.terminated = JNI->TRUE;
74 while ( this.terminated == JNI->FALSE ) {
75 (ok, nil) := jni->sys->fstat(this.waitfd.fd);
76 if ( ok < 0 )
77 this.terminated = JNI->TRUE;
78 else
79 jni->sys->sleep(1000);
80 }
81 this.waitfd.fd = nil;
82 return 0;
83}#<<
84
85destroy_V( this : ref InfernoProcess_obj)
86{#>>
87 if ( this.pid == 0 || isTerminated_Z(this) == JNI->TRUE )
88 return;
89
90 fd := jni->sys->open("/prog/"+string this.pid+"/ctl", jni->sys->OWRITE);
91 if ( fd != nil )
92 jni->sys->fprint(fd, "killgrp");
93 this.pid = 0;
94 this.terminated = JNI->TRUE;
95}#<<
96
97isTerminated_Z( this : ref InfernoProcess_obj) : int
98{#>>
99 # If the file descriptor being used to wait for the process to terminate
100 # is still good, the process hasn't terminated yet.
101 #
102 if ( this.waitfd.fd == nil )
103 return this.terminated = JNI->TRUE;
104 (ok, nil) := jni->sys->fstat(this.waitfd.fd);
105 if ( ok < 0 )
106 this.terminated = JNI->TRUE;
107 return this.terminated;
108}#<<
109
110
111
112exec(this : ref InfernoProcess_obj, args : list of string,
113 waitpid : chan of int)
114{
115 # find and load module corresponding to hd args.
116 cmd := hd args;
117 file := cmd;
118 if ( len file < 4 || file[len file - 4:] != ".dis" )
119 file += ".dis";
120
121 c := load Command file;
122 if ( c == nil ) {
123 err := jni->sys->sprint("%r");
124 if ( err == "file does not exist" && file[0] != '/' &&
125 file[0:2] != "./" ) {
126 c = load Command "/dis/" + file;
127 if ( c == nil )
128 err = jni->sys->sprint("%r");
129 }
130 if ( c == nil ) {
131 ioexception = jni->sys->sprint("%s: %r", cmd);
132 waitpid <- = 0;
133 return;
134 }
135 }
136 #
137 # Get pid (via pctl) and save; We save the pid of the PARENT of the
138 # thread that will actually execute the command. Then if someone
139 # calls destroy, the whole group is killed.
140 #
141 this.pid = jni->sys->pctl(Sys->FORKNS | Sys->NEWPGRP, nil);
142 #
143 # Note: have to open the /prog/n/wait file of parent before doing the spawn.
144 #
145 waitfd : ref Sys->FD;;
146 if ( this.pid > 0 )
147 waitfd = jni->sys->open("#p/" + string this.pid + "/wait", Sys->OREAD);
148 this.waitfd.fd = waitfd;
149
150 # arrange for new input/output to the command. Save in stdin & stdout.
151 si := array[2] of ref Sys->FD;
152 so := array[2] of ref Sys->FD;
153 se := array[2] of ref Sys->FD;
154 if ( jni->sys->pipe(si) < 0 ) {
155 ioexception = "pipe failure";
156 waitpid <- = 0;
157 return;
158 }
159 if ( jni->sys->pipe(so) < 0 ) {
160 ioexception = "pipe failure";
161 waitpid <- = 0;
162 return;
163 }
164 if ( jni->sys->pipe(se) < 0 ) {
165 ioexception = "pipe failure";
166 waitpid <- = 0;
167 return;
168 }
169 this.stdin.fd = si[1];
170 this.stdout.fd = so[0];
171 this.stderr.fd = se[0];
172 spawn exec1(c, si[0], so[1], se[1], args, waitpid);
173 si[0] = si[1] = so[0] = so[1] = se[0] = se[1] = nil;
174 #
175 # We can't just exit this thread, or we could never detect completion
176 # of the child. So we wait here for the wait notification.
177 # Note that we nil the 'this' reference, so that it will be
178 # possible for it to be garbage collected when not referenced elsewhere.
179 # That means we can't set the terminated flag, so that anyone who
180 # really needs to know whether the process has terminated has to check
181 # to see if this.waitfd.fd is still a valid FD.
182 #
183 this = nil;
184 buf := array[64] of byte;
185 if ( waitfd != nil && jni->sys->read(waitfd, buf, len buf) < 0 )
186 jni->sys->print("read error on wait file: %r\n")
187 ; # even if this is an error, how do we report it?
188}
189
190exec1(cmd : Command, in, out, err : ref Sys->FD, args : list of string,
191 c : chan of int)
192{
193 newfds := in.fd :: out.fd :: err.fd :: nil;
194 pid := jni->sys->pctl(Sys->NEWFD, newfds);
195 jni->sys->dup(in.fd, 0);
196 jni->sys->dup(out.fd, 1);
197 jni->sys->dup(err.fd, 2);
198 in = out = err = nil;
199 pid = jni->sys->pctl(Sys->NEWFD, 0 :: 1 :: 2 :: nil);
200 #
201 # Eventually there has to be a way to get the Draw->Context.
202 #
203 # ctxt := jni->GetContext();
204 c <- = pid;
205 cmd->init(nil, args);
206}
207
java/pkg2/java/lang/InfernoProcess_L.m+22−0
@@ -0,0 +1,22 @@
1# javal v1.3 generated file: edit with care
2
3InfernoProcess_L : module
4{
5 InfernoProcess_obj : adt
6 {
7 cl_mod : ClassModule;
8 stdin : ref FileDescriptor_obj;
9 stdout : ref FileDescriptor_obj;
10 stderr : ref FileDescriptor_obj;
11 pid : int;
12 waitfd : ref FileDescriptor_obj;
13 terminated : int;
14 };
15
16 init : fn( jni_p : JNI );
17 initProc_aString_aString_V : fn( this : ref InfernoProcess_obj, p0 : JArrayJString,p1 : JArrayJString);
18 waitFor_I : fn( this : ref InfernoProcess_obj) : int;
19 destroy_V : fn( this : ref InfernoProcess_obj);
20 isTerminated_Z : fn( this : ref InfernoProcess_obj) : int;
21
22};
java/pkg2/java/lang/InstantiationError.java+0−0

Empty file added.

java/pkg2/java/lang/InstantiationException.java+0−0

Empty file added.

java/pkg2/java/lang/Integer.java+0−0

Empty file added.

java/pkg2/java/lang/InternalError.java+0−0

Empty file added.

java/pkg2/java/lang/InterruptedException.java+0−0

Empty file added.

java/pkg2/java/lang/LinkageError.java+0−0

Empty file added.

java/pkg2/java/lang/Long.java+0−0

Empty file added.

java/pkg2/java/lang/Math.java+0−0

Empty file added.

java/pkg2/java/lang/Math_L.b+119−0
@@ -0,0 +1,119 @@
1implement Math_L;
2
3# javal v1.2 generated file: edit with care
4
5include "jni.m";
6 jni : JNI;
7 ClassModule,
8 JString,
9 JArray,
10 JArrayI,
11 JArrayC,
12 JArrayB,
13 JArrayS,
14 JArrayJ,
15 JArrayF,
16 JArrayD,
17 JArrayZ,
18 JArrayJObject,
19 JArrayJClass,
20 JArrayJString,
21 JClass,
22 JObject : import jni;
23
24#>> extra pre includes here
25
26#<<
27
28include "Math_L.m";
29
30#>> extra post includes here
31math : Math;
32#<<
33
34init( jni_p : JNI )
35{
36 # save java native inteface mod instance
37 jni = jni_p;
38 #>>extra initialization here
39 math = jni->math;
40 #<<
41}
42
43sin_D_D( p0 : real) : real
44{#>>
45 return( math->sin(p0) );
46}#<<
47
48cos_D_D( p0 : real) : real
49{#>>
50 return( math->cos(p0) );
51}#<<
52
53tan_D_D( p0 : real) : real
54{#>>
55 return( math->tan(p0) );
56}#<<
57
58asin_D_D( p0 : real) : real
59{#>>
60 return( math->asin(p0) );
61}#<<
62
63acos_D_D( p0 : real) : real
64{#>>
65 return( math->acos(p0) );
66}#<<
67
68atan_D_D( p0 : real) : real
69{#>>
70 return( math->atan(p0) );
71}#<<
72
73exp_D_D( p0 : real) : real
74{#>>
75 return( math->exp(p0) );
76}#<<
77
78log_D_D( p0 : real) : real
79{#>>
80 return( math->log(p0) );
81}#<<
82
83sqrt_D_D( p0 : real) : real
84{#>>
85 return( math->sqrt(p0) );
86}#<<
87
88IEEEremainder_D_D_D( p0 : real,p1 : real) : real
89{#>>
90 return( math->remainder(p0,p1) );
91}#<<
92
93ceil_D_D( p0 : real) : real
94{#>>
95 return( math->ceil(p0) );
96}#<<
97
98floor_D_D( p0 : real) : real
99{#>>
100 return( math->floor(p0) );
101}#<<
102
103rint_D_D( p0 : real) : real
104{#>>
105 return( math->rint(p0) );
106}#<<
107
108atan2_D_D_D( p0 : real,p1 : real) : real
109{#>>
110 return( math->atan2(p0,p1) );
111}#<<
112
113pow_D_D_D( p0 : real,p1 : real) : real
114{#>>
115 return( math->pow(p0,p1) );
116}#<<
117
118
119
java/pkg2/java/lang/Math_L.m+27−0
@@ -0,0 +1,27 @@
1# javal v1.2 generated file: edit with care
2
3Math_L : module
4{
5 Math_obj : adt
6 {
7 cl_mod : ClassModule;
8 };
9
10 init : fn( jni_p : JNI );
11 sin_D_D : fn( p0 : real) : real;
12 cos_D_D : fn( p0 : real) : real;
13 tan_D_D : fn( p0 : real) : real;
14 asin_D_D : fn( p0 : real) : real;
15 acos_D_D : fn( p0 : real) : real;
16 atan_D_D : fn( p0 : real) : real;
17 exp_D_D : fn( p0 : real) : real;
18 log_D_D : fn( p0 : real) : real;
19 sqrt_D_D : fn( p0 : real) : real;
20 IEEEremainder_D_D_D : fn( p0 : real,p1 : real) : real;
21 ceil_D_D : fn( p0 : real) : real;
22 floor_D_D : fn( p0 : real) : real;
23 rint_D_D : fn( p0 : real) : real;
24 atan2_D_D_D : fn( p0 : real,p1 : real) : real;
25 pow_D_D_D : fn( p0 : real,p1 : real) : real;
26
27};
java/pkg2/java/lang/NegativeArraySizeExcept..a+0−0

Empty file added.

java/pkg2/java/lang/NoClassDefFoundError.java+0−0

Empty file added.

java/pkg2/java/lang/NoSuchFieldError.java+0−0

Empty file added.

java/pkg2/java/lang/NoSuchFieldException.java+0−0

Empty file added.

java/pkg2/java/lang/NoSuchMethodError.java+0−0

Empty file added.

java/pkg2/java/lang/NoSuchMethodException.java+0−0

Empty file added.

java/pkg2/java/lang/NullPointerException.java+0−0

Empty file added.

java/pkg2/java/lang/Number.java+0−0

Empty file added.

java/pkg2/java/lang/NumberFormatException.java+0−0

Empty file added.

java/pkg2/java/lang/Object.java+0−0

Empty file added.

java/pkg2/java/lang/Object_L.b+71−0
@@ -0,0 +1,71 @@
1implement Object_L;
2
3include "jni.m";
4 jni : JNI;
5 ClassModule,
6 JString,
7 JArray,
8 JArrayI,
9 JArrayC,
10 JArrayB,
11 JArrayS,
12 JArrayJ,
13 JArrayF,
14 JArrayD,
15 JArrayZ,
16 JArrayJObject,
17 JArrayJString,
18 JClass,
19 JObject : import jni;
20
21#>> extra pre includes here
22
23#<<
24
25include "Object_L.m";
26
27#>> extra post includes here
28
29#<<
30
31init( jni_p : JNI )
32{
33 # save java native inteface mod instance
34 jni = jni_p;
35 #>>extra initialization here
36 #<<
37}
38
39getClass_rClass( this : JObject) : JClass
40{#>>
41 return( jni->GetObjectClass(this) );
42}#<<
43
44hashCode_I( this : JObject ) : int
45{#>>
46 return( jni->IdentityHash( this ) );
47}#<<
48
49clone_rObject( this : JObject ) : JObject
50{#>>
51 return( jni->DupObject( this ) );
52}#<<
53
54notify_V( this : JObject )
55{#>>
56 jni->jldr->monitornotify( this, 0 );
57}#<<
58
59notifyAll_V( this : JObject )
60{#>>
61 jni->jldr->monitornotify( this, 1 );
62}#<<
63
64wait_J_V( this : JObject, p0 : big)
65{#>>
66 if ( p0 < big 0 )
67 jni->ThrowException( "java.lang.IllegalArgumentException", "negative timeout value" );
68 # limit to 30 bits of millisecond time.
69 duration := (int p0) & 16r3FFFFFFF;
70 jni->jldr->monitorwait( this, duration );
71}#<<
java/pkg2/java/lang/Object_L.m+14−0
@@ -0,0 +1,14 @@
1# generated file edit with care
2
3Object_L : module
4{
5 init : fn( jni_p : JNI );
6 getClass_rClass : fn( this : JObject ) : JClass;
7 hashCode_I : fn( this : JObject ) : int;
8 clone_rObject : fn( this : JObject ) : JObject;
9 notify_V : fn( this : JObject );
10 notifyAll_V : fn( this : JObject );
11 wait_J_V : fn( this : JObject, p0 : big);
12 registerNatives_V : fn( this : JObject );
13
14};
java/pkg2/java/lang/OutOfMemoryError.java+0−0

Empty file added.

java/pkg2/java/lang/Process.java+0−0

Empty file added.

java/pkg2/java/lang/Runnable.java+0−0

Empty file added.

java/pkg2/java/lang/Runtime.java+0−0

Empty file added.

java/pkg2/java/lang/RuntimeException.java+0−0

Empty file added.

java/pkg2/java/lang/Runtime_L.b+161−0
@@ -0,0 +1,161 @@
1implement Runtime_L;
2
3# javal v1.2 generated file: edit with care
4
5include "jni.m";
6 jni : JNI;
7 ClassModule,
8 JString,
9 JArray,
10 JArrayI,
11 JArrayC,
12 JArrayB,
13 JArrayS,
14 JArrayJ,
15 JArrayF,
16 JArrayD,
17 JArrayZ,
18 JArrayJObject,
19 JArrayJClass,
20 JArrayJString,
21 JClass,
22 JObject : import jni;
23
24#>> extra pre includes here
25
26#<<
27
28include "Runtime_L.m";
29
30#>> extra post includes here
31
32#<<
33
34init( jni_p : JNI )
35{
36 # save java native inteface mod instance
37 jni = jni_p;
38 #>>extra initialization here
39 #<<
40}
41
42killgrp()
43{
44 # kill this process group
45 msg := array of byte "killgrp";
46 pid := string jni->sys->pctl(0,nil); #my pid
47
48 fd := jni->sys->open("#p/"+pid+"/ctl", Sys->OWRITE);
49 if(fd != nil)
50 jni->sys->write(fd, msg, len msg);
51
52 #note: we silently fail if we could not open
53 #'#p' (i.e. because of NODEVS) or if the
54 #write fails
55}
56
57exitInternal_I_V( this : ref Runtime_obj, p0 : int)
58{#>>
59 # can't kill self, so spawn thread to kill group
60 spawn killgrp();
61 # send nowhere until killed
62 chan of int <-= 666;
63 junk := (this,p0); #inferno does not have an exit code
64}#<<
65
66runFinalizersOnExit0_Z_V( p0 : int)
67{#>>
68 junk := (p0);
69}#<<
70
71freeMemory_J( this : ref Runtime_obj) : big
72{#>>
73 # open; read; parase; memory device
74 mfd := jni->sys->open("#c/memory", Sys->OREAD);
75 if ( mfd == nil )
76 return(big 0);
77 buf := array[300] of byte;
78 n := jni->sys->read(mfd, buf, len buf);
79 if(n <= 0)
80 return(big 0);
81 (nil, arena) := jni->sys->tokenize(string buf[0:n], "\n");
82 (used,limit) := (0,0);
83 # walk list of arena's looking for "heap"
84 while(arena != nil)
85 {
86 # break line into tokens
87 (nil,tok) := jni->sys->tokenize( hd arena, " " );
88 used = int (hd tok); #first tok is amount used
89 tok = tl tok;
90 limit = int (hd tok); #second tok is total
91 name : string;
92 for(tok= tl tok; tok != nil; tok = tl tok)
93 name = hd tok;
94
95 if ( name == "heap" )
96 break;
97 arena = tl arena;
98 }
99
100 # return the amount free
101 return( big (limit-used) );
102 junk := (this);
103}#<<
104
105totalMemory_J( this : ref Runtime_obj) : big
106{#>>
107 # open; read; parase; memory device
108 mfd := jni->sys->open("#c/memory", Sys->OREAD);
109 if ( mfd == nil )
110 return( big 0 );
111 buf := array[300] of byte;
112 n := jni->sys->read(mfd, buf, len buf);
113 if(n <= 0)
114 return(big 0);
115 (nil, arena) := jni->sys->tokenize(string buf[0:n], "\n");
116 limit := 0;
117 while(arena != nil)
118 {
119 # break line into tokens
120 (nil,tok) := jni->sys->tokenize( hd arena, " " );
121 tok = tl tok;
122 limit = int (hd tok); #second tok is total
123 name : string;
124 for(tok= tl tok; tok != nil; tok = tl tok)
125 name = hd tok;
126
127 if ( name == "heap" )
128 break;
129 arena = tl arena;
130 }
131
132 # return the total amount
133 return( big limit );
134 junk := (this);
135}#<<
136
137gc_V( this : ref Runtime_obj)
138{#>>
139 # do nothing
140 junk := this;
141}#<<
142
143runFinalization_V( this : ref Runtime_obj)
144{#>>
145 # do nothing
146 junk := this;
147}#<<
148
149traceInstructions_Z_V( this : ref Runtime_obj, p0 : int)
150{#>>
151 # do nothing
152 return;
153 junk := (this,p0);
154}#<<
155
156traceMethodCalls_Z_V( this : ref Runtime_obj, p0 : int)
157{#>>
158 # doing nothing is a valid implementation
159 return;
160 junk := (this,p0);
161}#<<
java/pkg2/java/lang/Runtime_L.m+20−0
@@ -0,0 +1,20 @@
1# javal v1.2 generated file: edit with care
2
3Runtime_L : module
4{
5 Runtime_obj : adt
6 {
7 cl_mod : ClassModule;
8 };
9
10 init : fn( jni_p : JNI );
11 exitInternal_I_V : fn( this : ref Runtime_obj, p0 : int);
12 runFinalizersOnExit0_Z_V : fn( p0 : int);
13 freeMemory_J : fn( this : ref Runtime_obj) : big;
14 totalMemory_J : fn( this : ref Runtime_obj) : big;
15 gc_V : fn( this : ref Runtime_obj);
16 runFinalization_V : fn( this : ref Runtime_obj);
17 traceInstructions_Z_V : fn( this : ref Runtime_obj, p0 : int);
18 traceMethodCalls_Z_V : fn( this : ref Runtime_obj, p0 : int);
19
20};
java/pkg2/java/lang/SecurityException.java+0−0

Empty file added.

java/pkg2/java/lang/SecurityManager.java+0−0

Empty file added.

java/pkg2/java/lang/SecurityManager_L.b+175−0
@@ -0,0 +1,175 @@
1implement SecurityManager_L;
2
3# javal v1.2 generated file: edit with care
4
5include "jni.m";
6 jni : JNI;
7 ClassModule,
8 JString,
9 JArray,
10 JArrayI,
11 JArrayC,
12 JArrayB,
13 JArrayS,
14 JArrayJ,
15 JArrayF,
16 JArrayD,
17 JArrayZ,
18 JArrayJObject,
19 JArrayJClass,
20 JArrayJString,
21 JClass,
22 JObject : import jni;
23
24#>> extra pre includes here
25
26#<<
27
28include "SecurityManager_L.m";
29
30#>> extra post includes here
31
32#<<
33
34init( jni_p : JNI )
35{
36 # save java native inteface mod instance
37 jni = jni_p;
38 #>>extra initialization here
39 #<<
40}
41
42getClassContext_aClass( this : ref SecurityManager_obj) : JArrayJClass
43{#>>
44 #
45 # return an array of classes that represent the classes of
46 # each method on the current call stack (presumably ignoring
47 # any native funtions).
48 #
49 jni->FatalError( "getClassContext() not implemented" );
50 junk := this;
51 return(nil);
52}#<<
53
54currentClassLoader_rClassLoader( this : ref SecurityManager_obj) : JObject
55{#>>
56 #
57 # this returns the most recent class loader on the current call
58 # stack. Traditionally the call stack is walked and the class of
59 # each "active" method is checked to obtain its class loader (if
60 # any; null==root loader). The first such class loader we find
61 # is returned.
62 #
63 return(nil); #for now we don't walk back
64 junk := this;
65}#<<
66
67classDepth_rString_I( this : ref SecurityManager_obj, p0 : JString) : int
68{#>>
69 #
70 # walk the call stack looking for a method that resides in
71 # the class specified.
72 #
73 if ( p0 != nil )
74 {
75 clname := p0.str;
76 # change any '.' to '/'
77 l := len clname;
78 for(x:=0;x<l; x++)
79 if ( clname[x] == '.' ) clname[x] = '/';
80
81 # attempt to open the local "prog" device (i.e. '#p')
82 # and read the call stack into an array of bytes
83 pid := jni->sys->pctl(0,nil);
84 progfile := "#p/"+ (string pid) +"/stack";
85 fd := jni->sys->open( progfile, Sys->OREAD );
86 if ( fd != nil )
87 {
88 # must spin a thread to read my own call-stack
89 result := chan of array of byte; # channel for thd results
90 spawn ReadCallStack( fd, result );
91 callstack := <- result; # wait for results
92
93 (cnt,frame) := jni->sys->tokenize( string callstack, "\n" );
94 if ( cnt > 0 )
95 {
96 # walk frames looking for module-name/class-name match
97 depth := 0;
98 for( ; frame!=nil; frame=tl frame )
99 {
100 # parse each line
101 (a,tok) := jni->sys->tokenize(hd frame, " ");
102 if ( a > 0 )
103 {
104 #module name is last token
105 for( b:=0; b<a-1; b-- )
106 tok = tl tok;
107 if ( (hd tok) == clname )
108 return( depth );
109 }
110 depth++;
111 }
112 }
113 }
114
115 }
116
117 return(-1); #if we are here we can't find the class
118 junk := (this);
119}#<<
120
121classLoaderDepth_I( this : ref SecurityManager_obj) : int
122{#>>
123 #
124 # return the number of frames back to the first class
125 # loader on the call stack. Return -1 if no classloaders.
126 #
127 return(-1); #for now we don't walk back
128 junk := this;
129}#<<
130
131currentLoadedClass0_rClass( this : ref SecurityManager_obj) : JClass
132{#>>
133 #
134 # return the first class on the call stack that was loaded
135 # with a class loader.
136 #
137 return( nil );
138 junk := this;
139}#<<
140
141
142
143
144ReadCallStack( fd : ref Sys->FD, result : chan of array of byte )
145{
146 # read until eof
147 buf := array[8000] of byte; #about 10 frames
148 (n,ptr) := (0,0);
149 do
150 {
151 cur := len buf-ptr;
152 n = jni->sys->read(fd, buf[ptr:], cur);
153 ptr += n;
154 if ( n == cur )
155 {
156 # need to read more
157 buf = ExtendBuf(buf);
158 }
159
160 } while ( n != 0 );
161
162 result <- = buf[:ptr];
163}
164
165ExtendBuf( buf : array of byte ) : array of byte
166{
167 curlen := len buf;
168 newbuf := array[curlen + 8000] of byte;
169
170 # copy old contents
171 for(x:=0; x<curlen; x++ )
172 newbuf[x] = buf[x];
173
174 return( newbuf );
175}
java/pkg2/java/lang/SecurityManager_L.m+19−0
@@ -0,0 +1,19 @@
1# javal v1.2 generated file: edit with care
2
3SecurityManager_L : module
4{
5 SecurityManager_obj : adt
6 {
7 cl_mod : ClassModule;
8 inCheck : int;
9 initialized : int;
10 };
11
12 init : fn( jni_p : JNI );
13 getClassContext_aClass : fn( this : ref SecurityManager_obj) : JArrayJClass;
14 currentClassLoader_rClassLoader : fn( this : ref SecurityManager_obj) : JObject;
15 classDepth_rString_I : fn( this : ref SecurityManager_obj, p0 : JString) : int;
16 classLoaderDepth_I : fn( this : ref SecurityManager_obj) : int;
17 currentLoadedClass0_rClass : fn( this : ref SecurityManager_obj) : JClass;
18
19};
java/pkg2/java/lang/Short.java+0−0

Empty file added.

java/pkg2/java/lang/StackOverflowError.java+0−0

Empty file added.

java/pkg2/java/lang/String.java+0−0

Empty file added.

java/pkg2/java/lang/StringBuffer.java+0−0

Empty file added.

java/pkg2/java/lang/StringBuffer_L.b+359−0
@@ -0,0 +1,359 @@
1implement StringBuffer_L;
2
3# javal v1.4 generated file: edit with care
4
5include "jni.m";
6 jni : JNI;
7 ClassModule,
8 JString,
9 JArray,
10 JArrayI,
11 JArrayC,
12 JArrayB,
13 JArrayS,
14 JArrayJ,
15 JArrayF,
16 JArrayD,
17 JArrayZ,
18 JArrayJObject,
19 JArrayJClass,
20 JArrayJString,
21 JClass,
22 JThread,
23 JObject : import jni;
24
25#>> extra pre includes here
26
27# this module implements the class java.lang.StringBuffer
28# the buffer is really a Limbo string type. In the original
29# Java implementation an array of char was used and the array
30# size was always >= to the buffer contents. In this version
31# The limbo string represents only the buffer contents and
32# contains no extra "padding". This is done because the
33# Inferno implementation of string is optimized for string
34# operations. Thus, the actual buffer contents is simply the
35# length of the Limbo string; the original Java version
36# maintained the buffer content size in the field 'count'.
37# For conveience of the Java code, and to negate a call into
38# the native Limbo, the 'count' field is maintained to always
39# be the length of the Limbo string: e.g. "count=len Ivalue".
40#
41# In the Java version the character array can be shared with
42# an instance of the Java String class, hence a flag for being
43# shared. This is not the case for the Inferno implementation.
44# whenever data is passed out it must be a copy of the 'Ivalue'
45# string.
46#
47# When this was implemented synchronizatio of native methods
48# was not complete, so this module assumes if a method should
49# be synchronized it is done before entering the native method
50# so each native method should be a private method and wrapped
51# in Java code by a synchronized method (or block).
52#
53# The java.lang.StringBuffer class is serialzable. For Inferno
54# since the internal structure has changed serialization must
55# be explitily handled by this class. This is done by adding
56# writeObject()/readObject() methods in the Java side to write
57# and read in the expected format, so outside VM's do not know
58# we have a differen implementation.
59#
60
61#<<
62
63include "StringBuffer_L.m";
64
65#>> extra post includes here
66Value : import jni;
67cast : Cast;
68
69#<<
70
71init( jni_p : JNI )
72{
73 # save java native inteface mod instance
74 jni = jni_p;
75 #>>extra initialization here
76 cast = jni->CastMod();
77 #<<
78}
79
80setLength0_I_V( this : ref StringBuffer_obj, p0 : int)
81{#>>
82 # p0 => length to set buf to; assume >=0
83
84 l := len this.Ivalue;
85
86 if ( p0 < l ) # truncate
87 this.Ivalue = this.Ivalue[:p0];
88 else { # pad with null characters
89 for( i := l; i < p0; i++ )
90 this.Ivalue[i] = '\0';
91 }
92 this.count = len this.Ivalue;
93}#<<
94
95charAt0_I_C( this : ref StringBuffer_obj, p0 : int) : int
96{#>>
97 # assume p0 is within the range 0..len this.Ivalue
98 return( this.Ivalue[p0] );
99}#<<
100
101getChars0_I_I_aC_I_V( this : ref StringBuffer_obj, p0 : int,p1 : int,p2 : JArrayC,p3 : int)
102{#>>
103 # assume the index ranges are already checked
104 copy_count := (p1-p0);
105 dst_end := p3 + copy_count;
106 if ( dst_end > len p2.ary )
107 jni->ThrowException( "java.lang.ArrayIndexOutOfBoundsException", "destination array not large enough" );
108
109 # copy one char at a time
110 for( (x,y) := (p3,p0); x < copy_count; junk:=(x++,y++) )
111 p2.ary[x] = this.Ivalue[y];
112
113}#<<
114
115setCharAt0_I_C_V( this : ref StringBuffer_obj, p0 : int,p1 : int)
116{#>>
117 # assume index has been checked
118 this.Ivalue[p0] = p1;
119}#<<
120
121reverse0_V( this : ref StringBuffer_obj)
122{#>>
123 # reverse the string buffer contents
124 str := this.Ivalue[:]; # slice a copy
125 for( (x,y):=(0,(len str)-1); x<len str; junk:=(x++,y--) )
126 this.Ivalue[x] = str[y];
127
128}#<<
129
130append_int_I_V( this : ref StringBuffer_obj, p0 : int)
131{#>>
132 # append the Ivalue to the string
133 this.Ivalue += string p0;
134 this.count = len this.Ivalue;
135}#<<
136
137append_long_J_V( this : ref StringBuffer_obj, p0 : big)
138{#>>
139 # append the Ivalue to the string
140 this.Ivalue += string p0;
141 this.count = len this.Ivalue;
142}#<<
143
144append_str_rString_V( this : ref StringBuffer_obj, p0 : JString)
145{#>>
146 # append the Ivalue to the string
147 val : string;
148 if ( p0 == nil )
149 val = "null"; #this is what Java wants
150 else
151 val = p0.str;
152
153 this.Ivalue += val;
154 this.count = len this.Ivalue;
155}#<<
156
157append_chars_aC_I_I_V( this : ref StringBuffer_obj, p0 : JArrayC,p1 : int,p2 : int)
158{#>>
159 # append the Ivalue to the string
160 if ( p0 == nil ) return;
161
162 val := p0.ary[p1:p1+p2];
163 l := len this.Ivalue;
164 for( x:=0; x < len val; x++ )
165 this.Ivalue[l++] = val[x];
166 this.count = len this.Ivalue;
167}#<<
168
169append_ch_C_V( this : ref StringBuffer_obj, p0 : int)
170{#>>
171 # append the Ivalue to the string
172 this.Ivalue[this.count] = p0;
173 this.count++;
174}#<<
175
176append_float_F_V( this : ref StringBuffer_obj, p0 : real)
177{#>>
178 # append the Ivalue to the string
179 s := string p0;
180 if(p0 == 0.0)
181 s += ".0";
182 this.Ivalue += s;
183 this.count = len this.Ivalue;
184}#<<
185
186append_double_D_V( this : ref StringBuffer_obj, p0 : real)
187{#>>
188 # append the Ivalue to the string
189 s := string p0;
190 if(p0 == 0.0)
191 s += ".0";
192 this.Ivalue += s;
193 this.count = len this.Ivalue;
194}#<<
195
196insert_int_I_I_V( this : ref StringBuffer_obj, p0 : int,p1 : int)
197{#>>
198 # insert 'p1' into the string the new string is
199 # left + p1 + right; where left is Ivalue[:p0]
200 # and right is Ivalue[p0:]. newright is
201 # p1+right
202 # assume args have been checked
203 #
204 newright := (string p1) + this.Ivalue[p0:];
205 this.Ivalue = this.Ivalue[:p0] + newright;
206 this.count = len this.Ivalue;
207}#<<
208
209insert_long_I_J_V( this : ref StringBuffer_obj, p0 : int,p1 : big)
210{#>>
211 # insert 'p1' into the string the new string is
212 # left + p1 + right; where left is Ivalue[0:p0]
213 # and right is Ivalue[p0:count]. newright is
214 # p1+right
215 #
216 newright := (string p1) + this.Ivalue[p0:];
217 this.Ivalue = this.Ivalue[:p0] + newright;
218 this.count = len this.Ivalue;
219}#<<
220
221insert_str_I_rString_V( this : ref StringBuffer_obj, p0 : int,p1 : JString)
222{#>>
223 # insert 'p1' into the string the new string is
224 # left + p1 + right; where left is Ivalue[0:p0]
225 # and right is Ivalue[p0:count]. newright is
226 # p1+right
227 #
228 val : string;
229 if ( p1 == nil )
230 val = "null";
231 else
232 val = p1.str;
233 newright := val + this.Ivalue[p0:];
234 left := this.Ivalue[:p0];
235 this.Ivalue = left + newright;
236 this.count = len this.Ivalue;
237}#<<
238
239insert_chars_I_aC_V( this : ref StringBuffer_obj, p0 : int,p1 : JArrayC)
240{#>>
241 # insert 'p1' into the string the new string is
242 # left + p1 + right; where left is Ivalue[:p0]
243 # and right is Ivalue[p0:]. newright is
244 # p1+right
245 #
246 if ( p1 == nil ) return;
247
248 # get copy of old right part and lop it off
249 oldright := this.Ivalue[p0:];
250 this.Ivalue = this.Ivalue[:p0];
251
252 # insert char array first
253 for( x:=0; x<len p1.ary; x++ )
254 this.Ivalue[p0 + x] = p1.ary[x];
255
256 # now add the old right back
257 this.Ivalue += oldright;
258 this.count = len this.Ivalue;
259}#<<
260
261insert_ch_I_C_V( this : ref StringBuffer_obj, p0 : int,p1 : int)
262{#>>
263 # insert 'p1' into the string the new string is
264 # left + p1 + right; where left is Ivalue[:p0]
265 # and right is Ivalue[p0:]. newright is
266 # p1+right
267 #
268 newright: string;
269 newright[0] = p1;
270 newright += this.Ivalue[p0:];
271 this.Ivalue = this.Ivalue[:p0] + newright;
272 this.count = len this.Ivalue;
273}#<<
274
275insert_float_I_F_V( this : ref StringBuffer_obj, p0 : int,p1 : real)
276{#>>
277 # insert 'p1' into the string the new string is
278 # left + p1 + right; where left is Ivalue[0:p0]
279 # and right is Ivalue[p0:count]. newright is
280 # p1+right
281 #
282 s := string p1;
283 if(p1 == 0.0)
284 s += ".0";
285 newright := s + this.Ivalue[p0:];
286 this.Ivalue = this.Ivalue[:p0] + newright;
287 this.count = len this.Ivalue;
288}#<<
289
290insert_double_I_D_V( this : ref StringBuffer_obj, p0 : int,p1 : real)
291{#>>
292 # insert 'p1' into the string the new string is
293 # left + p1 + right; where left is Ivalue[0:p0]
294 # and right is Ivalue[p0:count]. newright is
295 # p1+right
296 #
297 s := string p1;
298 if(p1 == 0.0)
299 s += ".0";
300 newright := s + this.Ivalue[p0:];
301 this.Ivalue = this.Ivalue[:p0] + newright;
302 this.count = len this.Ivalue;
303}#<<
304
305get_string_rString( this : ref StringBuffer_obj) : JString
306{#>>
307 return( jni->NewString( this.Ivalue[:] ) ); #return a copy
308}#<<
309
310get_chars_aC( this : ref StringBuffer_obj) : JArrayC
311{#>>
312 # return a char array
313 l := len this.Ivalue;
314 chars := array[l] of int;
315 for( x:=0; x<l; x++ )
316 chars[x] = this.Ivalue[x];
317
318 return( jni->MkAChar( chars ) );
319}#<<
320
321#
322# the next two functions are for serialization
323#
324
325#
326# write this.Ivalue (a Dis string) to an ObjectOutputStream as a char[]
327#
328
329writeObject0_rObjectOutputStream_V(this : ref StringBuffer_obj, p0 : JObject)
330{#>>
331 jaryc := jni->StringToAChar(this.Ivalue);
332 args := array[] of {
333 ref Value.TObject(cast->FromJArray(cast->IntToJArray(jaryc)))
334 };
335 jni->CallMethod(p0, "writeObject", "(Ljava/lang/Object;)V", args);
336}#<<
337
338#
339# read a char[] from an ObjectInputStream and convert it to a Dis string
340#
341
342readObject0_rObjectInputStream_V(this : ref StringBuffer_obj, p0 : JObject)
343{#>>
344 jaryc : JArrayC;
345
346 (val, ok) := jni->CallMethod(p0, "readObject", "()Ljava/lang/Object;", nil);
347 if(ok == JNI->OK) {
348 pick v := val {
349 TObject =>
350 jaryc = cast->ToJArrayC(v.jobj);
351 }
352 }
353 if(jaryc == nil || len jaryc.ary < this.count)
354 jni->ThrowException("java.io.IOException", "bad StringBuffer object serialized");
355
356 # JavaSoft JVM serializes trailing null characters; we can ignore
357 for(i := 0; i < this.count; i++)
358 this.Ivalue[i] = jaryc.ary[i];
359}#<<
java/pkg2/java/lang/StringBuffer_L.m+42−0
@@ -0,0 +1,42 @@
1# javal v1.4 generated file: edit with care
2
3##EDITED
4
5StringBuffer_L : module
6{
7 StringBuffer_obj : adt
8 {
9 cl_mod : ClassModule;
10 Ivalue : string;
11 buf_capacity : int;
12 value : array of int;
13 count : int;
14 shared : byte;
15 };
16
17 init : fn( jni_p : JNI );
18 setLength0_I_V : fn( this : ref StringBuffer_obj, p0 : int);
19 charAt0_I_C : fn( this : ref StringBuffer_obj, p0 : int) : int;
20 getChars0_I_I_aC_I_V : fn( this : ref StringBuffer_obj, p0 : int,p1 : int,p2 : JArrayC,p3 : int);
21 setCharAt0_I_C_V : fn( this : ref StringBuffer_obj, p0 : int,p1 : int);
22 reverse0_V : fn( this : ref StringBuffer_obj);
23 append_int_I_V : fn( this : ref StringBuffer_obj, p0 : int);
24 append_long_J_V : fn( this : ref StringBuffer_obj, p0 : big);
25 append_str_rString_V : fn( this : ref StringBuffer_obj, p0 : JString);
26 append_chars_aC_I_I_V : fn( this : ref StringBuffer_obj, p0 : JArrayC,p1 : int,p2 : int);
27 append_ch_C_V : fn( this : ref StringBuffer_obj, p0 : int);
28 append_float_F_V : fn( this : ref StringBuffer_obj, p0 : real);
29 append_double_D_V : fn( this : ref StringBuffer_obj, p0 : real);
30 insert_int_I_I_V : fn( this : ref StringBuffer_obj, p0 : int,p1 : int);
31 insert_long_I_J_V : fn( this : ref StringBuffer_obj, p0 : int,p1 : big);
32 insert_str_I_rString_V : fn( this : ref StringBuffer_obj, p0 : int,p1 : JString);
33 insert_chars_I_aC_V : fn( this : ref StringBuffer_obj, p0 : int,p1 : JArrayC);
34 insert_ch_I_C_V : fn( this : ref StringBuffer_obj, p0 : int,p1 : int);
35 insert_float_I_F_V : fn( this : ref StringBuffer_obj, p0 : int,p1 : real);
36 insert_double_I_D_V : fn( this : ref StringBuffer_obj, p0 : int,p1 : real);
37 get_string_rString : fn( this : ref StringBuffer_obj) : JString;
38 get_chars_aC : fn( this : ref StringBuffer_obj) : JArrayC;
39
40 writeObject0_rObjectOutputStream_V : fn(this : ref StringBuffer_obj, p0 : JObject);
41 readObject0_rObjectInputStream_V : fn(this : ref StringBuffer_obj, p0 : JObject);
42};
java/pkg2/java/lang/StringIndexOutOfBoundsE..a+0−0

Empty file added.

java/pkg2/java/lang/String_L.b+517−0
@@ -0,0 +1,517 @@
1implement String_L;
2
3# javal v1.6 generated file: edit with care
4
5include "jni.m";
6 jni : JNI;
7 ClassModule,
8 JString,
9 JArray,
10 JArrayI,
11 JArrayC,
12 JArrayB,
13 JArrayS,
14 JArrayJ,
15 JArrayF,
16 JArrayD,
17 JArrayZ,
18 JArrayJObject,
19 JArrayJClass,
20 JArrayJString,
21 JClass,
22 JThread,
23 JObject : import jni;
24
25#>> extra pre includes here
26
27#<<
28
29include "String_L.m";
30
31#>> extra post includes here
32include "hash.m";
33
34str : String;
35hash : Hash;
36
37#
38# the following are for the intern() method
39# a pool of all Java String classes is maintained
40# hashed on the actual string contents. For any
41# given actual string the same Java String object
42# should be returned. We maingain a hash table
43# of String objects, hashed on the string value.
44#
45PSZ : con 31;
46pool := array[PSZ] of list of JString;
47
48PoolAdd( jstr : JString )
49{
50 idx := hash->fun1(jstr.str,PSZ);
51 pool[idx] = jstr :: pool[idx];
52}
53
54PoolGet( val : JString ) : JString
55{
56 # search for an existing object with same value
57 for( l := pool[hash->fun1(val.str,PSZ)]; l != nil; l = tl l )
58 {
59 jstr := hd l;
60 if (jstr.str == val.str)
61 return( jstr );
62 }
63
64 # could not find so add this class
65 PoolAdd( val );
66 return( val );
67}
68
69#<<
70
71init( jni_p : JNI )
72{
73 # save java native inteface mod instance
74 jni = jni_p;
75 #>>extra initialization here
76 str = jni->str;
77 hash = load Hash Hash->PATH;
78 if ( hash == nil )
79 jni->InitError( jni->sys->sprint( "java.lang.String: could not load %s: %r", Hash->PATH ) );
80 #<<
81}
82
83length_I( this : JString) : int
84{#>>
85 return( len this.str );
86}#<<
87
88charAt_I_C( this : JString, p0 : int) : int
89{#>>
90 if ((this.str == nil) || (p0 > (len this.str -1)) || (p0 < 0))
91 jni->ThrowException( "java.lang.StringIndexOutOfBoundsException", string p0 );
92 return( this.str[p0] );
93}#<<
94
95getChars_I_I_aC_I_V( this : JString, p0 : int,p1 : int,p2 : JArrayC,p3 : int)
96{#>>
97 # fill the char array with each char from the string
98
99 # do some checking first
100 if ( p0 < 0 )
101 jni->ThrowException( "java.lang.StringIndexOutOfBoundsException", string p0 );
102 if ( p1 > len this.str )
103 jni->ThrowException( "java.lang.StringIndexOutOfBoundsException", string p1 );
104 if ( p0 > p1 )
105 jni->ThrowException( "java.lang.StringIndexOutOfBoundsException", string (p1-p0) );
106
107 # now check array and copy chars into
108 copy_count := p1-p0; # number of chars to copy
109
110 #STD?? I will just throw an exception here if I know
111 # I will overwrite the array bounds. To really be
112 # legit I may need to copy upto the end and then throw
113 if ( (copy_count + p3) > (len p2.ary) )
114 jni->ThrowException( "java.lang.ArrayIndexOutOfBoundsException", string (len p2.ary) );
115
116 # now copy chars from this string into
117 # the char array, starting at the indicated
118 # position (p3) of the char array.
119 for( x:=0; x<copy_count; x++ )
120 p2.ary[p3+x] = this.str[p0+x];
121
122}#<<
123
124equality_rString_Z_Z( this : JString, p0 : JString,p1 : int) : int
125{#>>
126 if ( p0 == nil )
127 return( JNI->FALSE );
128
129 if ( this.str == p0.str )
130 return( JNI->TRUE );
131
132 # check if we should ignore case
133 if ( p1 )
134 return( str->toupper(this.str) == str->toupper(p0.str) );
135
136 # strings not equal
137 return( JNI->FALSE );
138
139}#<<
140
141compareTo_rString_I( this : JString, p0 : JString) : int
142{#>>
143 # compare 'p0' to this.
144 # return: 0 => equal
145 # <0 => this < p0
146 # >0 => this > p0
147
148 this_str := this.str;
149 other := p0.str;
150
151 # simple equlity check
152 if ( this_str == other )
153 return( 0 );
154
155 # otherwise, determine if "this" is
156 # lexicographically smaller than "other"
157
158 this_len := len this_str;
159 other_len := len other;
160 min := 0;
161 if ( this_len < other_len )
162 min = this_len;
163 else
164 min = other_len;
165
166 # find char where strings differ
167 x:=0;
168 while( (x<min) && (this_str[x]==other[x]) ) x++;
169
170 # is one string a proper prefix of the other?
171 if(x == min)
172 return this_len - other_len;
173
174 # if some chars were common then "this" is
175 # smaller if the character where they differ
176 # has a smaller value than "other"
177 return( this_str[x] - other[x] );
178}#<<
179
180regionMatches_Z_I_rString_I_I_Z( this : JString, p0 : int,p1 : int,p2 : JString,p3 : int,p4 : int) : int
181{#>>
182 # p0 => ignore case==1
183 # p1 => this start index
184 # p2 => other string
185 # p3 => other start index
186 # p4 => length to compare
187
188 # check params
189 if ( (p1<0) || (p1 > (len this.str - p4)) ||
190 (p3<0) || (p3 > (len p2.str - p4)) )
191 return( jni->FALSE );
192
193 this_str, other : string;
194
195 this_last := (p1+p4);
196 other_last := (p3+p4);
197
198 if ( int p0 == 1 )
199 {
200 # ignore case
201 this_str = str->toupper(this.str[p1:this_last]);
202 other = str->toupper(p2.str[p3:other_last]);
203 }
204 else
205 {
206 # case sensitive
207 this_str = this.str[p1:this_last];
208 other = p2.str[p3:other_last];
209 }
210
211 # now compare the two substrings
212 return( this_str == other );
213}#<<
214
215hashCode_I( this : JString) : int
216{#>>
217 # hashcode of string as defined in JLS
218 strhash := 0;
219 this_str := this.str;
220 this_len := len this_str;
221
222 if ( this_len <= 15 )
223 {
224 for(x:=0; x<this_len; x++)
225 strhash = (strhash*37) + this_str[x];
226 }
227 else
228 {
229 k := int (this_len/8);
230 for(x:=0; x < this_len; x+=k)
231 strhash = (strhash*39) + this_str[x];
232 }
233
234 return( strhash );
235}#<<
236
237substring_I_I_rString( this : JString, p0 : int,p1 : int) : JString
238{#>>
239 # return string composed of chars p0..p1-1 both
240 # java and limbo allow the p1 to be (len this.str)
241 this_len := len this.str;
242 if ( (p0 < 0) || (p1 > this_len) || (p0 > p1) )
243 jni->ThrowException( "java.lang.StringIndexOutOfBoundsException",
244 jni->sys->sprint( "len=%d begin=%d end=%d", this_len, p0, p1 ) );
245
246 return( jni->NewString( this.str[p0:p1] ) );
247}#<<
248
249concat_rString_rString( this : JString, p0 : JString) : JString
250{#>>
251 if ( p0 == nil )
252 jni->ThrowException( "java.lang.NullPointerException", "concat arg is null" );
253
254 # as defined in JLS: if p0 is 0 len return ref to this
255 if ( (len p0.str) == 0 )
256 return( this );
257
258 # return a new string composed of this+p0
259 return( jni->NewString( this.str + p0.str ) );
260}#<<
261
262replace_C_C_rString( this : JString, p0 : int,p1 : int) : JString
263{#>>
264 # p0 => old char, p1 => new char
265 # if p0 does not exist in this then
266 # return reference to this
267 # otherwise return a new string which
268 # is composed of the 'this' with all
269 # old char's (p0) replaced with new chars (p1)
270
271 newstr := this.str[:];
272 found := 0;
273 for(x:=0; x<(len newstr); x++)
274 {
275 if ( newstr[x] == p0 )
276 {
277 found = 1;
278 newstr[x] = p1;
279 }
280 }
281
282 if ( ! found )
283 return( this );
284
285 return( jni->NewString( newstr ) );
286}#<<
287
288trim_rString( this : JString) : JString
289{#>>
290 # as defined in JLS
291 if ( this.str == "" )
292 return( this );
293
294 this_str := this.str;
295 if ( (this_str[0] > '\u0020') && (this_str[len this_str-1] > '\u0020') )
296 return( this );
297
298 # look for first char > \u0020
299 for( x:=0; x<(len this_str); x++ )
300 if ( this_str[x] > '\u0020' ) break;
301
302 # if no chars < \u0020 found return a new "empty string"
303 if ( x == len this_str )
304 return( jni->NewString( "" ) );
305
306 first := x;
307
308 # look for last char > \u0020
309 for( x=(len this_str -1); x >= 0; x-- )
310 if ( this_str[x] > '\u0020' ) break;
311
312 last := x; # this has to be at least ==first
313
314 return( jni->NewString( this_str[first:last+1] ) );
315
316}#<<
317
318intern_rString( this : JString) : JString
319{#>>
320 # as defined in JLS
321 # need to maintain a private pool of String
322 # objects and return the same object for a
323 # given string
324 return( PoolGet( this ) );
325}#<<
326
327utfLength_I( this : JString) : int
328{#>>
329 b : array of byte;
330 b = array of byte this.str;
331 return( len b );
332}#<<
333
334fill_aC_I_I_V( this : JString, p0 : JArrayC,p1 : int,p2 : int)
335{#>>
336 #
337 # create a newstring from the array of int
338 #
339
340 # check array length
341 if ( (p1+p2) > len p0.ary )
342 jni->ThrowException( "java.lang.ArrayIndexOutOfBoundsException", string (len p0.ary) );
343
344 this.str = nil; # get rid of what is there
345
346 # now append each char to the string value
347 # Lecuona correction: for( x:=0; x<(p2-p1); x++ )
348 for( x:=0; x<p2; x++ )
349 this.str[x] = p0.ary[x+p1];
350}#<<
351
352isPrefix_rString_I_Z( this : JString, p0 : JString,p1 : int) : int
353{#>>
354 # p0 => string to compare
355 # p1 => start index
356
357 # do some checking
358 if ( p0 == nil )
359 jni->ThrowException( "java.lang.NullPointerException", "String.isPrefix()" );
360 other_len := len p0.str;
361 endix := other_len + p1; # can overflow
362 if ( p1 < 0 || endix > len this.str || endix < 0 )
363 return( jni->FALSE );
364 if ( other_len == 0 )
365 return( jni->TRUE ); # JLS defined
366 return( p0.str == this.str[p1:p1+other_len] );
367}#<<
368
369isSuffix_rString_Z( this : JString, p0 : JString) : int
370{#>>
371 start := (len this.str) - (len p0.str);
372 if ( start < 0 )
373 return( jni->FALSE );
374
375 return( p0.str == this.str[start:] );
376}#<<
377
378uppercase_rString( this : JString) : JString
379{#>>
380 return( jni->NewString( str->toupper(this.str) ) );
381}#<<
382
383lowercase_rString( this : JString) : JString
384{#>>
385 return( jni->NewString( str->tolower(this.str) ) );
386}#<<
387
388index_rString_I_I( this : JString, p0 : JString,p1 : int) : int
389{#>>
390 # p0 => string to match
391 # p1 => index to start search from
392 # p2 => searche left-right=1 right-left=0
393 this_str := this.str;
394 this_len := len this_str;
395 other := p0.str;
396 other_len := len other;
397
398 # if other > this then it can't be a substring
399 if ( other_len > this_len )
400 return( -1 );
401
402 # if start index <0 make it 0, if > len return -1
403 from := 0;
404 if ( p1 > 0 )
405 {
406 from = p1;
407 # this also handles p1 > this_len
408 # which will return -1 below, we
409 }
410
411 # null string always matches
412 if ( other_len == 0 )
413 return from;
414
415 # determine char of this to stop searching on
416 stop_char := this_len - other_len;
417
418 # look for first-char match then
419 # match the substring.
420 for( i:=from; i <= stop_char; i++ )
421 if ( (this_str[i] == other[0]) &&
422 (this_str[i:i+other_len] == other) )
423 return( i );
424
425 # match failed
426 return( -1 );
427}#<<
428
429index_I_I_I( this : JString, p0 : int,p1 : int) : int
430{#>>
431 # p0 => char to match
432 # p1 => start index
433
434 this_str := this.str;
435 this_len := len this_str;
436
437 # if start index <0 make it 0, if > len return -1
438 from := 0;
439 if ( p1 > 0 )
440 from = p1;
441
442 # start from left,
443 # look for first match
444 for( i:=from; i < this_len; i++ )
445 if ( this_str[i] == p0 )
446 return( i );
447
448 # match failed
449 return( -1 );
450}#<<
451
452rindex_rString_I_Z_I( this : JString, p0 : JString,p1 : int,p2 : int) : int
453{#>>
454 # p0 => string to match
455 # p1 => index to start search from
456 # p2 => 1 == search from end (ignore p1)
457 this_str := this.str;
458 this_len := len this_str;
459 other := p0.str;
460 other_len := len other;
461
462 # if other > this then it can't be a substring
463 if ( other_len > this_len )
464 return( -1 );
465
466 # if start index > this_len-other_len make it this_len-other_len
467 # if < 0 return -1
468 from := this_len - other_len;
469 if ( (p2 != 1) && (p1 < from) )
470 {
471 from = p1;
472 # this also handles the defined case
473 # of p1 < 0 is the same as p1==-1 and
474 # will return -1 below
475 }
476
477 # start from end
478 if ( other_len == 0 )
479 return( from ); # empty string always matches
480
481 # look for first char match starting from right
482 # then match the substring
483 for( i:=from; i >= 0; i-- )
484 if ( (this_str[i] == other[0]) &&
485 (this_str[i:i+other_len] == other) )
486 return(i);
487
488 return(-1); #no match
489}#<<
490
491rindex_I_I_Z_I( this : JString, p0 : int,p1 : int,p2 : int) : int
492{#>>
493 # p0 => char to match
494 # p1 => start index
495 # p2 => 1 == scan from (len this.str -1)
496
497 this_str := this.str;
498
499 # if start index < 0 return -1, if > len this.str make it the length
500 from := len this_str - 1;
501 if ( (p2 != 1) && (p1 < from) )
502 {
503 from = p1;
504 }
505
506 # start from right
507 # look for first match
508 for( i:=from; i >= 0; i-- )
509 if ( this_str[i] == p0 )
510 return(i);
511
512 # match failed
513 return( -1 );
514}#<<
515
516
517
java/pkg2/java/lang/String_L.m+30−0
@@ -0,0 +1,30 @@
1# javal v1.6 generated file: edit with care
2
3String_L : module
4{
5
6 init : fn( jni_p : JNI );
7 length_I : fn( this : JString) : int;
8 charAt_I_C : fn( this : JString, p0 : int) : int;
9 getChars_I_I_aC_I_V : fn( this : JString, p0 : int,p1 : int,p2 : JArrayC,p3 : int);
10 equality_rString_Z_Z : fn( this : JString, p0 : JString,p1 : int) : int;
11 compareTo_rString_I : fn( this : JString, p0 : JString) : int;
12 regionMatches_Z_I_rString_I_I_Z : fn( this : JString, p0 : int,p1 : int,p2 : JString,p3 : int,p4 : int) : int;
13 hashCode_I : fn( this : JString) : int;
14 substring_I_I_rString : fn( this : JString, p0 : int,p1 : int) : JString;
15 concat_rString_rString : fn( this : JString, p0 : JString) : JString;
16 replace_C_C_rString : fn( this : JString, p0 : int,p1 : int) : JString;
17 trim_rString : fn( this : JString) : JString;
18 intern_rString : fn( this : JString) : JString;
19 utfLength_I : fn( this : JString) : int;
20 fill_aC_I_I_V : fn( this : JString, p0 : JArrayC,p1 : int,p2 : int);
21 isPrefix_rString_I_Z : fn( this : JString, p0 : JString,p1 : int) : int;
22 isSuffix_rString_Z : fn( this : JString, p0 : JString) : int;
23 uppercase_rString : fn( this : JString) : JString;
24 lowercase_rString : fn( this : JString) : JString;
25 index_rString_I_I : fn( this : JString, p0 : JString,p1 : int) : int;
26 index_I_I_I : fn( this : JString, p0 : int,p1 : int) : int;
27 rindex_rString_I_Z_I : fn( this : JString, p0 : JString,p1 : int,p2 : int) : int;
28 rindex_I_I_Z_I : fn( this : JString, p0 : int,p1 : int,p2 : int) : int;
29
30};
java/pkg2/java/lang/System.java+0−0

Empty file added.

java/pkg2/java/lang/System_L.b+133−0
@@ -0,0 +1,133 @@
1implement System_L;
2
3# javal v1.2 generated file: edit with care
4
5include "jni.m";
6 jni : JNI;
7 ClassModule,
8 JString,
9 JArray,
10 JArrayI,
11 JArrayC,
12 JArrayB,
13 JArrayS,
14 JArrayJ,
15 JArrayF,
16 JArrayD,
17 JArrayZ,
18 JArrayJObject,
19 JArrayJClass,
20 JArrayJString,
21 JClass,
22 JObject : import jni;
23
24#>> extra pre includes here
25
26#<<
27
28include "System_L.m";
29
30#>> extra post includes here
31include "workdir.m";
32
33cast : Cast;
34system_class : JNI->ClassData; # java.lang.System class data
35
36#<<
37
38init( jni_p : JNI )
39{
40 # save java native inteface mod instance
41 jni = jni_p;
42 #>>extra initialization here
43 system_class = jni->FindClass( "java/lang/System" );
44 if ( system_class == nil )
45 jni->InitError( "System_L.init(): failed to find System class" );
46
47 # we Cast in this module
48 cast = jni->CastMod();
49 #<<
50}
51
52setIn0_rInputStream_V( p0 : JObject)
53{#>>
54 Value : import JNI;
55 val := ref Value.TObject(p0);
56 jni->SetStaticField( system_class, "in", val );
57}#<<
58
59setOut0_rPrintStream_V( p0 : JObject)
60{#>>
61 Value : import JNI;
62 val := ref Value.TObject(p0);
63 jni->SetStaticField( system_class, "out", val );
64}#<<
65
66setErr0_rPrintStream_V( p0 : JObject)
67{#>>
68 Value : import JNI;
69 val := ref Value.TObject(p0);
70 jni->SetStaticField( system_class, "err", val );
71}#<<
72
73currentTimeMillis_J( ) : big
74{#>>
75 fd := jni->sys->open("#c/time", jni->sys->OREAD);
76 if(fd == nil)
77 return big 0;
78 buf := array[128] of byte;
79 n := jni->sys->read(fd, buf, len buf);
80 if(n < 0)
81 return big 0;
82
83 return ( (big string buf[:n]) / big 1000 );
84}#<<
85
86arraycopy_rObject_I_rObject_I_I_V( p0 : JObject,p1 : int,p2 : JObject,p3 : int,p4 : int)
87{#>>
88 jni->jldr->arraycopy( cast->ToJArray(p0), p1, cast->ToJArray(p2), p3, p4 );
89}#<<
90
91identityHashCode_rObject_I( p0 : JObject) : int
92{#>>
93 return( jni->IdentityHash(p0) );
94}#<<
95
96GetUserName_rString( ) : JString
97{#>>
98 # return the current inferno user
99 # name as a Java String
100 #
101 user_name : string;
102
103 fd := jni->sys->open("#c/user", jni->sys->OREAD);
104 if(fd == nil)
105 user_name = "unknown";
106 else {
107 buf := array[128] of byte;
108 n := jni->sys->read(fd, buf, len buf);
109 if(n < 0)
110 user_name = "unknown";
111 else
112 user_name = string buf[:n];
113 }
114
115 # make java string from user name
116 return( jni->NewString( user_name ) );
117}#<<
118
119GetCWD_rString( ) : JString
120{#>>
121 # return the current working directory
122 # as a Java String
123 #
124 # this fct is really only called once so
125 # just load Workdir right here
126 wdir := load Workdir Workdir->PATH;
127 if ( wdir == nil )
128 jni->InitError( jni->sys->sprint( "java.lang.System: could not load %s: %r", Workdir->PATH ) );
129
130 return( jni->NewString( wdir->init() ) );
131}#<<
132
133
java/pkg2/java/lang/System_L.m+20−0
@@ -0,0 +1,20 @@
1# javal v1.2 generated file: edit with care
2
3System_L : module
4{
5 System_obj : adt
6 {
7 cl_mod : ClassModule;
8 };
9
10 init : fn( jni_p : JNI );
11 setIn0_rInputStream_V : fn( p0 : JObject);
12 setOut0_rPrintStream_V : fn( p0 : JObject);
13 setErr0_rPrintStream_V : fn( p0 : JObject);
14 currentTimeMillis_J : fn( ) : big;
15 arraycopy_rObject_I_rObject_I_I_V : fn( p0 : JObject,p1 : int,p2 : JObject,p3 : int,p4 : int);
16 identityHashCode_rObject_I : fn( p0 : JObject) : int;
17 GetUserName_rString : fn( ) : JString;
18 GetCWD_rString : fn( ) : JString;
19
20};
java/pkg2/java/lang/Thread.java+0−0

Empty file added.

java/pkg2/java/lang/ThreadDeath.java+0−0

Empty file added.

java/pkg2/java/lang/ThreadGroup.java+0−0

Empty file added.

java/pkg2/java/lang/Thread_L.b+455−0
@@ -0,0 +1,455 @@
1implement Thread_L;
2
3# javal v1.3 generated file: edit with care
4
5include "jni.m";
6 jni : JNI;
7 ClassModule,
8 JString,
9 JArray,
10 JArrayI,
11 JArrayC,
12 JArrayB,
13 JArrayS,
14 JArrayJ,
15 JArrayF,
16 JArrayD,
17 JArrayZ,
18 JArrayJObject,
19 JArrayJClass,
20 JArrayJString,
21 JClass,
22 JThread,
23 JObject : import jni;
24
25#>> extra pre includes here
26
27#<<
28
29include "Thread_L.m";
30
31#>> extra post includes here
32
33sys : Sys;
34jldr : JavaClassLoader;
35cast : Cast;
36
37# following used for calling Thread.run()
38threadclass : JNI->ClassData; #class data for java.lang.Thread
39thread_run_idx : int; #method index for Thread.run()
40thread_exit_idx : int; #method index for Thread.exit()
41
42# some imports
43ThreadData : import jldr;
44
45#<<
46
47init( jni_p : JNI )
48{
49 # save java native inteface mod instance
50 jni = jni_p;
51 #>>extra initialization here
52
53 sys = jni->sys;
54 jldr = jni->jldr;
55 cast = jni->CastMod();
56
57 threadclass = jni->FindClass( "java.lang.Thread" );
58 if ( threadclass == nil )
59 jni->InitError( "Thread_L.init(): could not get thread class" );
60
61 Class : import jldr;
62 thread_run_idx = threadclass.findvmethod( "run", "()V" );
63 if ( thread_run_idx == -1 )
64 jni->InitError( "Thread_L.init(): could not locate Thread.run()" );
65
66 #thread_exit_idx = threadclass.findvmethod( "exit", "()V" );
67 #if ( exit_idx == -1 )
68 # jni->InitError( "Thread_L.init(): could not locate Thread.exit()" );
69 #<<
70}
71
72currentThread_rThread( ) : JThread
73{#>>
74 e := ref Sys->Exception;
75 if ( sys->rescue("*",e) == Sys->HANDLER )
76 {
77 # get the java thread object assocciated
78 # with this thread. it is stored in the
79 # class loader's thread structure.
80 thd_obj := jldr->getthreaddata().this;
81 if ( thd_obj != nil )
82 return( cast->JObjToJThd(thd_obj) );
83 sys->unrescue();
84 }
85 else
86 sys->rescued(Sys->ONCE, nil);
87
88
89 # either we could not find the thread data
90 # or no "Thread" object was stored in it
91 # either way we are in bad shape
92 jni->FatalError( "could not get thread object" );
93
94 return(nil);
95}#<<
96
97yield_V( )
98{#>>
99 jni->sys->sleep(0);
100}#<<
101
102sleep_J_V( p0 : big)
103{#>>
104 millis := int p0;
105
106 if ( millis < 1 )
107 {
108 if ( millis == 0 )
109 {
110 # just yield thread
111 jni->sys->sleep(0);
112 return;
113 }
114
115 # bad sleep value
116 jni->ThrowException( "java.lang.IllegalArgumentException", "timeout value is negative" );
117 }
118 jldr->sleep( millis );
119}#<<
120
121start_V( this : JThread)
122{#>>
123 thdobj := cast->JThdToJObj(this);
124
125 # grab the lock on the thread object to ensure
126 # no state is changed while we are starting the
127 # thread.
128# jni->MonitorEnter( thdobj );
129
130 if ( (this.stillborn == byte 0) && (this.PrivateInfo == nil) )
131 {
132 # spawn a limbo fct as the java
133 # thread's starting point.
134 ok := chan of int;
135 spawn javathreadinit( this, ok );
136
137 # wait for thread to init then we can
138 # continue. Note we hold a lock and
139 # the thread will change some state
140 # and notify us before the java run()
141 # method is invoked. The purpose is to
142 # allow for state information to be updated
143 # while we have the lock.
144 status := <- ok;
145
146 #status == 0 is an err
147 # == 1 is ok
148
149 if ( status == 0 )
150 {
151 this.stillborn = byte 1;
152 this.PrivateInfo = nil;
153 }
154
155 }
156# jni->MonitorExit( thdobj );
157}#<<
158
159isInterrupted_Z_Z( this : JThread, p0 : int) : int
160{#>>
161 old_flag := int this.was_interrupted;
162
163 if ( old_flag )
164 this.was_interrupted = byte p0;
165 return( old_flag );
166}#<<
167
168isAlive_Z( this : JThread) : int
169{#>>
170 thd := this.PrivateInfo;
171 if ( (this.stillborn == byte 0) && (thd != nil) )
172 {
173 # JLS does not require that we actually determine
174 # the "os" thread is alive, just that the object
175 # state indicates it is
176 return( JNI->TRUE );
177 }
178
179 # looks like thread is not alive
180 return( jni->FALSE );
181}#<<
182
183countStackFrames_I( this : JThread) : int
184{#>>
185 junk := this;
186 # need to do some /prog work
187 return( 0 );
188}#<<
189
190setPriority0_I_V( this : JThread, p0 : int)
191{#>>
192 # just save the priority, a dis thread
193 # has no priority
194 this.priority = p0;
195}#<<
196
197stop0_rObject_V( this : JThread, p0 : JObject)
198{#>>
199 # the calling thread is attempting to throw an
200 # exception at "this" thread (i.e. the one represented
201 # by this thread object. make sure that thread at least
202 # appears to be running and throw the exceptio at it
203
204 thd := this.PrivateInfo;
205 stillborn := this.stillborn;
206
207 # prevent a start or re-start
208 this.stillborn = byte 1;
209
210 if ( (stillborn == byte 0) && (thd != nil) )
211 {
212 # throw the exception (p0) at the thread
213 jldr->stop( thd, p0 );
214 }
215
216}#<<
217
218suspend0_V( this : JThread)
219{#>>
220 # the calling thread wants to suspend
221 # the "this" thread.
222 thd := this.PrivateInfo;
223 if ( (this.stillborn == byte 0) && (thd != nil) )
224 jldr->suspend( thd );
225
226}#<<
227
228resume0_V( this : JThread)
229{#>>
230 # the calling thread wants to resume
231 # the "this" thread.
232 thd := this.PrivateInfo;
233 if ( (this.stillborn == byte 0) && (thd != nil) )
234 jldr->resume( thd );
235}#<<
236
237interrupt0_V( this : JThread)
238{#>>
239 # the calling thread wants to interrupt
240 # the "this" thread.
241 thd := this.PrivateInfo;
242 if ( (this.stillborn == byte 0) && (thd != nil) )
243 jldr->interrupt( thd );
244}#<<
245
246lowinit_rThread_V( p0 : JThread)
247{#>>
248 # this fct is called once during the static init of the
249 # java.lang.Thread object. 'p0' is the "root thread" object
250 # which must be associated witht the Dis thread which is
251 # calling this fuction -- i.e. associate the 'p0' java thread
252 # object with the current Dis thread. 'p1' is the same thread
253 # object, just with the type JObject which allows us to store
254 # it off in the JavaClassLoader->ThreadData structure associated
255 # with the calling Dis thread.
256
257 # since this is the root thread make a root thread group by
258 # creating an instance of ThreadGroup and calling its private
259 # default constructor.
260 thd_grp_cl := jni->FindClass( "java.lang.ThreadGroup" );
261 if ( thd_grp_cl == nil )
262 jni->FatalError( "could not obtain ThreadGroup class" );
263
264 thd_grp := jni->NewObject( thd_grp_cl );
265 if ( thd_grp == nil )
266 jni->FatalError( "could not created root threadgroup" );
267 p0.group = thd_grp;
268
269 # get the ThreadData structure for the calling thread
270 thd := jldr->getthreaddata();
271 thd.this = cast->JThdToJObj(p0); # save java object in thread data
272 p0.PrivateInfo = thd; # save thread data in java object
273
274}#<<
275
276
277
278
279
280##### private functions used by the Thread_L module
281
282#
283# this function is the first function of all java
284# threads, except for the first thread which is
285# controlled by the JavaClassLoader module.
286#
287# jthd : the Java thread object associated with this
288# Dis thread.
289#
290# ok : use this channel to notify "spawner" that
291# we are under-way. send 0==fail; 1==ok
292#
293javathreadinit( jthd : JNI->JThread, ok : chan of int )
294{
295 # create a JavaClassLoader->ThreadData structure
296 # and "register" it with the class loader.
297
298 thd := jldr->getthreaddata();
299
300 if ( thd.this != nil )
301 {
302 # this should be nil, else the java thread
303 # already is set for this Dis thread and we
304 # are in some screwed-up state.
305 ok <-= 0;
306 return;
307 }
308
309 # now fill in the java thread obj (after
310 # the putthreaddata so any init is not affected
311 thdobj := cast->JThdToJObj( jthd );
312 thd.this = thdobj;
313
314 # now save the ThreadData in the java object in order
315 # to allow a lookup from the other diretion
316 jthd.PrivateInfo = thd;
317
318 # set our daemon thread status
319 if ( jthd.daemon == JNI->BTRUE )
320 jldr->daemonize();
321
322 # notify spawner we are under-way
323 ok <- = 1;
324
325 # we need to catch any exceptions in order
326 # to clean up the thread object's state
327 ee := ref Sys->Exception;
328 if ( sys->rescue( "*", ee ) == Sys->HANDLER )
329 {
330
331 # call Thread.run() or Runnable.run()
332 Run( jthd, thdobj );
333
334 # call Thread.exit()
335 (mod,idx) := jni->FindMethod( threadclass, "exit", "()V", JNI->METH_PRIVATE );
336 jni->jassist->mcall1( mod, idx, thdobj );
337 sys->unrescue();
338 }
339 else
340 {
341 # clear exception
342 sys->rescued( Sys->ONCE, nil );
343
344 # thread threw an unhandled exception so
345 # call the ThreadGroup.uncaughtException()
346 # method.
347 UncaughtException( jthd, thdobj, ee );
348 }
349
350 # java thread clean up
351
352 jni->jldr->monitorenter( thdobj ); ##LOCK thread object
353 {
354
355 jthd.stillborn = byte 1; # prevent re-run
356
357 # notify ALL "waiters" (which includes any Thread.join()'s)
358 jni->jldr->monitornotify( thdobj, 1 );
359 }
360 jni->jldr->monitorexit( thdobj ); ##UNLOCK thread object
361
362 # clean up thread structures
363 jldr->delthreaddata();
364 thd.this = nil;
365 jthd.PrivateInfo = nil;
366}
367
368
369#
370# if the thread object contains a "registered" Runnable
371# object then execute that Runnable's run() method, else
372# execute the Thread's run() method (which should be
373# overridden.
374#
375Run( jthd : JNI->JThread, thdobj : JObject )
376{
377 Class : import jldr;
378 class : JNI->ClassData;
379 run_idx := thread_run_idx; #default to Thread.run()
380 obj := thdobj; #this obj for run() call
381
382 if ( jthd.target != nil )
383 {
384 # the thread has a registered Runnable
385 # object, find its run() method
386 class = jni->GetObjectClassData( jthd.target );
387 run_idx = class.findvmethod( "run", "()V" );
388 if ( run_idx == -1 )
389 return;
390 obj = jthd.target; #set 'this' to the runnable obj
391 }
392 else
393 {
394 # use the thread object's run()
395 class = jni->GetObjectClassData(thdobj);
396 }
397
398 run_method := class.virtualmethods[run_idx];
399
400 # do the run()
401 jni->jassist->mcall1( run_method.class.mod, run_method.field.value, obj );
402}
403
404#
405# If the thread's ThreadGroup is a subclass of java.lang.ThreadGroup
406# then invoke that class'es "uncaughtException" method. This
407# method is called whenever a thread does not handle an exception.
408# The method is passed an instance of the Thread along with the
409# "throwable" (i.e. exception).
410#
411UncaughtException( jthd : JThread, thdobj : JObject, ee : ref Sys->Exception )
412{
413 tgrp_cl := jni->GetObjectClassData( jthd.group );
414
415 #
416 # if the thread group is the default thread group
417 # class, then we will handle the excepition here
418 # which is to simply do nothing.
419 #
420 if ( tgrp_cl.name != "java/lang/ThreadGroup" )
421 {
422 # call method, protected against exceptions
423 # since we must still clean-up the thread
424 eee := ref Sys->Exception;
425 if ( sys->rescue( "*", eee ) == Sys->HANDLER )
426 {
427 # find the uncaughtException method for the thd-grp
428 (mod,idx) := jni->FindMethod( tgrp_cl, "uncaughtException",
429 "(Ljava.lang.Thread;Ljava.lang.Throwable;)V",
430 JNI->METH_VIRTUAL );
431 if ( mod != nil )
432 {
433 # call the uncaughException handler
434 Value : import jni;
435 args := array[] of
436 {
437 ref Value.TObject(thdobj), #the thread
438 ref Value.TObject(jldr->culprit(ee)) #the exception
439 };
440
441 # do the call
442 ##LATER nil := jni->LowCall( mod, idx, jthd.group, args );
443 }
444 sys->unrescue();
445 }
446 else
447 {
448 # if we get an exception here just return
449 # and let the thread finish cleanup.
450 sys->rescued( Sys->ONCE, nil );
451 }
452 }
453
454}
455
java/pkg2/java/lang/Thread_L.m+21−0
@@ -0,0 +1,21 @@
1# javal v1.3 generated file: edit with care
2
3Thread_L : module
4{
5
6 init : fn( jni_p : JNI );
7 currentThread_rThread : fn( ) : JThread;
8 yield_V : fn( );
9 sleep_J_V : fn( p0 : big);
10 start_V : fn( this : JThread);
11 isInterrupted_Z_Z : fn( this : JThread, p0 : int) : int;
12 isAlive_Z : fn( this : JThread) : int;
13 countStackFrames_I : fn( this : JThread) : int;
14 setPriority0_I_V : fn( this : JThread, p0 : int);
15 stop0_rObject_V : fn( this : JThread, p0 : JObject);
16 suspend0_V : fn( this : JThread);
17 resume0_V : fn( this : JThread);
18 interrupt0_V : fn( this : JThread);
19 lowinit_rThread_V : fn( p0 : JThread);
20
21};
java/pkg2/java/lang/Throwable.java+0−0

Empty file added.

java/pkg2/java/lang/Throwable_L.b+96−0
@@ -0,0 +1,96 @@
1implement Throwable_L;
2
3# javal v1.2 generated file: edit with care
4
5include "jni.m";
6 jni : JNI;
7 ClassModule,
8 JString,
9 JArray,
10 JArrayI,
11 JArrayC,
12 JArrayB,
13 JArrayS,
14 JArrayJ,
15 JArrayF,
16 JArrayD,
17 JArrayZ,
18 JArrayJObject,
19 JArrayJClass,
20 JArrayJString,
21 JClass,
22 JObject : import jni;
23
24#>> extra pre includes here
25
26#<<
27
28include "Throwable_L.m";
29
30#>> extra post includes here
31
32#<<
33
34init( jni_p : JNI )
35{
36 # save java native inteface mod instance
37 jni = jni_p;
38 #>>extra initialization here
39 #<<
40}
41
42printStackTrace0_rObject_V( this : ref Throwable_obj, p0 : JObject)
43{#>>
44 Value : import jni;
45 jldr := jni->jldr;
46 Object : import jldr;
47
48 if ( this.backtrace != nil )
49 {
50 args := array[] of
51 {
52 ref Value.TObject( jni->NewStringObject( string this.backtrace ) )
53 };
54 (nil,nil):=jni->CallMethod( p0, "println", "(Ljava/lang/String;)V", args );
55 # ignore any erros
56 }
57
58}#<<
59
60fillInStackTrace_rThrowable( this : ref Throwable_obj) : ref Throwable_obj
61{#>>
62 # attempt to open the local "prog" device (i.e. '#p')
63 # and read the call stack into an array of bytes
64 pid := jni->sys->pctl(0,nil);
65 progfile := "#p/"+ (string pid) +"/stack";
66 fd := jni->sys->open( progfile, Sys->OREAD );
67 if ( fd != nil )
68 {
69 # must spin a thread to read my own call-stack
70 result := chan of array of byte; # channel for thd results
71 spawn ReadCallStack( fd, result );
72 this.backtrace = <- result; # wait for results
73
74 }
75 else
76 this.backtrace = array of byte jni->sys->sprint("could not open %s:%r\n", progfile );
77
78 return( this );
79}#<<
80
81####### private functions
82
83
84ReadCallStack( fd : ref Sys->FD, result : chan of array of byte )
85{
86 buf := array[8000] of byte; #about 10 frames
87 n := jni->sys->read(fd, buf, len buf - 1);
88 fd = nil;
89 if(n < 0)
90 buf = array of byte jni->sys->sprint("could not read call-stack:%r\n");
91 else
92 buf[n] = byte 0;
93
94 result <- = buf[:n+1];
95}
96
java/pkg2/java/lang/Throwable_L.m+16−0
@@ -0,0 +1,16 @@
1# javal v1.2 generated file: edit with care
2
3Throwable_L : module
4{
5 Throwable_obj : adt
6 {
7 cl_mod : ClassModule;
8 backtrace : array of byte;
9 detailMessage : JString;
10 };
11
12 init : fn( jni_p : JNI );
13 printStackTrace0_rObject_V : fn( this : ref Throwable_obj, p0 : JObject);
14 fillInStackTrace_rThrowable : fn( this : ref Throwable_obj) : ref Throwable_obj;
15
16};
java/pkg2/java/lang/UnknownError.java+0−0

Empty file added.

java/pkg2/java/lang/UnsatisfiedLinkError.java+0−0

Empty file added.

java/pkg2/java/lang/VerifyError.java+0−0

Empty file added.

java/pkg2/java/lang/VirtualMachineError.java+0−0

Empty file added.

java/pkg2/java/lang/Void.java+0−0

Empty file added.

java/pkg2/java/lang/mkfile+152−0
@@ -0,0 +1,152 @@
1<../../../../mkconfig
2
3DIRS=\
4 reflect\
5
6TARG=\
7 AbstractMethodError.dis\
8 ArithmeticException.dis\
9# for ArrayIndexOutOfBoundsException.dis\
10 ++5KkA5LRlUzD1nsDM8Mj.dis\
11 ArrayStoreException.dis\
12 Boolean.dis\
13 Byte.dis\
14 Character.dis\
15 Class.dis\
16 ClassCastException.dis\
17 ClassCircularityError.dis\
18 ClassFormatError.dis\
19 ClassLoader.dis\
20# for ClassNotFoundException.dis\
21 S1vm8N5TePhsu3h1FO7yj.dis\
22# for CloneNotSupportedException.dis\
23 wmF21yXDq7VxPRRLc7v5t.dis\
24 Cloneable.dis\
25 Compiler.dis\
26 Double.dis\
27 Error.dis\
28 Exception.dis\
29# for ExceptionInInitializerError.dis\
30 Ub2BD3PjJRDSI4wyZi7ID.dis\
31 Float.dis\
32 IllegalAccessError.dis\
33# for IllegalAccessException.dis\
34 ClJ4BmIE1TECvv1qdqbQN.dis\
35# for IllegalArgumentException.dis\
36 Z07h8c1IAX5LIjYbhqgGl.dis\
37# for IllegalMonitorStateException.dis\
38 375fcBxmum6K8ZSGn7W2N.dis\
39 IllegalStateException.dis\
40# for IllegalThreadStateException.dis\
41 1PLXdCFiGoZkxBoL8Bo0P.dis\
42# for IncompatibleClassChangeError.dis\
43 FiACrRolKM+iZTikdgUFa.dis\
44# for IndexOutOfBoundsException.dis\
45 IKsPHNdWGHpuZGqgvYD4e.dis\
46 InfernoProcess.dis\
47 InstantiationError.dis\
48# for InstantiationException.dis\
49 jhj+E2mCFNmQ2VUL0zYp8.dis\
50 Integer.dis\
51 InternalError.dis\
52 InterruptedException.dis\
53 LinkageError.dis\
54 Long.dis\
55 Math.dis\
56# for NegativeArraySizeException.dis\
57 iu6-cux1hLK1GoPKq9m1l.dis\
58 NoClassDefFoundError.dis\
59 NoSuchFieldError.dis\
60 NoSuchFieldException.dis\
61 NoSuchMethodError.dis\
62 NoSuchMethodException.dis\
63 NullPointerException.dis\
64 NullSecurityManager.dis\
65 Number.dis\
66 NumberFormatException.dis\
67 Object.dis\
68 OutOfMemoryError.dis\
69 Process.dis\
70 Runnable.dis\
71 Runtime.dis\
72 RuntimeException.dis\
73 SecurityException.dis\
74 SecurityManager.dis\
75 Short.dis\
76 StackOverflowError.dis\
77 String.dis\
78 StringBuffer.dis\
79# for StringIndexOutOfBoundsException.dis\
80 5ZD+zz0io892VFWeXUN1a.dis\
81 System.dis\
82 Thread.dis\
83 ThreadDeath.dis\
84 ThreadGroup.dis\
85 Throwable.dis\
86 UnknownError.dis\
87 UnsatisfiedLinkError.dis\
88 VerifyError.dis\
89 VirtualMachineError.dis\
90 Void.dis\
91# Limbo code\
92 Character_L.dis\
93 ClassLoader_L.dis\
94 Class_L.dis\
95 Double_L.dis\
96 Float_L.dis\
97 InfernoProcess_L.dis\
98 Math_L.dis\
99 Object_L.dis\
100 Runtime_L.dis\
101 SecurityManager_L.dis\
102 StringBuffer_L.dis\
103 String_L.dis\
104 System_L.dis\
105 Thread_L.dis\
106 Throwable_L.dis\
107 unicode_table.dis\
108
109MODULES=\
110 $ROOT/java/module/classloader.m\
111 $ROOT/java/module/jni.m\
112 $ROOT/java/module/cast.m\
113 Character_L.m\
114 ClassLoader_L.m\
115 Class_L.m\
116 Double_L.m\
117 Float_L.m\
118 InfernoProcess_L.m\
119 Math_L.m\
120 Object_L.m\
121 Runtime_L.m\
122 SecurityManager_L.m\
123 StringBuffer_L.m\
124 String_L.m\
125 System_L.m\
126 Thread_L.m\
127 Throwable_L.m\
128 unicode_table.m\
129
130SYSMODULES=\
131 draw.m\
132 hash.m\
133 keyring.m\
134 loader.m\
135 math.m\
136 string.m\
137 sys.m\
138
139DISBIN=$ROOT/java/dis/java/java/lang
140
141<$ROOT/mkfiles/mkjava
142<$ROOT/mkfiles/mksubdirs
143
144LIMBOINCL=\
145 $LIMBOINCL\
146 -I$ROOT/java/pkg\
147
148unicode_table.dis: unicode_table.b
149 limbo $LIMBOINCL -gw unicode_table.b
150
151NullSecurityManager.dis: SecurityManager.class
152 j2d NullSecurityManager.class
java/pkg2/java/lang/reflect/Array.java+0−0

Empty file added.

java/pkg2/java/lang/reflect/Array_L.b+417−0
@@ -0,0 +1,417 @@
1implement Array_L;
2
3# javal v1.5 generated file: edit with care
4
5include "jni.m";
6 jni : JNI;
7 ClassModule,
8 JString,
9 JArray,
10 JArrayI,
11 JArrayC,
12 JArrayB,
13 JArrayS,
14 JArrayJ,
15 JArrayF,
16 JArrayD,
17 JArrayZ,
18 JArrayJObject,
19 JArrayJClass,
20 JArrayJString,
21 JClass,
22 JThread,
23 JObject : import jni;
24
25#>> extra pre includes here
26
27 ClassData,
28 Value : import jni;
29
30 jldr : JavaClassLoader;
31
32#<<
33
34include "Array_L.m";
35
36#>> extra post includes here
37
38include "reflect.m";
39 refl : Reflect;
40 widen : import refl;
41
42array_class : ClassData;
43
44badindex := "java.lang.ArrayIndexOutOfBoundsException";
45illegalarg := "java.lang.IllegalArgumentException";
46nullptr := "java.lang.NullPointerException";
47
48 cast : Cast;
49
50#<<
51
52init( jni_p : JNI )
53{
54 # save java native inteface mod instance
55 jni = jni_p;
56 #>>extra initialization here
57 array_class = jni->FindClass("inferno/vm/Array");
58
59 jldr = jni->jldr;
60 cast = jni->CastMod();
61 refl = load Reflect Reflect->PATH;
62 if ( refl == nil )
63 jni->InitError( jni->sys->sprint( "java.lang.reflect.Array: could not load %s: %r", Reflect->PATH ) );
64 else
65 refl->init(jni);
66
67 #<<
68}
69
70getLength_rObject_I( p0 : JObject) : int
71{#>>
72 # p0 - must be a Java array; if not, exceptions are thrown
73 # Returns the integer length of the array.
74
75 if ( p0 == nil )
76 jni->ThrowException(nullptr, "");
77 if ( jni->IsArray(p0) == JNI->FALSE)
78 jni->ThrowException(illegalarg, "Not an array");
79 return jni->GetArrayLength(cast->ToJArray(p0));
80}#<<
81
82get_rObject_I_rObject( p0 : JObject,p1 : int) : JObject
83{#>>
84 # p0 - a Java object, which must be an array, else exception occurs.
85 # p1 - an index into the array, >= 0 and < length of array
86 # Returns the element at that index. If the array is of a primitive
87 # type, it is put in an appropriate wrapper class instance.
88
89 checksOK(p0, p1);
90
91 #
92 # Need to figure out what kind of an array this is, then get the
93 # requested element and convert it to an appropriate JObject.
94 #
95 (typ, elem) := GetArrayElement(p0, p1);
96 #(typ, elem) := jni->GetArrayElement(p0, p1);
97
98 if ( typ == 0 ) # array of Objects. good.
99 return elem.Object();
100
101 if ( typ >= JNI->T_BOOLEAN && typ <= JNI->T_LONG )
102 return refl->ValueToObject(elem);
103
104 return nil;
105}#<<
106
107getBoolean_rObject_I_Z( p0 : JObject,p1 : int) : int
108{#>>
109 # p0 - a Java object, which must be an array, else exception occurs.
110 # p1 - an index into the array, >= 0 and < length of array
111 # Returns the element at that index as a boolean value. If the array
112 # is not an array of something that can be converted to a boolean by
113 # widening (and for boolean that's nothing), then getprim will throw
114 # an exception.
115
116 return getprim(p0, p1, JNI->T_BOOLEAN, "boolean").Boolean();
117}#<<
118
119getByte_rObject_I_B( p0 : JObject,p1 : int) : int
120{#>>
121 # See comments in getBoolean_rObject_I_Z, above
122
123 return getprim(p0, p1, JNI->T_BYTE, "byte").Byte();
124}#<<
125
126getChar_rObject_I_C( p0 : JObject,p1 : int) : int
127{#>>
128 # See comments in getBoolean_rObject_I_Z, above
129
130 return getprim(p0, p1, JNI->T_CHAR, "char").Char();
131}#<<
132
133getShort_rObject_I_S( p0 : JObject,p1 : int) : int
134{#>>
135 # See comments in getBoolean_rObject_I_Z, above
136
137 return getprim(p0, p1, JNI->T_SHORT, "short").Short();
138}#<<
139
140getInt_rObject_I_I( p0 : JObject,p1 : int) : int
141{#>>
142 # See comments in getBoolean_rObject_I_Z, above
143
144 return getprim(p0, p1, JNI->T_INT, "int").Int();
145}#<<
146
147getLong_rObject_I_J( p0 : JObject,p1 : int) : big
148{#>>
149 # See comments in getBoolean_rObject_I_Z, above
150
151 return getprim(p0, p1, JNI->T_LONG, "long").Long();
152}#<<
153
154getFloat_rObject_I_F( p0 : JObject,p1 : int) : real
155{#>>
156 # See comments in getBoolean_rObject_I_Z, above
157
158 return getprim(p0, p1, JNI->T_FLOAT, "float").Float();
159}#<<
160
161getDouble_rObject_I_D( p0 : JObject,p1 : int) : real
162{#>>
163 # See comments in getBoolean_rObject_I_Z, above
164
165 return getprim(p0, p1, JNI->T_DOUBLE, "double").Double();
166}#<<
167
168set_rObject_I_rObject_V( p0 : JObject,p1 : int,p2 : JObject)
169{#>>
170 # p0 - a Java array. If null or not an array, exception.
171 # p1 - index into the array. If < 0 or >= length of array, exception.
172 # p2 - a value to put into the array at the specified index. If p0 is
173 # an array of JObject, p2 must be an instance of the appropriate
174 # class. If p0 is an array of a primitive Java type, then p2 must
175 # be a wrapper of a primitive type that can be converted to the
176 # the array's type by widening.
177
178 checksOK(p0, p1);
179
180 objarray := cast->ToJArray(p0);
181 typ := objarray.primitive;
182 if ( typ == 0 ) { # an Object array
183 if ( jni->IsInstanceOf(p2, objarray.class) == JNI->TRUE ) {
184 cast->JArrayToObject(objarray).ary[p1] = p2;
185 return;
186 }
187 }
188 else if ( typ >= JNI->T_BOOLEAN && typ <= JNI->T_LONG ) {
189 (stype, val) := refl->GetVal(p2);
190 if ( stype != 0 && (val = widen(stype, typ, val)) != nil ) {
191 SetArrayElement(p0, p1, val);
192 return;
193 }
194 }
195 jni->ThrowException(illegalarg, "Argument can't be cast to array element");
196}#<<
197
198setBoolean_rObject_I_Z_V( p0 : JObject,p1 : int,p2 : int)
199{#>>
200 # p0[p1] = p2
201 # where p2 is a boolean value, and it must be possible to convert it by
202 # widening to the type array p0.
203
204 putprim(p0, p1, JNI->T_BOOLEAN, "boolean", ref Value.TBoolean(p2));
205}#<<
206
207setByte_rObject_I_B_V( p0 : JObject,p1 : int,p2 : int)
208{#>>
209 # see comments for setBoolean_rObject_I_Z_V, above.
210
211 putprim(p0, p1, JNI->T_BYTE, "byte", ref Value.TByte(p2));
212}#<<
213
214setChar_rObject_I_C_V( p0 : JObject,p1 : int,p2 : int)
215{#>>
216 # see comments for setBoolean_rObject_I_Z_V, above.
217
218 putprim(p0, p1, JNI->T_CHAR, "char", ref Value.TChar(p2));
219}#<<
220
221setShort_rObject_I_S_V( p0 : JObject,p1 : int,p2 : int)
222{#>>
223 # see comments for setBoolean_rObject_I_Z_V, above.
224
225 putprim(p0, p1, JNI->T_SHORT, "short", ref Value.TShort(p2));
226}#<<
227
228setInt_rObject_I_I_V( p0 : JObject,p1 : int,p2 : int)
229{#>>
230 # see comments for setBoolean_rObject_I_Z_V, above.
231
232 putprim(p0, p1, JNI->T_INT, "int", ref Value.TInt(p2));
233}#<<
234
235setLong_rObject_I_J_V( p0 : JObject,p1 : int,p2 : big)
236{#>>
237 # see comments for setBoolean_rObject_I_Z_V, above.
238
239 putprim(p0, p1, JNI->T_LONG, "long", ref Value.TLong(p2));
240}#<<
241
242setFloat_rObject_I_F_V( p0 : JObject,p1 : int,p2 : real)
243{#>>
244 # see comments for setBoolean_rObject_I_Z_V, above.
245
246 putprim(p0, p1, JNI->T_FLOAT, "float", ref Value.TFloat(p2));
247}#<<
248
249setDouble_rObject_I_D_V( p0 : JObject,p1 : int,p2 : real)
250{#>>
251 # see comments for setBoolean_rObject_I_Z_V, above.
252
253 putprim(p0, p1, JNI->T_DOUBLE, "double", ref Value.TDouble(p2));
254}#<<
255
256newArray(jclass: JClass, bounds: array of int): JObject
257{
258 # Create a Java array whose components belong to class jclass.
259 # jclass may be a class object representing a primitive type.
260 # bounds gives the length of each dimension.
261
262 dims := len bounds;
263 cldata: ClassData;
264
265 # See if the class represents a primitive type.
266 typ := jni->PrimitiveIndex(jclass, 1);
267
268 # If jclass represents an array, then component type of array
269 # being created is component type of jclass.
270 s := jclass.aryname;
271 if(s != nil) {
272 # count [s in aryname
273 n := 1;
274 while(s[n] == '[')
275 n++;
276 dims += n;
277 typ = refl->SigToType(s[n:]);
278 if(typ == 0)
279 cldata = jni->FindClass(s[n+1:len s - 1]);
280 } else if(typ == 0) { # jclass is not array and not primitive
281 cldata = jclass.class;
282 }
283
284 return cast->FromJArray(jldr->multianewarray(dims, cldata, typ, bounds));
285}
286
287newArray_rClass_I_rObject( p0 : JClass,p1 : int) : JObject
288{#>>
289 if ( p0 == nil )
290 jni->ThrowException(nullptr, "");
291
292 return newArray(p0, array [1] of { p1 });
293}#<<
294
295multiNewArray_rClass_aI_rObject( p0 : JClass,p1 : JArrayI) : JObject
296{#>>
297 if ( p0 == nil || p1 == nil )
298 jni->ThrowException(nullptr, "");
299
300 ln := len p1.ary;
301
302 if ( ln < 1 || ln > 255 )
303 jni->ThrowException(illegalarg, "dimensions out of range [1,255]");
304
305 return newArray(p0, p1.ary);
306}#<<
307
308# An argument verification routine for use by native methods. The
309# first argument must be non-null, and a Java array. (These conditions
310# are actually check by calling getLength_rObject.) The second
311# argument must be a valid index into that array. There is no return
312# value: if the conditions above are not met, an exception is thrown;
313# hence the routine does not return in this case. A successful return
314# indicates the arguments are O.K.
315#
316checksOK(o : JObject, ix : int)
317{
318 if ( ix >= getLength_rObject_I(o) || ix < 0 )
319 jni->ThrowException(badindex, "Illegal index");
320 return;
321}
322#
323# Gets element 'index' of Java array 'o' and returns it as a ref Value
324# of the type corresponding to Java type index 'want'. String 's'
325# is used only in creating the exception message, and should correspond
326# to 'want'. o must be non-null and refer to a Java array, index must
327# within range, and the array must be of a primitive type that can
328# be made into the requested type by a widening conversion. If any of
329# these conditions are not met, an exception is thrown.
330#
331getprim( o : JObject, index : int, want : int, s : string) : ref Value
332{
333 checksOK(o, index);
334
335 (typ, elem) := GetArrayElement(o, index);
336 if ( (wider := widen(typ, want, elem)) == nil ) {
337 if ( s != nil )
338 jni->ThrowException(illegalarg, "Can't cast array element to " + s);
339 else
340 jni->ThrowException(illegalarg, "Can't cast array element");
341 }
342 return wider;
343}
344#
345# Sets element 'index' of Java array 'o' to the ref Value 'val'
346# of the type corresponding to Java type index 'have'. String 's'
347# is used only in creating the exception message, and should correspond
348# to 'have'. o must be non-null and refer to a Java array, index must
349# within range, and the array must be of a primitive type that can
350# be made from the provided type by a widening conversion. If any of
351# these conditions are not met, an exception is thrown.
352#
353putprim( o : JObject, index : int, have : int, s : string, val : ref Value)
354{
355 checksOK(o, index);
356
357 typ := cast->ToJArray(o).primitive;
358 if ( (val = widen(have, typ, val)) == nil ) {
359 if ( s != nil )
360 jni->ThrowException(illegalarg,
361 "Can't put input value into " + s + " array");
362 else
363 jni->ThrowException(illegalarg,
364 "Can't put input value into array");
365 }
366 SetArrayElement(o, index, val);
367 #jni->SetArrayElement(o, index, val);
368}
369#
370# Get the element at index from the Java array o and return it in
371# in an appropriate member of the Value union.
372# The arguments should have been verified before calling this function.
373#
374GetArrayElement( o : JObject, index : int ) : (int, ref Value)
375{
376 a := cast->ToJArray(o);
377 val : ref Value;
378 case a.primitive {
379 0 =>
380 val = ref Value.TObject(cast->JArrayToObject(a).ary[index]);
381 JNI->T_BOOLEAN =>
382 val = ref Value.TBoolean(int cast->JArrayToByte(a).ary[index]);
383 JNI->T_BYTE =>
384 val = ref Value.TByte(int cast->JArrayToByte(a).ary[index]);
385 JNI->T_CHAR =>
386 val = ref Value.TChar(cast->JArrayToInt(a).ary[index]);
387 JNI->T_SHORT =>
388 val = ref Value.TShort(cast->JArrayToInt(a).ary[index]);
389 JNI->T_INT =>
390 val = ref Value.TInt(cast->JArrayToInt(a).ary[index]);
391 JNI->T_LONG =>
392 val = ref Value.TLong(cast->JArrayToBig(a).ary[index]);
393 JNI->T_FLOAT =>
394 val = ref Value.TFloat(cast->JArrayToReal(a).ary[index]);
395 JNI->T_DOUBLE =>
396 val = ref Value.TDouble(cast->JArrayToReal(a).ary[index]);
397 }
398 return (a.primitive, val);
399}
400#
401# Set the element at index from the Java array o to 'val',
402# The arguments should have been verified before calling this function.
403#
404SetArrayElement( o : JObject, index : int, val : ref Value)
405{
406 a := cast->ToJArray(o);
407 pick sw := val {
408 TBoolean => cast->JArrayToByte(a).ary[index] = byte sw.jboolean;
409 TByte => cast->JArrayToByte(a).ary[index] = byte sw.jbyte;
410 TChar => cast->JArrayToInt(a).ary[index] = sw.jchar;
411 TShort => cast->JArrayToInt(a).ary[index] = sw.jshort;
412 TInt => cast->JArrayToInt(a).ary[index] = sw.jint;
413 TLong => cast->JArrayToBig(a).ary[index] = sw.jlong;
414 TFloat => cast->JArrayToReal(a).ary[index] = sw.jfloat;
415 TDouble => cast->JArrayToReal(a).ary[index] = sw.jdouble;
416 }
417}
java/pkg2/java/lang/reflect/Array_L.m+33−0
@@ -0,0 +1,33 @@
1# javal v1.5 generated file: edit with care
2
3Array_L : module
4{
5 Array_obj : adt
6 {
7 cl_mod : ClassModule;
8 };
9
10 init : fn( jni_p : JNI );
11 getLength_rObject_I : fn( p0 : JObject) : int;
12 get_rObject_I_rObject : fn( p0 : JObject,p1 : int) : JObject;
13 getBoolean_rObject_I_Z : fn( p0 : JObject,p1 : int) : int;
14 getByte_rObject_I_B : fn( p0 : JObject,p1 : int) : int;
15 getChar_rObject_I_C : fn( p0 : JObject,p1 : int) : int;
16 getShort_rObject_I_S : fn( p0 : JObject,p1 : int) : int;
17 getInt_rObject_I_I : fn( p0 : JObject,p1 : int) : int;
18 getLong_rObject_I_J : fn( p0 : JObject,p1 : int) : big;
19 getFloat_rObject_I_F : fn( p0 : JObject,p1 : int) : real;
20 getDouble_rObject_I_D : fn( p0 : JObject,p1 : int) : real;
21 set_rObject_I_rObject_V : fn( p0 : JObject,p1 : int,p2 : JObject);
22 setBoolean_rObject_I_Z_V : fn( p0 : JObject,p1 : int,p2 : int);
23 setByte_rObject_I_B_V : fn( p0 : JObject,p1 : int,p2 : int);
24 setChar_rObject_I_C_V : fn( p0 : JObject,p1 : int,p2 : int);
25 setShort_rObject_I_S_V : fn( p0 : JObject,p1 : int,p2 : int);
26 setInt_rObject_I_I_V : fn( p0 : JObject,p1 : int,p2 : int);
27 setLong_rObject_I_J_V : fn( p0 : JObject,p1 : int,p2 : big);
28 setFloat_rObject_I_F_V : fn( p0 : JObject,p1 : int,p2 : real);
29 setDouble_rObject_I_D_V : fn( p0 : JObject,p1 : int,p2 : real);
30 newArray_rClass_I_rObject : fn( p0 : JClass,p1 : int) : JObject;
31 multiNewArray_rClass_aI_rObject : fn( p0 : JClass,p1 : JArrayI) : JObject;
32
33};
java/pkg2/java/lang/reflect/Constructor.java+0−0

Empty file added.

java/pkg2/java/lang/reflect/Constructor_L.b+90−0
@@ -0,0 +1,90 @@
1implement Constructor_L;
2
3include "jni.m";
4 jni : JNI;
5 ClassModule,
6 JString,
7 JArray,
8 JArrayI,
9 JArrayC,
10 JArrayB,
11 JArrayS,
12 JArrayJ,
13 JArrayF,
14 JArrayD,
15 JArrayZ,
16 JArrayJObject,
17 JArrayJClass,
18 JArrayJString,
19 JClass,
20 JObject : import jni;
21
22#>> extra pre includes here
23
24 Value,
25 ClassData,
26 jldr : import jni;
27
28 Object : import jldr;
29
30#<<
31
32include "Constructor_L.m";
33
34#>> extra post includes here
35
36illegalarg := "java.lang.IllegalArgumentException";
37nullptr := "java.lang.NullPointerException";
38
39include "reflect.m";
40 refl : Reflect;
41 widen : import refl;
42
43#<<
44
45init( jni_p : JNI )
46{
47 # save java native inteface mod instance
48 jni = jni_p;
49 #>>extra initialization here
50 refl = load Reflect Reflect->PATH;
51 if ( refl == nil )
52 jni->InitError( jni->sys->sprint( "java.lang.reflect.Constructor: could not load %s: %r", Reflect->PATH ) );
53 else
54 refl->init(jni);
55 #<<
56}
57
58getModifiers_I( this : ref Constructor_obj) : int
59{#>>
60 #
61 # Assume that lower part of slot has modifier bits.
62 #
63 return this.slot & 16rffff;
64}#<<
65
66newInstance_aObject_rObject( this : ref Constructor_obj, p0 : JArrayJObject) : JObject
67{#>>
68 # this - a Constructor object representing a constructor of some class
69 # p0 - a Java array of Objects, containing argument values for the
70 # the constructor
71 # Returns a new instance, constructed by the 'this' constructor.
72 #
73 # Check inputs and build the argument list.
74 #
75 args := refl->BuildArgList(this.parameterTypes, p0);
76 #
77 # Allocate a new object, then do the call.
78 #
79 newobj := jni->AllocObject(this.clazz.class);
80
81 # Eventually may be able to do something like
82 # (result, ok) = jni->CallConstruct(newobj, this.slot, args);
83
84 fld := this.clazz.class.initmethods[this.slot >> 16];
85 (nil, ok) := jni->CallMethod(newobj, fld.field, fld.signature, args);
86
87 if ( ok == JNI->OK )
88 return newobj;
89 return nil;
90}#<<
java/pkg2/java/lang/reflect/Constructor_L.m+18−0
@@ -0,0 +1,18 @@
1# generated file edit with care
2
3Constructor_L : module
4{
5 Constructor_obj : adt
6 {
7 cl_mod : ClassModule;
8 clazz : JClass;
9 slot : int;
10 parameterTypes : JArrayJClass;
11 exceptionTypes : JArrayJClass;
12 };
13
14 init : fn( jni_p : JNI );
15 getModifiers_I : fn( this : ref Constructor_obj) : int;
16 newInstance_aObject_rObject : fn( this : ref Constructor_obj, p0 : JArrayJObject) : JObject;
17
18};
java/pkg2/java/lang/reflect/Field.java+0−0

Empty file added.

java/pkg2/java/lang/reflect/Field_L.b+469−0
@@ -0,0 +1,469 @@
1implement Field_L;
2
3# javal v1.5 generated file: edit with care
4
5include "jni.m";
6 jni : JNI;
7 ClassModule,
8 JString,
9 JArray,
10 JArrayI,
11 JArrayC,
12 JArrayB,
13 JArrayS,
14 JArrayJ,
15 JArrayF,
16 JArrayD,
17 JArrayZ,
18 JArrayJObject,
19 JArrayJClass,
20 JArrayJString,
21 JClass,
22 JThread,
23 JObject : import jni;
24
25#>> extra pre includes here
26
27 Value,
28 ClassData : import jni;
29 jldr : JavaClassLoader;
30 Object,
31 Class : import jldr;
32
33#<<
34
35include "Field_L.m";
36
37#>> extra post includes here
38
39include "reflect.m";
40 refl : Reflect;
41
42STATIC, NONSTATIC : con iota;
43
44illegalacc,
45illegalarg,
46nullptr : string;
47
48#<<
49
50init( jni_p : JNI )
51{
52 # save java native inteface mod instance
53 jni = jni_p;
54 #>>extra initialization here
55 jldr = jni->jldr;
56
57 illegalacc = "java.lang.IllegalAccessException";
58 illegalarg = "java.lang.IllegalArgumentException";
59 nullptr = "java.lang.NullPointerException";
60
61 refl = load Reflect Reflect->PATH;
62 if ( refl == nil )
63 jni->InitError( jni->sys->sprint( "java.lang.reflect.Field: could not load %s: %r", Reflect->PATH ) );
64 else
65 refl->init(jni);
66
67 #<<
68}
69
70getModifiers_I( this : ref Field_obj) : int
71{#>>
72 #
73 # Assume that lower part of slot points has modifier bits.
74 #
75 return this.slot & 16rffff;
76}#<<
77
78get_rObject_rObject( this : ref Field_obj, p0 : JObject) : JObject
79{#>>
80 val := getChecks(this, p0);
81
82 typ := refl->ValType(val);
83
84 if ( typ == 0 ) # array of Objects. good.
85 return val.Object();
86
87 if ( typ >= JNI->T_BOOLEAN && typ <= JNI->T_LONG )
88 return refl->ValueToObject(val);
89 return nil;
90}#<<
91
92getBoolean_rObject_Z( this : ref Field_obj, p0 : JObject) : int
93{#>>
94 val := getChecks(this, p0);
95
96 pick sw := val {
97 TBoolean => return sw.jboolean;
98 }
99 jni->ThrowException(illegalarg, "Can't convert to boolean");
100 return JNI->FALSE;
101}#<<
102
103getByte_rObject_B( this : ref Field_obj, p0 : JObject) : int
104{#>>
105 val := getChecks(this, p0);
106
107 pick sw := val {
108 TByte => return sw.jbyte;
109 }
110 jni->ThrowException(illegalarg, "Can't convert to byte");
111 return JNI->FALSE;
112}#<<
113
114getChar_rObject_C( this : ref Field_obj, p0 : JObject) : int
115{#>>
116 val := getChecks(this, p0);
117
118 pick sw := val {
119 TChar => return sw.jchar;
120 }
121 jni->ThrowException(illegalarg, "Can't convert to char");
122 return 0;
123}#<<
124
125getShort_rObject_S( this : ref Field_obj, p0 : JObject) : int
126{#>>
127 val := getChecks(this, p0);
128
129 pick sw := val {
130 TByte => return int sw.jbyte;
131 TShort => return sw.jshort;
132 }
133 jni->ThrowException(illegalarg, "Can't convert to short");
134 return 0;
135}#<<
136
137getInt_rObject_I( this : ref Field_obj, p0 : JObject) : int
138{#>>
139 val := getChecks(this, p0);
140
141 pick sw := val {
142 TByte => return int sw.jbyte;
143 TChar => return sw.jchar;
144 TShort => return sw.jshort;
145 TInt => return sw.jint;
146 }
147 jni->ThrowException(illegalarg, "Can't convert to int");
148 return 0;
149}#<<
150
151getLong_rObject_J( this : ref Field_obj, p0 : JObject) : big
152{#>>
153 val := getChecks(this, p0);
154
155 pick sw := val {
156 TByte => return big sw.jbyte;
157 TChar => return big sw.jchar;
158 TShort => return big sw.jshort;
159 TInt => return big sw.jint;
160 TLong => return sw.jlong;
161 }
162 jni->ThrowException(illegalarg, "Can't convert to long");
163 return big 0;
164}#<<
165
166getFloat_rObject_F( this : ref Field_obj, p0 : JObject) : real
167{#>>
168 val := getChecks(this, p0);
169
170 pick sw := val {
171 TByte => return real sw.jbyte;
172 TChar => return real sw.jchar;
173 TShort => return real sw.jshort;
174 TInt => return real sw.jint;
175 TLong => return real sw.jlong;
176 TFloat => return sw.jfloat;
177 }
178 jni->ThrowException(illegalarg, "Can't convert to float");
179 return 0.0;
180}#<<
181
182getDouble_rObject_D( this : ref Field_obj, p0 : JObject) : real
183{#>>
184 val := getChecks(this, p0);
185
186 pick sw := val {
187 TByte => return real sw.jbyte;
188 TChar => return real sw.jchar;
189 TShort => return real sw.jshort;
190 TInt => return real sw.jint;
191 TLong => return real sw.jlong;
192 TFloat => return sw.jfloat;
193 TDouble => return sw.jdouble;
194 }
195 jni->ThrowException(illegalarg, "Can't convert to double");
196 return 0.0;
197}#<<
198
199set_rObject_rObject_V( this : ref Field_obj, p0 : JObject,p1 : JObject)
200{#>>
201 want := putChecks(this, p0);
202 clazz := jni->GetObjectClass(p1);
203
204 if ( want == 0 ) { # field value is Object
205 p := ref Value.TObject;
206 if ( jni->IsAssignable(clazz, this.clazz) == JNI->TRUE ) {
207 p.jobj = p1;
208 SetField(this, p0, p);
209 return;
210 }
211 else {
212 jni->ThrowException(illegalarg, "Can't safely cast");
213 return;
214 }
215 }
216 # The field is a primitive type. Then p1 better be a wrapper for that
217 # type. (Or is it okay if it's a wrapper for something that can be
218 # safely cast to the target type?)
219 #
220 # is p1 a Boolean object, or sub-classed from a Boolean object,
221 # or a String with value "true" or "false" ?
222 #
223 (typ, val) := refl->GetVal(p1);
224 if ( typ == 0 || (val = refl->widen(typ, want, val)) == nil ) {
225 jni->ThrowException(illegalarg, "Object can't be cast to needed type");
226 return;
227 }
228 SetField(this, p0, val);
229 return;
230}#<<
231
232setBoolean_rObject_Z_V( this : ref Field_obj, p0 : JObject,p1 : int)
233{#>>
234 want := putChecks(this, p0);
235
236#
237# Note that if the field's signature is "Ljava.lang.Boolean;",
238# we could create an appropriate Object and assign it.
239# But it isn't clear if that is what's wanted.
240# A similar argument applies for the other set<Type> functions.
241#
242 p : ref Value;
243 case want {
244 JNI->T_BOOLEAN => p = ref Value.TBoolean(p1);
245 * =>
246 jni->ThrowException(illegalarg, "Can't convert from boolean");
247 return;
248 }
249 SetField(this, p0, p);
250}#<<
251
252setByte_rObject_B_V( this : ref Field_obj, p0 : JObject,p1 : int)
253{#>>
254 want := putChecks(this, p0);
255
256 p : ref Value;
257 case want {
258 JNI->T_BYTE => p = ref Value.TByte(p1);
259 JNI->T_SHORT => p = ref Value.TShort(int p1);
260 JNI->T_INT => p = ref Value.TInt(int p1);
261 JNI->T_LONG => p = ref Value.TLong(big p1);
262 JNI->T_FLOAT => p = ref Value.TFloat(real p1);
263 JNI->T_DOUBLE => p = ref Value.TDouble(real p1);
264 * =>
265 jni->ThrowException(illegalarg, "Can't convert from byte");
266 return;
267 }
268 SetField(this, p0, p);
269}#<<
270
271setChar_rObject_C_V( this : ref Field_obj, p0 : JObject,p1 : int)
272{#>>
273 want := putChecks(this, p0);
274
275 p : ref Value;
276 case want {
277 JNI->T_CHAR => p = ref Value.TChar(p1);
278 * =>
279 jni->ThrowException(illegalarg, "Can't convert from char");
280 return;
281 }
282 SetField(this, p0, p);
283}#<<
284
285setShort_rObject_S_V( this : ref Field_obj, p0 : JObject,p1 : int)
286{#>>
287 want := putChecks(this, p0);
288
289 p : ref Value;
290 case want {
291 JNI->T_SHORT => p = ref Value.TShort(p1);
292 JNI->T_INT => p = ref Value.TInt(p1);
293 JNI->T_LONG => p = ref Value.TLong(big p1);
294 JNI->T_FLOAT => p = ref Value.TFloat(real p1);
295 JNI->T_DOUBLE => p = ref Value.TDouble(real p1);
296 * =>
297 jni->ThrowException(illegalarg, "Can't convert from short");
298 return;
299 }
300 SetField(this, p0, p);
301}#<<
302
303setInt_rObject_I_V( this : ref Field_obj, p0 : JObject,p1 : int)
304{#>>
305 want := putChecks(this, p0);
306
307 p : ref Value;
308 case want {
309 JNI->T_INT => p = ref Value.TInt(p1);
310 JNI->T_LONG => p = ref Value.TLong(big p1);
311 JNI->T_FLOAT => p = ref Value.TFloat(real p1);
312 JNI->T_DOUBLE => p = ref Value.TDouble(real p1);
313 * =>
314 jni->ThrowException(illegalarg, "Can't convert from int");
315 return;
316 }
317 SetField(this, p0, p);
318}#<<
319
320setLong_rObject_J_V( this : ref Field_obj, p0 : JObject,p1 : big)
321{#>>
322 want := putChecks(this, p0);
323
324 p : ref Value;
325 case want {
326 JNI->T_LONG => p = ref Value.TLong(p1);
327 JNI->T_FLOAT => p = ref Value.TFloat(real p1);
328 JNI->T_DOUBLE => p = ref Value.TDouble(real p1);
329 * =>
330 jni->ThrowException(illegalarg, "Can't convert from long");
331 return;
332 }
333 SetField(this, p0, p);
334}#<<
335
336setFloat_rObject_F_V( this : ref Field_obj, p0 : JObject,p1 : real)
337{#>>
338 want := putChecks(this, p0);
339
340 p : ref Value;
341 case want {
342 JNI->T_FLOAT => p = ref Value.TFloat(p1);
343 JNI->T_DOUBLE => p = ref Value.TDouble(p1);
344 * =>
345 jni->ThrowException(illegalarg, "Can't convert from float");
346 return;
347 }
348 SetField(this, p0, p);
349}#<<
350
351setDouble_rObject_D_V( this : ref Field_obj, p0 : JObject,p1 : real)
352{#>>
353 want := putChecks(this, p0);
354
355 p : ref Value;
356 case want {
357 JNI->T_DOUBLE => p = ref Value.TDouble(p1);
358 * =>
359 jni->ThrowException(illegalarg, "Can't convert from double");
360 return;
361 }
362 SetField(this, p0, p);
363}#<<
364
365
366
367getChecks( this : ref Field_obj, p0 : JObject) : ref Value
368{
369 if ( (this.slot & jldr->ACC_STATIC) == 0 && p0 == nil )
370 jni->ThrowException(nullptr, "reading field of null Object");
371
372 # See if the target object is the same as the one declaring the field.
373 # this.clazz.class_data is ref to a classloader.Class adt
374
375 cldata := this.clazz.class;
376 if ( (this.slot & jldr->ACC_STATIC) == 0 && jni->IsInstanceOf(p0, cldata) != JNI->TRUE ) {
377 jni->ThrowException(illegalarg,
378 "Object is not an instance of this class");
379 return nil;
380 }
381
382 if ( (this.slot & jldr->ACC_PUBLIC) == 0 )
383 jni->ThrowException(illegalacc, "reading non-public field");
384
385 if ( this.slot & jldr->ACC_STATIC )
386 return GetStat(cldata, this.slot);
387 else
388 return GetField(p0, this.slot);
389}
390
391putChecks( this : ref Field_obj, p0 : JObject) : int
392{
393 if ( (this.slot & jldr->ACC_STATIC) == 0 && p0 == nil )
394 jni->ThrowException(nullptr, "writing field of null Object");
395
396 # See if the target object is the same as the one declaring the field.
397 # this.clazz.class_data is ref to a classloader.Class adt
398
399 cldata := this.clazz.class;
400 if ( (this.slot & jldr->ACC_STATIC) == 0 && jni->IsInstanceOf(p0, cldata) != JNI->TRUE ) {
401 jni->ThrowException(illegalarg,
402 "Object is not an instance of this class");
403 return 0;
404 }
405
406 if ( (this.slot & jldr->ACC_PUBLIC) == 0 || (this.slot & jldr->ACC_FINAL) != 0 )
407 jni->ThrowException(illegalacc, "writing non-public or final field");
408
409 if ( this.slot & jldr->ACC_STATIC )
410 return refl->SigToType(cldata.staticdata[this.slot >> 16].signature);
411 else {
412 flds := cldata.objectdata;
413 for ( i := (this.slot >> 16); i > 0; i--)
414 flds = tl flds;
415 return refl->SigToType((hd flds).signature);
416 }
417 return 0;
418}
419
420checkMemberAccess(which : int)
421{
422 return;
423}
424
425SetField(this : ref Field_obj, o : JObject, v : ref Value)
426{
427 cldata := this.clazz.class;
428 if ( (this.slot & jldr->ACC_STATIC) != 0 ) {
429 fld := cldata.staticdata[this.slot >> 16];
430 jni->SetStaticField(cldata, fld.field, v);
431 }
432 else {
433 flds := cldata.objectdata;
434 for ( i := (this.slot >> 16); i > 0; i-- )
435 flds = tl flds;
436 fld := hd flds;
437 jni->SetObjField(o, fld.field, v);
438 }
439}
440
441widen(have, want : string, val : ref Value) : ref Value
442{
443 if ( have == want )
444 return val;
445 havetype := refl->SigToType(have);
446 wanttype := refl->SigToType(want);
447 return refl->widen(havetype, wanttype, val);
448}
449#
450# Eventually JNI may provide a funtions to do this more directly.
451#
452GetStat(cldata : ClassData, slot : int) : ref Value
453{
454 fld := cldata.staticdata[slot >> 16];
455 return jni->GetStaticField(cldata, fld.field, fld.signature);
456}
457#
458# Eventually JNI may provide a funtions to do this more directly.
459# It would probably know what to do about privatemethods, if anything.
460#
461GetField(obj : JObject, slot : int) : ref Value
462{
463 flds := obj.class().objectdata;
464 for ( i := (slot >> 16); i > 0; i-- )
465 flds = tl flds;
466 fld := hd flds;
467 return jni->GetObjField(obj, fld.field, fld.signature);
468}
469
java/pkg2/java/lang/reflect/Field_L.m+35−0
@@ -0,0 +1,35 @@
1# javal v1.5 generated file: edit with care
2
3Field_L : module
4{
5 Field_obj : adt
6 {
7 cl_mod : ClassModule;
8 clazz : JClass;
9 slot : int;
10 name : JString;
11 type_j : JClass;
12 };
13
14 init : fn( jni_p : JNI );
15 getModifiers_I : fn( this : ref Field_obj) : int;
16 get_rObject_rObject : fn( this : ref Field_obj, p0 : JObject) : JObject;
17 getBoolean_rObject_Z : fn( this : ref Field_obj, p0 : JObject) : int;
18 getByte_rObject_B : fn( this : ref Field_obj, p0 : JObject) : int;
19 getChar_rObject_C : fn( this : ref Field_obj, p0 : JObject) : int;
20 getShort_rObject_S : fn( this : ref Field_obj, p0 : JObject) : int;
21 getInt_rObject_I : fn( this : ref Field_obj, p0 : JObject) : int;
22 getLong_rObject_J : fn( this : ref Field_obj, p0 : JObject) : big;
23 getFloat_rObject_F : fn( this : ref Field_obj, p0 : JObject) : real;
24 getDouble_rObject_D : fn( this : ref Field_obj, p0 : JObject) : real;
25 set_rObject_rObject_V : fn( this : ref Field_obj, p0 : JObject,p1 : JObject);
26 setBoolean_rObject_Z_V : fn( this : ref Field_obj, p0 : JObject,p1 : int);
27 setByte_rObject_B_V : fn( this : ref Field_obj, p0 : JObject,p1 : int);
28 setChar_rObject_C_V : fn( this : ref Field_obj, p0 : JObject,p1 : int);
29 setShort_rObject_S_V : fn( this : ref Field_obj, p0 : JObject,p1 : int);
30 setInt_rObject_I_V : fn( this : ref Field_obj, p0 : JObject,p1 : int);
31 setLong_rObject_J_V : fn( this : ref Field_obj, p0 : JObject,p1 : big);
32 setFloat_rObject_F_V : fn( this : ref Field_obj, p0 : JObject,p1 : real);
33 setDouble_rObject_D_V : fn( this : ref Field_obj, p0 : JObject,p1 : real);
34
35};
java/pkg2/java/lang/reflect/InvocationTargetExcepti..a+0−0

Empty file added.

java/pkg2/java/lang/reflect/Member.java+0−0

Empty file added.

java/pkg2/java/lang/reflect/Method.java+0−0

Empty file added.

java/pkg2/java/lang/reflect/Method_L.b+117−0
@@ -0,0 +1,117 @@
1implement Method_L;
2
3include "jni.m";
4 jni : JNI;
5 ClassModule,
6 JString,
7 JArray,
8 JArrayI,
9 JArrayC,
10 JArrayB,
11 JArrayS,
12 JArrayJ,
13 JArrayF,
14 JArrayD,
15 JArrayZ,
16 JArrayJObject,
17 JArrayJClass,
18 JArrayJString,
19 JClass,
20 JObject : import jni;
21
22#>> extra pre includes here
23
24 Value,
25 ClassData,
26 jldr : import jni;
27
28 Object : import jldr;
29
30#<<
31
32include "Method_L.m";
33
34#>> extra post includes here
35
36illegalarg := "java.lang.IllegalArgumentException";
37nullptr := "java.lang.NullPointerException";
38
39include "reflect.m";
40 refl : Reflect;
41 widen : import refl;
42
43#<<
44
45init( jni_p : JNI )
46{
47 # save java native inteface mod instance
48 jni = jni_p;
49 #>>extra initialization here
50 refl = load Reflect Reflect->PATH;
51 if ( refl == nil )
52 jni->InitError( jni->sys->sprint( "java.lang.reflect.Method: could not load %s: %r", Reflect->PATH ) );
53 else
54 refl->init(jni);
55 #<<
56}
57
58getModifiers_I( this : ref Method_obj) : int
59{#>>
60 #
61 # Assume that lower part of slot has modifier bits.
62 #
63 return this.slot & 16rffff;
64}#<<
65
66invoke_rObject_aObject_rObject( this : ref Method_obj, p0 : JObject,p1 : JArrayJObject) : JObject
67{#>>
68 # this - a Method object. The corresponding method should be invoked for
69 # p0 - an Object which should contain that method, with
70 # p1 - a Java array of Objects that are the arguments to the method.
71 # Can be null if the method has no arguments.
72 # Returns an object reflecting the value returned by the method call.
73 #
74 # First do some checking. If 'this' is a static method, p0 is ignored,
75 # otherwise it must an instance of the class in which the method is
76 # declared.
77 #
78 if ( (this.slot & JNI->ACC_STATIC) == 0 ) { # not static
79 if ( p0 == nil )
80 jni->ThrowException(nullptr, "Must supply an instance");
81 if ( jni->IsInstanceOf(p0, this.clazz.class) == JNI->FALSE )
82 jni->ThrowException(illegalarg, "Method not in object");
83 }
84 #
85 # Check inputs and build the argument list.
86 #
87 args := refl->BuildArgList(this.parameterTypes, p1);
88 #
89 # Do the call.
90 #
91 result : ref Value;
92 ok : int;
93 if ( this.slot & JNI->ACC_STATIC ) {
94 fld := this.clazz.class.staticmethods[this.slot >> 16];
95 (result, ok) = jni->CallStatic(this.clazz.class, fld.field,
96 fld.signature, args);
97 }
98 else {
99 fld : ref JavaClassLoader->Field;
100 if ( (this.slot & JNI->ACC_PRIVATE) != 0 )
101 fld = p0.class().privatemethods[this.slot >> 16];
102 else
103 fld = p0.class().virtualmethods[this.slot >> 16].field;
104 (result, ok) = jni->CallMethod(p0, fld.field, fld.signature, args);
105 }
106 #
107 # If necessary, wrap the answer up as an Object.
108 #
109 if ( ok == JNI->OK && result != nil ) {
110 typ := refl->ValType(result);
111 if ( typ >= JNI->T_BOOLEAN && typ <= JNI->T_LONG )
112 return refl->ValueToObject(result);
113 else
114 return result.Object();
115 }
116 return nil;
117}#<<
java/pkg2/java/lang/reflect/Method_L.m+20−0
@@ -0,0 +1,20 @@
1# generated file edit with care
2
3Method_L : module
4{
5 Method_obj : adt
6 {
7 cl_mod : ClassModule;
8 clazz : JClass;
9 slot : int;
10 name : JString;
11 returnType : JClass;
12 parameterTypes : JArrayJClass;
13 exceptionTypes : JArrayJClass;
14 };
15
16 init : fn( jni_p : JNI );
17 getModifiers_I : fn( this : ref Method_obj) : int;
18 invoke_rObject_aObject_rObject : fn( this : ref Method_obj, p0 : JObject,p1 : JArrayJObject) : JObject;
19
20};
java/pkg2/java/lang/reflect/Modifier.java+0−0

Empty file added.

java/pkg2/java/lang/reflect/mkfile+46−0
@@ -0,0 +1,46 @@
1<../../../../../mkconfig
2
3TARG=\
4 Array.dis\
5 Constructor.dis\
6 Field.dis\
7# for InvocationTargetException.dis\
8 esaAWjdsByqq9cEPQZTRT.dis\
9 Member.dis\
10 Method.dis\
11 Modifier.dis\
12# Limbo code\
13 Array_L.dis\
14 Constructor_L.dis\
15 Field_L.dis\
16 Method_L.dis\
17 reflect.dis\
18
19MODULES=\
20 $ROOT/java/module/classloader.m\
21 $ROOT/java/module/jni.m\
22 $ROOT/java/module/cast.m\
23 Array_L.m\
24 Constructor_L.m\
25 Field_L.m\
26 Method_L.m\
27 reflect.m\
28
29SYSMODULES=\
30 draw.m\
31 hash.m\
32 keyring.m\
33 loader.m\
34 math.m\
35 string.m\
36 sys.m\
37
38DISBIN=$ROOT/java/dis/java/java/lang/reflect
39
40<$ROOT/mkfiles/mkjava
41
42reflect.dis: reflect.b
43 limbo $LIMBOINCL -gw reflect.b
44
45esaAWjdsByqq9cEPQZTRT.dis: InvocationTargetException.class
46 j2d InvocationTargetException.class
java/pkg2/java/lang/reflect/reflect.b+327−0
@@ -0,0 +1,327 @@
1implement Reflect;
2
3include "jni.m";
4 jni : JNI;
5 cast : Cast;
6
7 JObject,
8 JClass,
9 JArrayJClass,
10 JArrayJObject,
11 Value : import jni;
12 OK,
13 ERR,
14 TRUE,
15 FALSE,
16 #T_OBJECT, T_ARRAY,
17 T_BOOLEAN,
18 T_BYTE,
19 T_CHAR,
20 T_SHORT,
21 T_INT,
22 T_LONG,
23 T_FLOAT,
24 T_DOUBLE : import JNI;
25
26 ClassData : import JNI;
27
28include "reflect.m";
29
30wrapper_class := array[T_LONG-T_BOOLEAN+1] of ClassData;
31wrapper_name := array[] of { "Boolean",
32 "Character",
33 "Float",
34 "Double",
35 "Byte",
36 "Short",
37 "Integer",
38 "Long" };
39type_string := "ZCFDBSIJ";
40
41illegalarg := "java.lang.IllegalArgumentException";
42nullptr := "java.lang.NullPointerException";
43
44init(jni_m : JNI) {
45 jni = jni_m;
46 for ( i := 0; i <= T_LONG - T_BOOLEAN; i++ )
47 wrapper_class[i] = jni->FindClass("java/lang/" + wrapper_name[i]);
48 cast = jni->CastMod();
49}
50
51widen(have, want : int, val : ref Value) : ref Value
52{
53 if ( have == want )
54 return val;
55 havetype := have;
56 wanttype := want;
57 valint : int;
58 valbig : big;
59 valreal : real;
60 if ( havetype == 0 || wanttype == 0 )
61 return nil;
62 pick sw := val {
63 TByte =>
64 valint = int sw.jbyte;
65 valbig = big valint;
66 valreal = real valint;
67 TShort =>
68 valint = sw.jshort;
69 valbig = big valint;
70 valreal = real valint;
71 TChar =>
72 valint = sw.jchar;
73 valbig = big valint;
74 valreal = real valint;
75 TInt =>
76 valint = sw.jint;
77 valbig = big valint;
78 valreal = real valint;
79 TLong =>
80 valbig = sw.jlong;
81 valreal = real valbig;
82 TFloat =>
83 valreal = sw.jfloat;
84 }
85 case ( wanttype ) {
86 T_BOOLEAN or T_BYTE or T_CHAR =>
87 return nil;
88 T_SHORT =>
89 case ( havetype ) {
90 T_BYTE =>
91 sw := ref Value.TShort;
92 sw.jshort = valint;
93 val = sw;
94 * =>
95 return nil;
96 }
97 T_INT =>
98 case ( havetype ) {
99 T_BYTE or T_SHORT or T_CHAR =>
100 sw := ref Value.TInt;
101 sw.jint = valint;
102 val = sw;
103 * =>
104 return nil;
105 }
106 T_LONG =>
107 case ( havetype ) {
108 T_BYTE or T_SHORT or T_CHAR or T_INT =>
109 sw := ref Value.TLong;
110 sw.jlong = valbig;
111 val = sw;
112 * =>
113 return nil;
114 }
115 T_FLOAT =>
116 case ( havetype ) {
117 T_BYTE or T_SHORT or T_CHAR or T_INT or T_LONG =>
118 sw := ref Value.TFloat;
119 sw.jfloat = valreal;
120 val = sw;
121 * =>
122 return nil;
123 }
124 T_DOUBLE =>
125 case ( havetype ) {
126 T_BYTE or T_SHORT or T_CHAR or T_INT or T_LONG or T_FLOAT =>
127 sw := ref Value.TDouble;
128 sw.jdouble = valreal;
129 val = sw;
130 * =>
131 return nil;
132 }
133 }
134 return val;
135}
136BuildArgList(parms : JArrayJClass, arg : JArrayJObject) : array of ref Value
137{
138 #
139 # First do some checking.
140 #
141 l := 0;
142 formal: array of JClass;
143 actual: array of JObject;
144 args: array of ref Value;
145 if ( parms != nil ) {
146 if ( arg == nil )
147 jni->ThrowException(nullptr, "constructor requires parameters");
148 if ( len parms.ary != len arg.ary )
149 jni->ThrowException(illegalarg, "Wrong number of args");
150 l = len parms.ary;
151 formal = parms.ary; # array of JClass
152 actual = arg.ary; # array of JObject
153 args = array[l] of ref Value;
154 }
155 else # There are no formal parameters
156 if ( arg != nil && len arg.ary != 0 ) # But there are actual arguments
157 jni->ThrowException(illegalarg, "Wrong number of args");
158
159 #
160 # March through the arguments, checking for type as we go.
161 #
162 for ( i := 0; i < l; i++ ) {
163 #
164 # Is the formal parameter a primitive?
165 #
166 if ( (want := jni->PrimitiveIndex(formal[i], 1)) > 0 ) {
167 #
168 # Actual parameter should be (derived from) a wrapper, and
169 # be able to be widened to the formal parameter type.
170 #
171 (typ, parmval) := GetVal(actual[i]);
172 if ( (val := widen(want, typ, parmval)) != nil )
173 args[i] = val;
174 else
175 jni->ThrowException(illegalarg, "Argument " + string (i+1) +
176 ", can't cast");
177 }
178 else if ( jni->IsInstanceOf(actual[i], formal[i].class) == JNI->TRUE ) {
179 val := ref Value.TObject;
180 val.jobj = actual[i];
181 args[i] = val;
182 }
183 else
184 jni->ThrowException(illegalarg, "Argument " + string (i+1) +
185 " wrong type");
186 }
187 return args;
188}
189#
190# Return a JClass corresponding to the Java type t.
191#
192Class(t : int) : JClass
193{
194 if ( t < T_BOOLEAN || t > T_LONG )
195 return nil;
196 return jni->GetClassObject(wrapper_class[t - T_BOOLEAN]);
197}
198#
199# Return a Class Object corresponding to the Java type t.
200#
201ClassObject(t : int) : JObject
202{
203 return cast->FromJClass(Class(t));
204}
205#
206# Given the java type, get the Class object representing this
207# type, and return as a Value.
208#
209GetPrimitiveClass(typ : int) : ref Value
210{
211 return jni->GetStaticField(wrapper_class[typ - T_BOOLEAN], "TYPE",
212 "Ljava/lang/Class;");
213}
214#
215# If the Object o is a wrapper for a Java primitive type, return the
216# primitive value (in a Value adt) and the type index.
217# Otherwise, return 0 and a nil Value.
218#
219GetVal(o : JObject) : (int, ref Value)
220{
221 j := T_BOOLEAN;
222 for ( i := j; i <= T_LONG; i++ ) {
223 if ( jni->IsInstanceOf(o, wrapper_class[i-j]) == TRUE ) {
224 val := jni->GetObjField(o, "value", type_string[i-j:i-j+1]);
225 return (i, val);
226 }
227 }
228 return (0, nil);
229}
230#
231# Convert a signature to a java type index.
232#
233SigToType(sig : string) : int
234{
235 index : int;
236 case sig[0] {
237 'Z' =>
238 index = T_BOOLEAN;
239 'B' =>
240 index = T_BYTE;
241 'C' =>
242 index = T_CHAR;
243 'S' =>
244 index = T_SHORT;
245 'I' =>
246 index = T_INT;
247 'J' =>
248 index = T_LONG;
249 'F' =>
250 index = T_FLOAT;
251 'D' =>
252 index = T_DOUBLE;
253 * =>
254 index = 0;
255 }
256 return index;
257}
258#
259# Convert a java type index to a signature.
260#
261TypeToSig(typ : int) : string
262{
263 if ( typ < T_BOOLEAN || typ > T_LONG )
264 return nil;
265 return type_string[typ-T_BOOLEAN:typ-T_BOOLEAN+1];
266}
267#
268# Convert a Java type character to its corresponding type name.
269#
270TypeCharToName(c : int) : string
271{
272 tname : string;
273 case c {
274 'Z' =>
275 tname = "boolean";
276 'B' =>
277 tname = "byte";
278 'C' =>
279 tname = "char";
280 'S' =>
281 tname = "short";
282 'I' =>
283 tname = "int";
284 'J' =>
285 tname = "long";
286 'F' =>
287 tname = "float";
288 'D' =>
289 tname = "double";
290 * =>
291 tname = "blah";
292 }
293 return tname;
294}
295#
296# Calculate the type index of the quantity in val. If it isn't a
297# Java primitive type, return 0;
298#
299ValType(val : ref Value) : int
300{
301 pick sw := val {
302 TBoolean => return T_BOOLEAN;
303 TByte => return T_BYTE;
304 TChar => return T_CHAR;
305 TShort => return T_SHORT;
306 TInt => return T_INT;
307 TLong => return T_LONG;
308 TFloat => return T_FLOAT;
309 TDouble => return T_DOUBLE;
310 * => return 0;
311 }
312}
313#
314# Create a wrapper Object for the primitive Java value corresponding
315# to the argument.
316#
317ValueToObject(val : ref Value) : JObject
318{
319 typ := ValType(val);
320 j := T_BOOLEAN;
321 jobj := jni->AllocObject(wrapper_class[typ - j]);
322 sig := "(" + type_string[typ-j:typ-j+1] + ")V";
323 (nil, ok) := jni->CallMethod(jobj, "<init>", sig, array[] of { val });
324 if ( ok == OK )
325 return jobj;
326 return nil;
327}
java/pkg2/java/lang/reflect/reflect.m+19−0
@@ -0,0 +1,19 @@
1Reflect : module {
2
3 PATH : con "/dis/java/java/lang/reflect/reflect.dis";
4
5 init : fn(jni_m : JNI);
6 widen : fn(havetype, wanttype : int, val : ref Value) : ref Value;
7 BuildArgList: fn(parms : JArrayJClass, arg : JArrayJObject)
8 : array of ref Value;
9 Class : fn(t : int) : JClass;
10 ClassObject : fn(t : int) : JObject;
11 GetPrimitiveClass : fn(typ : int) : ref Value;
12 GetVal : fn(o : JObject) : (int, ref Value);
13 SigToType : fn(sig : string) : int;
14 TypeToSig : fn(typ : int) : string;
15 TypeCharToName : fn(c : int) : string;
16 ValType : fn(val : ref Value) : int;
17 ValueToObject : fn(val : ref Value) : JObject;
18
19};
java/pkg2/java/lang/unicode_table.b+1285−0
@@ -0,0 +1,1285 @@
1implement UnicodeTable;
2
3include "unicode_table.m";
4
5#
6# the following is lifted from JavaSoft's java
7# source for java.lang.Character. The Limbo
8# compiler produces a more compact file then Java
9#
10
11# The character properties are currently encoded into 32 bits in the following manner:
12# 10 bits signed offset used for converting case
13# 1 bit if 1, adding the signed offset converts the character to lowercase
14# 1 bit if 1, subtracting the signed offset converts the character to uppercase
15# 1 bit if 1, this character has a titlecase equivalent (possibly itself)
16# 3 bits 0 may not be part of an identifier
17# 1 ignorable control; may continue a Unicode identifier or Java identifier
18# 2 may continue a Java identifier but not a Unicode identifier (unused)
19# 3 may continue a Unicode identifier or Java identifier
20# 4 is a Java whitespace character
21# 5 may start or continue a Java identifier;
22# may continue but not start a Unicode identifier (underscores)
23# 6 may start or continue a Java identifier but not a Unicode identifier ($)
24# 7 may start or continue a Unicode identifier or Java identifier
25# Thus:
26# 5, 6, 7 may start a Java identifier
27# 1, 2, 3, 5, 6, 7 may continue a Java identifier
28# 7 may start a Unicode identifier
29# 1, 3, 5, 7 may continue a Unicode identifier
30# 1 is ignorable within an identifier
31# 4 is Java whitespace
32# 2 bits 0 this character has no numeric property
33# 1 adding the digit offset to the character code and then
34# masking with 16r1F will produce the desired numeric value
35# 2 this character has a "strange" numeric value
36# 3 a Java supradecimal digit: adding the digit offset to the
37# character code, then masking with 16r1F, then adding 10
38# will produce the desired numeric value
39# 5 bits digit offset
40# 4 bits reserved for future use
41# 5 bits character type
42#
43
44# The X table has 1024 entries for a total of 1024 bytes.
45
46X = array[] of {
47 0, 1, 2, 3, 4, 5, 6, 7, # 16r0000
48 8, 9, 10, 11, 12, 13, 14, 15, # 16r0200
49 16, 17, 18, 19, 20, 21, 22, 23, # 16r0400
50 24, 25, 26, 27, 28, 28, 28, 28, # 16r0600
51 28, 28, 28, 28, 29, 30, 31, 32, # 16r0800
52 33, 34, 35, 36, 37, 38, 39, 40, # 16r0A00
53 41, 42, 43, 44, 45, 46, 28, 28, # 16r0C00
54 47, 48, 49, 50, 51, 52, 53, 28, # 16r0E00
55 28, 28, 54, 55, 56, 57, 58, 59, # 16r1000
56 28, 28, 28, 28, 28, 28, 28, 28, # 16r1200
57 28, 28, 28, 28, 28, 28, 28, 28, # 16r1400
58 28, 28, 28, 28, 28, 28, 28, 28, # 16r1600
59 28, 28, 28, 28, 28, 28, 28, 28, # 16r1800
60 28, 28, 28, 28, 28, 28, 28, 28, # 16r1A00
61 28, 28, 28, 28, 28, 28, 28, 28, # 16r1C00
62 60, 60, 61, 62, 63, 64, 65, 66, # 16r1E00
63 67, 68, 69, 70, 71, 72, 73, 74, # 16r2000
64 75, 75, 75, 76, 77, 78, 28, 28, # 16r2200
65 79, 80, 81, 82, 83, 83, 84, 85, # 16r2400
66 86, 85, 28, 28, 87, 88, 89, 28, # 16r2600
67 28, 28, 28, 28, 28, 28, 28, 28, # 16r2800
68 28, 28, 28, 28, 28, 28, 28, 28, # 16r2A00
69 28, 28, 28, 28, 28, 28, 28, 28, # 16r2C00
70 28, 28, 28, 28, 28, 28, 28, 28, # 16r2E00
71 90, 91, 92, 93, 94, 56, 95, 28, # 16r3000
72 96, 97, 98, 99, 83, 100, 83, 101, # 16r3200
73 28, 28, 28, 28, 28, 28, 28, 28, # 16r3400
74 28, 28, 28, 28, 28, 28, 28, 28, # 16r3600
75 28, 28, 28, 28, 28, 28, 28, 28, # 16r3800
76 28, 28, 28, 28, 28, 28, 28, 28, # 16r3A00
77 28, 28, 28, 28, 28, 28, 28, 28, # 16r3C00
78 28, 28, 28, 28, 28, 28, 28, 28, # 16r3E00
79 28, 28, 28, 28, 28, 28, 28, 28, # 16r4000
80 28, 28, 28, 28, 28, 28, 28, 28, # 16r4200
81 28, 28, 28, 28, 28, 28, 28, 28, # 16r4400
82 28, 28, 28, 28, 28, 28, 28, 28, # 16r4600
83 28, 28, 28, 28, 28, 28, 28, 28, # 16r4800
84 28, 28, 28, 28, 28, 28, 28, 28, # 16r4A00
85 28, 28, 28, 28, 28, 28, 28, 28, # 16r4C00
86 56, 56, 56, 56, 56, 56, 56, 56, # 16r4E00
87 56, 56, 56, 56, 56, 56, 56, 56, # 16r5000
88 56, 56, 56, 56, 56, 56, 56, 56, # 16r5200
89 56, 56, 56, 56, 56, 56, 56, 56, # 16r5400
90 56, 56, 56, 56, 56, 56, 56, 56, # 16r5600
91 56, 56, 56, 56, 56, 56, 56, 56, # 16r5800
92 56, 56, 56, 56, 56, 56, 56, 56, # 16r5A00
93 56, 56, 56, 56, 56, 56, 56, 56, # 16r5C00
94 56, 56, 56, 56, 56, 56, 56, 56, # 16r5E00
95 56, 56, 56, 56, 56, 56, 56, 56, # 16r6000
96 56, 56, 56, 56, 56, 56, 56, 56, # 16r6200
97 56, 56, 56, 56, 56, 56, 56, 56, # 16r6400
98 56, 56, 56, 56, 56, 56, 56, 56, # 16r6600
99 56, 56, 56, 56, 56, 56, 56, 56, # 16r6800
100 56, 56, 56, 56, 56, 56, 56, 56, # 16r6A00
101 56, 56, 56, 56, 56, 56, 56, 56, # 16r6C00
102 56, 56, 56, 56, 56, 56, 56, 56, # 16r6E00
103 56, 56, 56, 56, 56, 56, 56, 56, # 16r7000
104 56, 56, 56, 56, 56, 56, 56, 56, # 16r7200
105 56, 56, 56, 56, 56, 56, 56, 56, # 16r7400
106 56, 56, 56, 56, 56, 56, 56, 56, # 16r7600
107 56, 56, 56, 56, 56, 56, 56, 56, # 16r7800
108 56, 56, 56, 56, 56, 56, 56, 56, # 16r7A00
109 56, 56, 56, 56, 56, 56, 56, 56, # 16r7C00
110 56, 56, 56, 56, 56, 56, 56, 56, # 16r7E00
111 56, 56, 56, 56, 56, 56, 56, 56, # 16r8000
112 56, 56, 56, 56, 56, 56, 56, 56, # 16r8200
113 56, 56, 56, 56, 56, 56, 56, 56, # 16r8400
114 56, 56, 56, 56, 56, 56, 56, 56, # 16r8600
115 56, 56, 56, 56, 56, 56, 56, 56, # 16r8800
116 56, 56, 56, 56, 56, 56, 56, 56, # 16r8A00
117 56, 56, 56, 56, 56, 56, 56, 56, # 16r8C00
118 56, 56, 56, 56, 56, 56, 56, 56, # 16r8E00
119 56, 56, 56, 56, 56, 56, 56, 56, # 16r9000
120 56, 56, 56, 56, 56, 56, 56, 56, # 16r9200
121 56, 56, 56, 56, 56, 56, 56, 56, # 16r9400
122 56, 56, 56, 56, 56, 56, 56, 56, # 16r9600
123 56, 56, 56, 56, 56, 56, 56, 56, # 16r9800
124 56, 56, 56, 56, 56, 56, 56, 56, # 16r9A00
125 56, 56, 56, 56, 56, 56, 56, 56, # 16r9C00
126 56, 56, 56, 56, 56, 56, 102, 28, # 16r9E00
127 28, 28, 28, 28, 28, 28, 28, 28, # 16rA000
128 28, 28, 28, 28, 28, 28, 28, 28, # 16rA200
129 28, 28, 28, 28, 28, 28, 28, 28, # 16rA400
130 28, 28, 28, 28, 28, 28, 28, 28, # 16rA600
131 28, 28, 28, 28, 28, 28, 28, 28, # 16rA800
132 28, 28, 28, 28, 28, 28, 28, 28, # 16rAA00
133 56, 56, 56, 56, 56, 56, 56, 56, # 16rAC00
134 56, 56, 56, 56, 56, 56, 56, 56, # 16rAE00
135 56, 56, 56, 56, 56, 56, 56, 56, # 16rB000
136 56, 56, 56, 56, 56, 56, 56, 56, # 16rB200
137 56, 56, 56, 56, 56, 56, 56, 56, # 16rB400
138 56, 56, 56, 56, 56, 56, 56, 56, # 16rB600
139 56, 56, 56, 56, 56, 56, 56, 56, # 16rB800
140 56, 56, 56, 56, 56, 56, 56, 56, # 16rBA00
141 56, 56, 56, 56, 56, 56, 56, 56, # 16rBC00
142 56, 56, 56, 56, 56, 56, 56, 56, # 16rBE00
143 56, 56, 56, 56, 56, 56, 56, 56, # 16rC000
144 56, 56, 56, 56, 56, 56, 56, 56, # 16rC200
145 56, 56, 56, 56, 56, 56, 56, 56, # 16rC400
146 56, 56, 56, 56, 56, 56, 56, 56, # 16rC600
147 56, 56, 56, 56, 56, 56, 56, 56, # 16rC800
148 56, 56, 56, 56, 56, 56, 56, 56, # 16rCA00
149 56, 56, 56, 56, 56, 56, 56, 56, # 16rCC00
150 56, 56, 56, 56, 56, 56, 56, 56, # 16rCE00
151 56, 56, 56, 56, 56, 56, 56, 56, # 16rD000
152 56, 56, 56, 56, 56, 56, 56, 56, # 16rD200
153 56, 56, 56, 56, 56, 56, 56, 56, # 16rD400
154 56, 56, 56, 56, 56, 56, 103, 28, # 16rD600
155 104, 104, 104, 104, 104, 104, 104, 104, # 16rD800
156 104, 104, 104, 104, 104, 104, 104, 104, # 16rDA00
157 104, 104, 104, 104, 104, 104, 104, 104, # 16rDC00
158 104, 104, 104, 104, 104, 104, 104, 104, # 16rDE00
159 105, 105, 105, 105, 105, 105, 105, 105, # 16rE000
160 105, 105, 105, 105, 105, 105, 105, 105, # 16rE200
161 105, 105, 105, 105, 105, 105, 105, 105, # 16rE400
162 105, 105, 105, 105, 105, 105, 105, 105, # 16rE600
163 105, 105, 105, 105, 105, 105, 105, 105, # 16rE800
164 105, 105, 105, 105, 105, 105, 105, 105, # 16rEA00
165 105, 105, 105, 105, 105, 105, 105, 105, # 16rEC00
166 105, 105, 105, 105, 105, 105, 105, 105, # 16rEE00
167 105, 105, 105, 105, 105, 105, 105, 105, # 16rF000
168 105, 105, 105, 105, 105, 105, 105, 105, # 16rF200
169 105, 105, 105, 105, 105, 105, 105, 105, # 16rF400
170 105, 105, 105, 105, 105, 105, 105, 105, # 16rF600
171 105, 105, 105, 105, 56, 56, 56, 56, # 16rF800
172 106, 28, 28, 28, 107, 108, 109, 110, # 16rFA00
173 56, 56, 56, 56, 111, 112, 113, 114, # 16rFC00
174 115, 116, 56, 117, 118, 119, 120, 121 # 16rFE00
175 };
176
177# The Y table has 7808 entries for a total of 7808 bytes.
178
179Y = array[] of {
180 0, 0, 0, 0, 0, 0, 0, 0, # 0
181 0, 1, 1, 1, 1, 1, 0, 0, # 0
182 0, 0, 0, 0, 0, 0, 0, 0, # 0
183 0, 0, 0, 0, 1, 1, 1, 1, # 0
184 2, 3, 3, 3, 4, 3, 3, 3, # 0
185 5, 6, 3, 7, 3, 8, 3, 3, # 0
186 9, 9, 9, 9, 9, 9, 9, 9, # 0
187 9, 9, 3, 3, 7, 7, 7, 3, # 0
188 3, 10, 10, 10, 10, 10, 10, 10, # 1
189 10, 10, 10, 10, 10, 10, 10, 10, # 1
190 10, 10, 10, 10, 10, 10, 10, 10, # 1
191 10, 10, 10, 5, 3, 6, 11, 12, # 1
192 11, 13, 13, 13, 13, 13, 13, 13, # 1
193 13, 13, 13, 13, 13, 13, 13, 13, # 1
194 13, 13, 13, 13, 13, 13, 13, 13, # 1
195 13, 13, 13, 5, 7, 6, 7, 0, # 1
196 0, 0, 0, 0, 0, 0, 0, 0, # 2
197 0, 0, 0, 0, 0, 0, 0, 0, # 2
198 0, 0, 0, 0, 0, 0, 0, 0, # 2
199 0, 0, 0, 0, 0, 0, 0, 0, # 2
200 14, 3, 4, 4, 4, 4, 15, 15, # 2
201 11, 15, 16, 5, 7, 8, 15, 11, # 2
202 15, 7, 17, 17, 11, 16, 15, 3, # 2
203 11, 18, 16, 6, 19, 19, 19, 3, # 2
204 20, 20, 20, 20, 20, 20, 20, 20, # 3
205 20, 20, 20, 20, 20, 20, 20, 20, # 3
206 20, 20, 20, 20, 20, 20, 20, 7, # 3
207 20, 20, 20, 20, 20, 20, 20, 16, # 3
208 21, 21, 21, 21, 21, 21, 21, 21, # 3
209 21, 21, 21, 21, 21, 21, 21, 21, # 3
210 21, 21, 21, 21, 21, 21, 21, 7, # 3
211 21, 21, 21, 21, 21, 21, 21, 22, # 3
212 23, 24, 23, 24, 23, 24, 23, 24, # 4
213 23, 24, 23, 24, 23, 24, 23, 24, # 4
214 23, 24, 23, 24, 23, 24, 23, 24, # 4
215 23, 24, 23, 24, 23, 24, 23, 24, # 4
216 23, 24, 23, 24, 23, 24, 23, 24, # 4
217 23, 24, 23, 24, 23, 24, 23, 24, # 4
218 25, 26, 23, 24, 23, 24, 23, 24, # 4
219 16, 23, 24, 23, 24, 23, 24, 23, # 4
220 24, 23, 24, 23, 24, 23, 24, 23, # 5
221 24, 16, 23, 24, 23, 24, 23, 24, # 5
222 23, 24, 23, 24, 23, 24, 23, 24, # 5
223 23, 24, 23, 24, 23, 24, 23, 24, # 5
224 23, 24, 23, 24, 23, 24, 23, 24, # 5
225 23, 24, 23, 24, 23, 24, 23, 24, # 5
226 23, 24, 23, 24, 23, 24, 23, 24, # 5
227 27, 23, 24, 23, 24, 23, 24, 28, # 5
228 16, 29, 23, 24, 23, 24, 30, 23, # 6
229 24, 31, 31, 23, 24, 16, 32, 32, # 6
230 33, 23, 24, 31, 34, 16, 35, 36, # 6
231 23, 24, 16, 16, 35, 37, 16, 38, # 6
232 23, 24, 23, 24, 23, 24, 38, 23, # 6
233 24, 39, 40, 16, 23, 24, 39, 23, # 6
234 24, 41, 41, 23, 24, 23, 24, 42, # 6
235 23, 24, 16, 40, 23, 24, 40, 40, # 6
236 40, 40, 40, 40, 43, 44, 45, 43, # 7
237 44, 45, 43, 44, 45, 23, 24, 23, # 7
238 24, 23, 24, 23, 24, 23, 24, 23, # 7
239 24, 23, 24, 23, 24, 16, 23, 24, # 7
240 23, 24, 23, 24, 23, 24, 23, 24, # 7
241 23, 24, 23, 24, 23, 24, 23, 24, # 7
242 16, 43, 44, 45, 23, 24, 46, 46, # 7
243 46, 46, 23, 24, 23, 24, 23, 24, # 7
244 23, 24, 23, 24, 23, 24, 23, 24, # 8
245 23, 24, 23, 24, 23, 24, 23, 24, # 8
246 23, 24, 23, 24, 23, 24, 23, 24, # 8
247 46, 46, 46, 46, 46, 46, 46, 46, # 8
248 46, 46, 46, 46, 46, 46, 46, 46, # 8
249 46, 46, 46, 46, 46, 46, 46, 46, # 8
250 46, 46, 46, 46, 46, 46, 46, 46, # 8
251 46, 46, 46, 46, 46, 46, 46, 46, # 8
252 46, 46, 46, 46, 46, 46, 46, 46, # 9
253 46, 46, 46, 46, 46, 46, 46, 46, # 9
254 16, 16, 16, 47, 48, 16, 49, 49, # 9
255 50, 50, 16, 51, 16, 16, 16, 16, # 9
256 49, 16, 16, 52, 16, 16, 16, 16, # 9
257 53, 54, 16, 16, 16, 16, 16, 54, # 9
258 16, 16, 55, 16, 16, 16, 16, 16, # 9
259 16, 16, 16, 16, 16, 16, 16, 16, # 9
260 16, 16, 16, 56, 16, 16, 16, 16, # 10
261 56, 16, 57, 57, 16, 16, 16, 16, # 10
262 16, 16, 58, 16, 16, 16, 16, 16, # 10
263 16, 16, 16, 16, 16, 16, 16, 16, # 10
264 16, 16, 16, 16, 16, 16, 16, 16, # 10
265 16, 46, 46, 46, 46, 46, 46, 46, # 10
266 59, 59, 59, 59, 59, 59, 59, 59, # 10
267 59, 11, 11, 59, 59, 59, 59, 59, # 10
268 59, 59, 11, 11, 11, 11, 11, 11, # 11
269 11, 11, 11, 11, 11, 11, 11, 11, # 11
270 59, 59, 11, 11, 11, 11, 11, 11, # 11
271 11, 11, 11, 11, 11, 11, 11, 46, # 11
272 59, 59, 59, 59, 59, 11, 11, 11, # 11
273 11, 11, 46, 46, 46, 46, 46, 46, # 11
274 46, 46, 46, 46, 46, 46, 46, 46, # 11
275 46, 46, 46, 46, 46, 46, 46, 46, # 11
276 60, 60, 60, 60, 60, 60, 60, 60, # 12
277 60, 60, 60, 60, 60, 60, 60, 60, # 12
278 60, 60, 60, 60, 60, 60, 60, 60, # 12
279 60, 60, 60, 60, 60, 60, 60, 60, # 12
280 60, 60, 60, 60, 60, 60, 60, 60, # 12
281 60, 60, 60, 60, 60, 60, 60, 60, # 12
282 60, 60, 60, 60, 60, 60, 60, 60, # 12
283 60, 60, 60, 60, 60, 60, 60, 60, # 12
284 60, 60, 60, 60, 60, 60, 46, 46, # 13
285 46, 46, 46, 46, 46, 46, 46, 46, # 13
286 46, 46, 46, 46, 46, 46, 46, 46, # 13
287 46, 46, 46, 46, 46, 46, 46, 46, # 13
288 60, 60, 46, 46, 46, 46, 46, 46, # 13
289 46, 46, 46, 46, 46, 46, 46, 46, # 13
290 46, 46, 46, 46, 3, 3, 46, 46, # 13
291 46, 46, 59, 46, 46, 46, 3, 46, # 13
292 46, 46, 46, 46, 11, 11, 61, 3, # 14
293 62, 62, 62, 46, 63, 46, 64, 64, # 14
294 16, 20, 20, 20, 20, 20, 20, 20, # 14
295 20, 20, 20, 20, 20, 20, 20, 20, # 14
296 20, 20, 46, 20, 20, 20, 20, 20, # 14
297 20, 20, 20, 20, 65, 66, 66, 66, # 14
298 16, 21, 21, 21, 21, 21, 21, 21, # 14
299 21, 21, 21, 21, 21, 21, 21, 21, # 14
300 21, 21, 16, 21, 21, 21, 21, 21, # 15
301 21, 21, 21, 21, 67, 68, 68, 46, # 15
302 69, 70, 38, 38, 38, 71, 72, 46, # 15
303 46, 46, 38, 46, 38, 46, 38, 46, # 15
304 38, 46, 23, 24, 23, 24, 23, 24, # 15
305 23, 24, 23, 24, 23, 24, 23, 24, # 15
306 73, 74, 16, 40, 46, 46, 46, 46, # 15
307 46, 46, 46, 46, 46, 46, 46, 46, # 15
308 46, 75, 75, 75, 75, 75, 75, 75, # 16
309 75, 75, 75, 75, 75, 46, 75, 75, # 16
310 20, 20, 20, 20, 20, 20, 20, 20, # 16
311 20, 20, 20, 20, 20, 20, 20, 20, # 16
312 20, 20, 20, 20, 20, 20, 20, 20, # 16
313 20, 20, 20, 20, 20, 20, 20, 20, # 16
314 21, 21, 21, 21, 21, 21, 21, 21, # 16
315 21, 21, 21, 21, 21, 21, 21, 21, # 16
316 21, 21, 21, 21, 21, 21, 21, 21, # 17
317 21, 21, 21, 21, 21, 21, 21, 21, # 17
318 46, 74, 74, 74, 74, 74, 74, 74, # 17
319 74, 74, 74, 74, 74, 46, 74, 74, # 17
320 23, 24, 23, 24, 23, 24, 23, 24, # 17
321 23, 24, 23, 24, 23, 24, 23, 24, # 17
322 23, 24, 23, 24, 23, 24, 23, 24, # 17
323 23, 24, 23, 24, 23, 24, 23, 24, # 17
324 23, 24, 15, 60, 60, 60, 60, 46, # 18
325 46, 46, 46, 46, 46, 46, 46, 46, # 18
326 23, 24, 23, 24, 23, 24, 23, 24, # 18
327 23, 24, 23, 24, 23, 24, 23, 24, # 18
328 23, 24, 23, 24, 23, 24, 23, 24, # 18
329 23, 24, 23, 24, 23, 24, 23, 24, # 18
330 23, 24, 23, 24, 23, 24, 23, 24, # 18
331 23, 24, 23, 24, 23, 24, 23, 24, # 18
332 40, 23, 24, 23, 24, 46, 46, 23, # 19
333 24, 46, 46, 23, 24, 46, 46, 46, # 19
334 23, 24, 23, 24, 23, 24, 23, 24, # 19
335 23, 24, 23, 24, 23, 24, 23, 24, # 19
336 23, 24, 23, 24, 23, 24, 23, 24, # 19
337 23, 24, 23, 24, 46, 46, 23, 24, # 19
338 23, 24, 23, 24, 23, 24, 46, 46, # 19
339 23, 24, 46, 46, 46, 46, 46, 46, # 19
340 46, 46, 46, 46, 46, 46, 46, 46, # 20
341 46, 46, 46, 46, 46, 46, 46, 46, # 20
342 46, 46, 46, 46, 46, 46, 46, 46, # 20
343 46, 46, 46, 46, 46, 46, 46, 46, # 20
344 46, 46, 46, 46, 46, 46, 46, 46, # 20
345 46, 46, 46, 46, 46, 46, 46, 46, # 20
346 46, 76, 76, 76, 76, 76, 76, 76, # 20
347 76, 76, 76, 76, 76, 76, 76, 76, # 20
348 76, 76, 76, 76, 76, 76, 76, 76, # 21
349 76, 76, 76, 76, 76, 76, 76, 76, # 21
350 76, 76, 76, 76, 76, 76, 76, 46, # 21
351 46, 59, 3, 3, 3, 3, 3, 3, # 21
352 46, 77, 77, 77, 77, 77, 77, 77, # 21
353 77, 77, 77, 77, 77, 77, 77, 77, # 21
354 77, 77, 77, 77, 77, 77, 77, 77, # 21
355 77, 77, 77, 77, 77, 77, 77, 77, # 21
356 77, 77, 77, 77, 77, 77, 77, 16, # 22
357 46, 3, 46, 46, 46, 46, 46, 46, # 22
358 46, 60, 60, 60, 60, 60, 60, 60, # 22
359 60, 60, 60, 60, 60, 60, 60, 60, # 22
360 60, 60, 46, 60, 60, 60, 60, 60, # 22
361 60, 60, 60, 60, 60, 60, 60, 60, # 22
362 60, 60, 60, 60, 60, 60, 60, 60, # 22
363 60, 60, 46, 60, 60, 60, 3, 60, # 22
364 3, 60, 60, 3, 60, 46, 46, 46, # 23
365 46, 46, 46, 46, 46, 46, 46, 46, # 23
366 40, 40, 40, 40, 40, 40, 40, 40, # 23
367 40, 40, 40, 40, 40, 40, 40, 40, # 23
368 40, 40, 40, 40, 40, 40, 40, 40, # 23
369 40, 40, 40, 46, 46, 46, 46, 46, # 23
370 40, 40, 40, 3, 3, 46, 46, 46, # 23
371 46, 46, 46, 46, 46, 46, 46, 46, # 23
372 46, 46, 46, 46, 46, 46, 46, 46, # 24
373 46, 46, 46, 46, 3, 46, 46, 46, # 24
374 46, 46, 46, 46, 46, 46, 46, 46, # 24
375 46, 46, 46, 3, 46, 46, 46, 3, # 24
376 46, 40, 40, 40, 40, 40, 40, 40, # 24
377 40, 40, 40, 40, 40, 40, 40, 40, # 24
378 40, 40, 40, 40, 40, 40, 40, 40, # 24
379 40, 40, 40, 46, 46, 46, 46, 46, # 24
380 59, 40, 40, 40, 40, 40, 40, 40, # 25
381 40, 40, 40, 60, 60, 60, 60, 60, # 25
382 60, 60, 60, 46, 46, 46, 46, 46, # 25
383 46, 46, 46, 46, 46, 46, 46, 46, # 25
384 78, 78, 78, 78, 78, 78, 78, 78, # 25
385 78, 78, 3, 3, 3, 3, 46, 46, # 25
386 60, 40, 40, 40, 40, 40, 40, 40, # 25
387 40, 40, 40, 40, 40, 40, 40, 40, # 25
388 40, 40, 40, 40, 40, 40, 40, 40, # 26
389 40, 40, 40, 40, 40, 40, 40, 40, # 26
390 40, 40, 40, 40, 40, 40, 40, 40, # 26
391 40, 40, 40, 40, 40, 40, 40, 40, # 26
392 40, 40, 40, 40, 40, 40, 40, 40, # 26
393 40, 40, 40, 40, 40, 40, 40, 40, # 26
394 40, 40, 40, 40, 40, 40, 40, 40, # 26
395 46, 46, 40, 40, 40, 40, 40, 46, # 26
396 40, 40, 40, 40, 40, 40, 40, 40, # 27
397 40, 40, 40, 40, 40, 40, 40, 46, # 27
398 40, 40, 40, 40, 3, 40, 60, 60, # 27
399 60, 60, 60, 60, 60, 79, 79, 60, # 27
400 60, 60, 60, 60, 60, 59, 59, 60, # 27
401 60, 15, 60, 60, 60, 60, 46, 46, # 27
402 9, 9, 9, 9, 9, 9, 9, 9, # 27
403 9, 9, 46, 46, 46, 46, 46, 46, # 27
404 46, 46, 46, 46, 46, 46, 46, 46, # 28
405 46, 46, 46, 46, 46, 46, 46, 46, # 28
406 46, 46, 46, 46, 46, 46, 46, 46, # 28
407 46, 46, 46, 46, 46, 46, 46, 46, # 28
408 46, 46, 46, 46, 46, 46, 46, 46, # 28
409 46, 46, 46, 46, 46, 46, 46, 46, # 28
410 46, 46, 46, 46, 46, 46, 46, 46, # 28
411 46, 46, 46, 46, 46, 46, 46, 46, # 28
412 46, 60, 60, 80, 46, 40, 40, 40, # 29
413 40, 40, 40, 40, 40, 40, 40, 40, # 29
414 40, 40, 40, 40, 40, 40, 40, 40, # 29
415 40, 40, 40, 40, 40, 40, 40, 40, # 29
416 40, 40, 40, 40, 40, 40, 40, 40, # 29
417 40, 40, 40, 40, 40, 40, 40, 40, # 29
418 40, 40, 40, 40, 40, 40, 40, 40, # 29
419 40, 40, 46, 46, 60, 40, 80, 80, # 29
420 80, 60, 60, 60, 60, 60, 60, 60, # 30
421 60, 80, 80, 80, 80, 60, 46, 46, # 30
422 15, 60, 60, 60, 60, 46, 46, 46, # 30
423 40, 40, 40, 40, 40, 40, 40, 40, # 30
424 40, 40, 60, 60, 3, 3, 81, 81, # 30
425 81, 81, 81, 81, 81, 81, 81, 81, # 30
426 3, 46, 46, 46, 46, 46, 46, 46, # 30
427 46, 46, 46, 46, 46, 46, 46, 46, # 30
428 46, 60, 80, 80, 46, 40, 40, 40, # 31
429 40, 40, 40, 40, 40, 46, 46, 40, # 31
430 40, 46, 46, 40, 40, 40, 40, 40, # 31
431 40, 40, 40, 40, 40, 40, 40, 40, # 31
432 40, 40, 40, 40, 40, 40, 40, 40, # 31
433 40, 46, 40, 40, 40, 40, 40, 40, # 31
434 40, 46, 40, 46, 46, 46, 40, 40, # 31
435 40, 40, 46, 46, 60, 46, 80, 80, # 31
436 80, 60, 60, 60, 60, 46, 46, 80, # 32
437 80, 46, 46, 80, 80, 60, 46, 46, # 32
438 46, 46, 46, 46, 46, 46, 46, 80, # 32
439 46, 46, 46, 46, 40, 40, 46, 40, # 32
440 40, 40, 60, 60, 46, 46, 81, 81, # 32
441 81, 81, 81, 81, 81, 81, 81, 81, # 32
442 40, 40, 4, 4, 82, 82, 82, 82, # 32
443 19, 83, 15, 46, 46, 46, 46, 46, # 32
444 46, 46, 60, 46, 46, 40, 40, 40, # 33
445 40, 40, 40, 46, 46, 46, 46, 40, # 33
446 40, 46, 46, 40, 40, 40, 40, 40, # 33
447 40, 40, 40, 40, 40, 40, 40, 40, # 33
448 40, 40, 40, 40, 40, 40, 40, 40, # 33
449 40, 46, 40, 40, 40, 40, 40, 40, # 33
450 40, 46, 40, 40, 46, 40, 40, 46, # 33
451 40, 40, 46, 46, 60, 46, 80, 80, # 33
452 80, 60, 60, 46, 46, 46, 46, 60, # 34
453 60, 46, 46, 60, 60, 60, 46, 46, # 34
454 46, 46, 46, 46, 46, 46, 46, 46, # 34
455 46, 40, 40, 40, 40, 46, 40, 46, # 34
456 46, 46, 46, 46, 46, 46, 81, 81, # 34
457 81, 81, 81, 81, 81, 81, 81, 81, # 34
458 60, 60, 40, 40, 40, 46, 46, 46, # 34
459 46, 46, 46, 46, 46, 46, 46, 46, # 34
460 46, 60, 60, 80, 46, 40, 40, 40, # 35
461 40, 40, 40, 40, 46, 40, 46, 40, # 35
462 40, 40, 46, 40, 40, 40, 40, 40, # 35
463 40, 40, 40, 40, 40, 40, 40, 40, # 35
464 40, 40, 40, 40, 40, 40, 40, 40, # 35
465 40, 46, 40, 40, 40, 40, 40, 40, # 35
466 40, 46, 40, 40, 46, 40, 40, 40, # 35
467 40, 40, 46, 46, 60, 40, 80, 80, # 35
468 80, 60, 60, 60, 60, 60, 46, 60, # 36
469 60, 80, 46, 80, 80, 60, 46, 46, # 36
470 15, 46, 46, 46, 46, 46, 46, 46, # 36
471 46, 46, 46, 46, 46, 46, 46, 46, # 36
472 40, 46, 46, 46, 46, 46, 81, 81, # 36
473 81, 81, 81, 81, 81, 81, 81, 81, # 36
474 46, 46, 46, 46, 46, 46, 46, 46, # 36
475 46, 46, 46, 46, 46, 46, 46, 46, # 36
476 46, 60, 80, 80, 46, 40, 40, 40, # 37
477 40, 40, 40, 40, 40, 46, 46, 40, # 37
478 40, 46, 46, 40, 40, 40, 40, 40, # 37
479 40, 40, 40, 40, 40, 40, 40, 40, # 37
480 40, 40, 40, 40, 40, 40, 40, 40, # 37
481 40, 46, 40, 40, 40, 40, 40, 40, # 37
482 40, 46, 40, 40, 46, 46, 40, 40, # 37
483 40, 40, 46, 46, 60, 40, 80, 60, # 37
484 80, 60, 60, 60, 46, 46, 46, 80, # 38
485 80, 46, 46, 80, 80, 60, 46, 46, # 38
486 46, 46, 46, 46, 46, 46, 60, 80, # 38
487 46, 46, 46, 46, 40, 40, 46, 40, # 38
488 40, 40, 46, 46, 46, 46, 81, 81, # 38
489 81, 81, 81, 81, 81, 81, 81, 81, # 38
490 15, 46, 46, 46, 46, 46, 46, 46, # 38
491 46, 46, 46, 46, 46, 46, 46, 46, # 38
492 46, 46, 60, 80, 46, 40, 40, 40, # 39
493 40, 40, 40, 46, 46, 46, 40, 40, # 39
494 40, 46, 40, 40, 40, 40, 46, 46, # 39
495 46, 40, 40, 46, 40, 46, 40, 40, # 39
496 46, 46, 46, 40, 40, 46, 46, 46, # 39
497 40, 40, 40, 46, 46, 46, 40, 40, # 39
498 40, 40, 40, 40, 40, 40, 46, 40, # 39
499 40, 40, 46, 46, 46, 46, 80, 80, # 39
500 60, 80, 80, 46, 46, 46, 80, 80, # 40
501 80, 46, 80, 80, 80, 60, 46, 46, # 40
502 46, 46, 46, 46, 46, 46, 46, 80, # 40
503 46, 46, 46, 46, 46, 46, 46, 46, # 40
504 46, 46, 46, 46, 46, 46, 46, 81, # 40
505 81, 81, 81, 81, 81, 81, 81, 81, # 40
506 84, 19, 19, 46, 46, 46, 46, 46, # 40
507 46, 46, 46, 46, 46, 46, 46, 46, # 40
508 46, 80, 80, 80, 46, 40, 40, 40, # 41
509 40, 40, 40, 40, 40, 46, 40, 40, # 41
510 40, 46, 40, 40, 40, 40, 40, 40, # 41
511 40, 40, 40, 40, 40, 40, 40, 40, # 41
512 40, 40, 40, 40, 40, 40, 40, 40, # 41
513 40, 46, 40, 40, 40, 40, 40, 40, # 41
514 40, 40, 40, 40, 46, 40, 40, 40, # 41
515 40, 40, 46, 46, 46, 46, 60, 60, # 41
516 60, 80, 80, 80, 80, 46, 60, 60, # 42
517 60, 46, 60, 60, 60, 60, 46, 46, # 42
518 46, 46, 46, 46, 46, 60, 60, 46, # 42
519 46, 46, 46, 46, 46, 46, 46, 46, # 42
520 40, 40, 46, 46, 46, 46, 81, 81, # 42
521 81, 81, 81, 81, 81, 81, 81, 81, # 42
522 46, 46, 46, 46, 46, 46, 46, 46, # 42
523 46, 46, 46, 46, 46, 46, 46, 46, # 42
524 46, 46, 80, 80, 46, 40, 40, 40, # 43
525 40, 40, 40, 40, 40, 46, 40, 40, # 43
526 40, 46, 40, 40, 40, 40, 40, 40, # 43
527 40, 40, 40, 40, 40, 40, 40, 40, # 43
528 40, 40, 40, 40, 40, 40, 40, 40, # 43
529 40, 46, 40, 40, 40, 40, 40, 40, # 43
530 40, 40, 40, 40, 46, 40, 40, 40, # 43
531 40, 40, 46, 46, 46, 46, 80, 60, # 43
532 80, 80, 80, 80, 80, 46, 60, 80, # 44
533 80, 46, 80, 80, 60, 60, 46, 46, # 44
534 46, 46, 46, 46, 46, 80, 80, 46, # 44
535 46, 46, 46, 46, 46, 46, 40, 46, # 44
536 40, 40, 46, 46, 46, 46, 81, 81, # 44
537 81, 81, 81, 81, 81, 81, 81, 81, # 44
538 46, 46, 46, 46, 46, 46, 46, 46, # 44
539 46, 46, 46, 46, 46, 46, 46, 46, # 44
540 46, 46, 80, 80, 46, 40, 40, 40, # 45
541 40, 40, 40, 40, 40, 46, 40, 40, # 45
542 40, 46, 40, 40, 40, 40, 40, 40, # 45
543 40, 40, 40, 40, 40, 40, 40, 40, # 45
544 40, 40, 40, 40, 40, 40, 40, 40, # 45
545 40, 46, 40, 40, 40, 40, 40, 40, # 45
546 40, 40, 40, 40, 40, 40, 40, 40, # 45
547 40, 40, 46, 46, 46, 46, 80, 80, # 45
548 80, 60, 60, 60, 46, 46, 80, 80, # 46
549 80, 46, 80, 80, 80, 60, 46, 46, # 46
550 46, 46, 46, 46, 46, 46, 46, 80, # 46
551 46, 46, 46, 46, 46, 46, 46, 46, # 46
552 40, 40, 46, 46, 46, 46, 81, 81, # 46
553 81, 81, 81, 81, 81, 81, 81, 81, # 46
554 46, 46, 46, 46, 46, 46, 46, 46, # 46
555 46, 46, 46, 46, 46, 46, 46, 46, # 46
556 46, 40, 40, 40, 40, 40, 40, 40, # 47
557 40, 40, 40, 40, 40, 40, 40, 40, # 47
558 40, 40, 40, 40, 40, 40, 40, 40, # 47
559 40, 40, 40, 40, 40, 40, 40, 40, # 47
560 40, 40, 40, 40, 40, 40, 40, 40, # 47
561 40, 40, 40, 40, 40, 40, 40, 3, # 47
562 40, 60, 40, 40, 60, 60, 60, 60, # 47
563 60, 60, 60, 46, 46, 46, 46, 4, # 47
564 40, 40, 40, 40, 40, 40, 59, 60, # 48
565 60, 60, 60, 60, 60, 60, 60, 15, # 48
566 9, 9, 9, 9, 9, 9, 9, 9, # 48
567 9, 9, 3, 3, 46, 46, 46, 46, # 48
568 46, 46, 46, 46, 46, 46, 46, 46, # 48
569 46, 46, 46, 46, 46, 46, 46, 46, # 48
570 46, 46, 46, 46, 46, 46, 46, 46, # 48
571 46, 46, 46, 46, 46, 46, 46, 46, # 48
572 46, 40, 40, 46, 40, 46, 46, 40, # 49
573 40, 46, 40, 46, 46, 40, 46, 46, # 49
574 46, 46, 46, 46, 40, 40, 40, 40, # 49
575 46, 40, 40, 40, 40, 40, 40, 40, # 49
576 46, 40, 40, 40, 46, 40, 46, 40, # 49
577 46, 46, 40, 40, 46, 40, 40, 3, # 49
578 40, 60, 40, 40, 60, 60, 60, 60, # 49
579 60, 60, 46, 60, 60, 40, 46, 46, # 49
580 40, 40, 40, 40, 40, 46, 59, 46, # 50
581 60, 60, 60, 60, 60, 60, 46, 46, # 50
582 9, 9, 9, 9, 9, 9, 9, 9, # 50
583 9, 9, 46, 46, 40, 40, 46, 46, # 50
584 46, 46, 46, 46, 46, 46, 46, 46, # 50
585 46, 46, 46, 46, 46, 46, 46, 46, # 50
586 46, 46, 46, 46, 46, 46, 46, 46, # 50
587 46, 46, 46, 46, 46, 46, 46, 46, # 50
588 15, 15, 15, 15, 3, 3, 3, 3, # 51
589 3, 3, 3, 3, 3, 3, 3, 3, # 51
590 3, 3, 3, 15, 15, 15, 15, 15, # 51
591 60, 60, 15, 15, 15, 15, 15, 15, # 51
592 78, 78, 78, 78, 78, 78, 78, 78, # 51
593 78, 78, 85, 85, 85, 85, 85, 85, # 51
594 85, 85, 85, 85, 15, 60, 15, 60, # 51
595 15, 60, 5, 6, 5, 6, 80, 80, # 51
596 40, 40, 40, 40, 40, 40, 40, 40, # 52
597 46, 40, 40, 40, 40, 40, 40, 40, # 52
598 40, 40, 40, 40, 40, 40, 40, 40, # 52
599 40, 40, 40, 40, 40, 40, 40, 40, # 52
600 40, 40, 40, 40, 40, 40, 40, 40, # 52
601 40, 40, 46, 46, 46, 46, 46, 46, # 52
602 46, 60, 60, 60, 60, 60, 60, 60, # 52
603 60, 60, 60, 60, 60, 60, 60, 80, # 52
604 60, 60, 60, 60, 60, 3, 60, 60, # 53
605 60, 60, 60, 60, 46, 46, 46, 46, # 53
606 60, 60, 60, 60, 60, 60, 46, 60, # 53
607 46, 60, 60, 60, 60, 60, 60, 60, # 53
608 60, 60, 60, 60, 60, 60, 60, 60, # 53
609 60, 60, 60, 60, 60, 60, 46, 46, # 53
610 46, 60, 60, 60, 60, 60, 60, 60, # 53
611 46, 60, 46, 46, 46, 46, 46, 46, # 53
612 46, 46, 46, 46, 46, 46, 46, 46, # 54
613 46, 46, 46, 46, 46, 46, 46, 46, # 54
614 46, 46, 46, 46, 46, 46, 46, 46, # 54
615 46, 46, 46, 46, 46, 46, 46, 46, # 54
616 76, 76, 76, 76, 76, 76, 76, 76, # 54
617 76, 76, 76, 76, 76, 76, 76, 76, # 54
618 76, 76, 76, 76, 76, 76, 76, 76, # 54
619 76, 76, 76, 76, 76, 76, 76, 76, # 54
620 76, 76, 76, 76, 76, 76, 46, 46, # 55
621 46, 46, 46, 46, 46, 46, 46, 46, # 55
622 16, 16, 16, 16, 16, 16, 16, 16, # 55
623 16, 16, 16, 16, 16, 16, 16, 16, # 55
624 16, 16, 16, 16, 16, 16, 16, 16, # 55
625 16, 16, 16, 16, 16, 16, 16, 16, # 55
626 16, 16, 16, 16, 16, 16, 16, 46, # 55
627 46, 46, 46, 3, 46, 46, 46, 46, # 55
628 40, 40, 40, 40, 40, 40, 40, 40, # 56
629 40, 40, 40, 40, 40, 40, 40, 40, # 56
630 40, 40, 40, 40, 40, 40, 40, 40, # 56
631 40, 40, 40, 40, 40, 40, 40, 40, # 56
632 40, 40, 40, 40, 40, 40, 40, 40, # 56
633 40, 40, 40, 40, 40, 40, 40, 40, # 56
634 40, 40, 40, 40, 40, 40, 40, 40, # 56
635 40, 40, 40, 40, 40, 40, 40, 40, # 56
636 40, 40, 40, 40, 40, 40, 40, 40, # 57
637 40, 40, 40, 40, 40, 40, 40, 40, # 57
638 40, 40, 40, 40, 40, 40, 40, 40, # 57
639 40, 40, 46, 46, 46, 46, 46, 40, # 57
640 40, 40, 40, 40, 40, 40, 40, 40, # 57
641 40, 40, 40, 40, 40, 40, 40, 40, # 57
642 40, 40, 40, 40, 40, 40, 40, 40, # 57
643 40, 40, 40, 40, 40, 40, 40, 40, # 57
644 40, 40, 40, 40, 40, 40, 40, 40, # 58
645 40, 40, 40, 40, 40, 40, 40, 40, # 58
646 40, 40, 40, 40, 40, 40, 40, 40, # 58
647 40, 40, 40, 40, 40, 40, 40, 40, # 58
648 40, 40, 40, 46, 46, 46, 46, 46, # 58
649 40, 40, 40, 40, 40, 40, 40, 40, # 58
650 40, 40, 40, 40, 40, 40, 40, 40, # 58
651 40, 40, 40, 40, 40, 40, 40, 40, # 58
652 40, 40, 40, 40, 40, 40, 40, 40, # 59
653 40, 40, 40, 40, 40, 40, 40, 40, # 59
654 40, 40, 40, 40, 40, 40, 40, 40, # 59
655 40, 40, 40, 40, 40, 40, 40, 40, # 59
656 40, 40, 40, 40, 40, 40, 40, 40, # 59
657 40, 40, 40, 40, 40, 40, 40, 40, # 59
658 40, 40, 40, 40, 40, 40, 40, 40, # 59
659 40, 40, 46, 46, 46, 46, 46, 46, # 59
660 23, 24, 23, 24, 23, 24, 23, 24, # 60
661 23, 24, 23, 24, 23, 24, 23, 24, # 60
662 23, 24, 23, 24, 23, 24, 23, 24, # 60
663 23, 24, 23, 24, 23, 24, 23, 24, # 60
664 23, 24, 23, 24, 23, 24, 23, 24, # 60
665 23, 24, 23, 24, 23, 24, 23, 24, # 60
666 23, 24, 23, 24, 23, 24, 23, 24, # 60
667 23, 24, 23, 24, 23, 24, 23, 24, # 60
668 23, 24, 23, 24, 23, 24, 23, 24, # 61
669 23, 24, 23, 24, 23, 24, 23, 24, # 61
670 23, 24, 23, 24, 23, 24, 16, 16, # 61
671 16, 16, 16, 16, 46, 46, 46, 46, # 61
672 23, 24, 23, 24, 23, 24, 23, 24, # 61
673 23, 24, 23, 24, 23, 24, 23, 24, # 61
674 23, 24, 23, 24, 23, 24, 23, 24, # 61
675 23, 24, 23, 24, 23, 24, 23, 24, # 61
676 23, 24, 23, 24, 23, 24, 23, 24, # 62
677 23, 24, 23, 24, 23, 24, 23, 24, # 62
678 23, 24, 23, 24, 23, 24, 23, 24, # 62
679 23, 24, 23, 24, 23, 24, 23, 24, # 62
680 23, 24, 23, 24, 23, 24, 23, 24, # 62
681 23, 24, 23, 24, 23, 24, 23, 24, # 62
682 23, 24, 23, 24, 23, 24, 23, 24, # 62
683 23, 24, 46, 46, 46, 46, 46, 46, # 62
684 86, 86, 86, 86, 86, 86, 86, 86, # 63
685 87, 87, 87, 87, 87, 87, 87, 87, # 63
686 86, 86, 86, 86, 86, 86, 46, 46, # 63
687 87, 87, 87, 87, 87, 87, 46, 46, # 63
688 86, 86, 86, 86, 86, 86, 86, 86, # 63
689 87, 87, 87, 87, 87, 87, 87, 87, # 63
690 86, 86, 86, 86, 86, 86, 86, 86, # 63
691 87, 87, 87, 87, 87, 87, 87, 87, # 63
692 86, 86, 86, 86, 86, 86, 46, 46, # 64
693 87, 87, 87, 87, 87, 87, 46, 46, # 64
694 16, 86, 16, 86, 16, 86, 16, 86, # 64
695 46, 87, 46, 87, 46, 87, 46, 87, # 64
696 86, 86, 86, 86, 86, 86, 86, 86, # 64
697 87, 87, 87, 87, 87, 87, 87, 87, # 64
698 88, 88, 89, 89, 89, 89, 90, 90, # 64
699 91, 91, 92, 92, 93, 93, 46, 46, # 64
700 86, 86, 86, 86, 86, 86, 86, 86, # 65
701 87, 87, 87, 87, 87, 87, 87, 87, # 65
702 86, 86, 86, 86, 86, 86, 86, 86, # 65
703 87, 87, 87, 87, 87, 87, 87, 87, # 65
704 86, 86, 86, 86, 86, 86, 86, 86, # 65
705 87, 87, 87, 87, 87, 87, 87, 87, # 65
706 86, 86, 16, 94, 16, 46, 16, 16, # 65
707 87, 87, 95, 95, 96, 11, 38, 11, # 65
708 11, 11, 16, 94, 16, 46, 16, 16, # 66
709 97, 97, 97, 97, 96, 11, 11, 11, # 66
710 86, 86, 16, 16, 46, 46, 16, 16, # 66
711 87, 87, 98, 98, 46, 11, 11, 11, # 66
712 86, 86, 16, 16, 16, 99, 16, 16, # 66
713 87, 87, 100, 100, 101, 11, 11, 11, # 66
714 46, 46, 16, 94, 16, 46, 16, 16, # 66
715 102, 102, 103, 103, 96, 11, 11, 46, # 66
716 2, 2, 2, 2, 2, 2, 2, 2, # 67
717 2, 2, 2, 2, 104, 104, 104, 104, # 67
718 8, 8, 8, 8, 8, 8, 3, 3, # 67
719 5, 6, 5, 5, 5, 6, 5, 5, # 67
720 3, 3, 3, 3, 3, 3, 3, 3, # 67
721 105, 106, 104, 104, 104, 104, 104, 46, # 67
722 3, 3, 3, 3, 3, 3, 3, 3, # 67
723 3, 5, 6, 3, 3, 3, 3, 12, # 67
724 12, 3, 3, 3, 7, 5, 6, 46, # 68
725 46, 46, 46, 46, 46, 46, 46, 46, # 68
726 46, 46, 46, 46, 46, 46, 46, 46, # 68
727 46, 46, 46, 46, 46, 46, 46, 46, # 68
728 46, 46, 46, 46, 46, 46, 46, 46, # 68
729 46, 46, 104, 104, 104, 104, 104, 104, # 68
730 17, 46, 46, 46, 17, 17, 17, 17, # 68
731 17, 17, 7, 7, 7, 5, 6, 16, # 68
732 107, 107, 107, 107, 107, 107, 107, 107, # 69
733 107, 107, 7, 7, 7, 5, 6, 46, # 69
734 46, 46, 46, 46, 46, 46, 46, 46, # 69
735 46, 46, 46, 46, 46, 46, 46, 46, # 69
736 4, 4, 4, 4, 4, 4, 4, 4, # 69
737 4, 4, 4, 4, 46, 46, 46, 46, # 69
738 46, 46, 46, 46, 46, 46, 46, 46, # 69
739 46, 46, 46, 46, 46, 46, 46, 46, # 69
740 46, 46, 46, 46, 46, 46, 46, 46, # 70
741 46, 46, 46, 46, 46, 46, 46, 46, # 70
742 60, 60, 60, 60, 60, 60, 60, 60, # 70
743 60, 60, 60, 60, 60, 79, 79, 79, # 70
744 79, 60, 46, 46, 46, 46, 46, 46, # 70
745 46, 46, 46, 46, 46, 46, 46, 46, # 70
746 46, 46, 46, 46, 46, 46, 46, 46, # 70
747 46, 46, 46, 46, 46, 46, 46, 46, # 70
748 15, 15, 38, 15, 15, 15, 15, 38, # 71
749 15, 15, 16, 38, 38, 38, 16, 16, # 71
750 38, 38, 38, 16, 15, 38, 15, 15, # 71
751 38, 38, 38, 38, 38, 38, 15, 15, # 71
752 15, 15, 15, 15, 38, 15, 38, 15, # 71
753 38, 15, 38, 38, 38, 38, 16, 16, # 71
754 38, 38, 15, 38, 16, 40, 40, 40, # 71
755 40, 46, 46, 46, 46, 46, 46, 46, # 71
756 46, 46, 46, 46, 46, 46, 46, 46, # 72
757 46, 46, 46, 46, 46, 46, 46, 46, # 72
758 46, 46, 46, 19, 19, 19, 19, 19, # 72
759 19, 19, 19, 19, 19, 19, 19, 108, # 72
760 109, 109, 109, 109, 109, 109, 109, 109, # 72
761 109, 109, 109, 109, 110, 110, 110, 110, # 72
762 111, 111, 111, 111, 111, 111, 111, 111, # 72
763 111, 111, 111, 111, 112, 112, 112, 112, # 72
764 113, 113, 113, 46, 46, 46, 46, 46, # 73
765 46, 46, 46, 46, 46, 46, 46, 46, # 73
766 7, 7, 7, 7, 7, 15, 15, 15, # 73
767 15, 15, 15, 15, 15, 15, 15, 15, # 73
768 15, 15, 15, 15, 15, 15, 15, 15, # 73
769 15, 15, 15, 15, 15, 15, 15, 15, # 73
770 15, 15, 15, 15, 15, 15, 15, 15, # 73
771 15, 15, 15, 15, 15, 15, 15, 15, # 73
772 15, 15, 15, 15, 15, 15, 15, 15, # 74
773 15, 15, 15, 15, 15, 15, 15, 15, # 74
774 15, 15, 7, 15, 7, 15, 15, 15, # 74
775 15, 15, 15, 15, 15, 15, 15, 15, # 74
776 15, 15, 15, 15, 15, 15, 15, 15, # 74
777 15, 15, 15, 46, 46, 46, 46, 46, # 74
778 46, 46, 46, 46, 46, 46, 46, 46, # 74
779 46, 46, 46, 46, 46, 46, 46, 46, # 74
780 7, 7, 7, 7, 7, 7, 7, 7, # 75
781 7, 7, 7, 7, 7, 7, 7, 7, # 75
782 7, 7, 7, 7, 7, 7, 7, 7, # 75
783 7, 7, 7, 7, 7, 7, 7, 7, # 75
784 7, 7, 7, 7, 7, 7, 7, 7, # 75
785 7, 7, 7, 7, 7, 7, 7, 7, # 75
786 7, 7, 7, 7, 7, 7, 7, 7, # 75
787 7, 7, 7, 7, 7, 7, 7, 7, # 75
788 7, 7, 7, 7, 7, 7, 7, 7, # 76
789 7, 7, 7, 7, 7, 7, 7, 7, # 76
790 7, 7, 7, 7, 7, 7, 7, 7, # 76
791 7, 7, 7, 7, 7, 7, 7, 7, # 76
792 7, 7, 7, 7, 7, 7, 7, 7, # 76
793 7, 7, 7, 7, 7, 7, 7, 7, # 76
794 7, 7, 46, 46, 46, 46, 46, 46, # 76
795 46, 46, 46, 46, 46, 46, 46, 46, # 76
796 15, 46, 15, 15, 15, 15, 15, 15, # 77
797 7, 7, 7, 7, 15, 15, 15, 15, # 77
798 15, 15, 15, 15, 15, 15, 15, 15, # 77
799 15, 15, 15, 15, 15, 15, 15, 15, # 77
800 7, 7, 15, 15, 15, 15, 15, 15, # 77
801 15, 5, 6, 15, 15, 15, 15, 15, # 77
802 15, 15, 15, 15, 15, 15, 15, 15, # 77
803 15, 15, 15, 15, 15, 15, 15, 15, # 77
804 15, 15, 15, 15, 15, 15, 15, 15, # 78
805 15, 15, 15, 15, 15, 15, 15, 15, # 78
806 15, 15, 15, 15, 15, 15, 15, 15, # 78
807 15, 15, 15, 15, 15, 15, 15, 15, # 78
808 15, 15, 15, 15, 15, 15, 15, 15, # 78
809 15, 15, 15, 15, 15, 15, 15, 15, # 78
810 15, 15, 15, 15, 15, 15, 15, 15, # 78
811 15, 15, 15, 46, 46, 46, 46, 46, # 78
812 15, 15, 15, 15, 15, 15, 15, 15, # 79
813 15, 15, 15, 15, 15, 15, 15, 15, # 79
814 15, 15, 15, 15, 15, 15, 15, 15, # 79
815 15, 15, 15, 15, 15, 15, 15, 15, # 79
816 15, 15, 15, 15, 15, 46, 46, 46, # 79
817 46, 46, 46, 46, 46, 46, 46, 46, # 79
818 46, 46, 46, 46, 46, 46, 46, 46, # 79
819 46, 46, 46, 46, 46, 46, 46, 46, # 79
820 15, 15, 15, 15, 15, 15, 15, 15, # 80
821 15, 15, 15, 46, 46, 46, 46, 46, # 80
822 46, 46, 46, 46, 46, 46, 46, 46, # 80
823 46, 46, 46, 46, 46, 46, 46, 46, # 80
824 114, 114, 114, 114, 114, 114, 114, 114, # 80
825 114, 114, 114, 114, 114, 114, 114, 114, # 80
826 114, 114, 114, 114, 82, 82, 82, 82, # 80
827 82, 82, 82, 82, 82, 82, 82, 82, # 80
828 82, 82, 82, 82, 82, 82, 82, 82, # 81
829 115, 115, 115, 115, 115, 115, 115, 115, # 81
830 115, 115, 115, 115, 115, 115, 115, 115, # 81
831 115, 115, 115, 115, 15, 15, 15, 15, # 81
832 15, 15, 15, 15, 15, 15, 15, 15, # 81
833 15, 15, 15, 15, 15, 15, 15, 15, # 81
834 15, 15, 15, 15, 15, 15, 116, 116, # 81
835 116, 116, 116, 116, 116, 116, 116, 116, # 81
836 116, 116, 116, 116, 116, 116, 116, 116, # 82
837 116, 116, 116, 116, 116, 116, 116, 116, # 82
838 117, 117, 117, 117, 117, 117, 117, 117, # 82
839 117, 117, 117, 117, 117, 117, 117, 117, # 82
840 117, 117, 117, 117, 117, 117, 117, 117, # 82
841 117, 117, 118, 46, 46, 46, 46, 46, # 82
842 46, 46, 46, 46, 46, 46, 46, 46, # 82
843 46, 46, 46, 46, 46, 46, 46, 46, # 82
844 15, 15, 15, 15, 15, 15, 15, 15, # 83
845 15, 15, 15, 15, 15, 15, 15, 15, # 83
846 15, 15, 15, 15, 15, 15, 15, 15, # 83
847 15, 15, 15, 15, 15, 15, 15, 15, # 83
848 15, 15, 15, 15, 15, 15, 15, 15, # 83
849 15, 15, 15, 15, 15, 15, 15, 15, # 83
850 15, 15, 15, 15, 15, 15, 15, 15, # 83
851 15, 15, 15, 15, 15, 15, 15, 15, # 83
852 15, 15, 15, 15, 15, 15, 15, 15, # 84
853 15, 15, 15, 15, 15, 15, 15, 15, # 84
854 15, 15, 15, 15, 15, 15, 46, 46, # 84
855 46, 46, 46, 46, 46, 46, 46, 46, # 84
856 15, 15, 15, 15, 15, 15, 15, 15, # 84
857 15, 15, 15, 15, 15, 15, 15, 15, # 84
858 15, 15, 15, 15, 15, 15, 15, 15, # 84
859 15, 15, 15, 15, 15, 15, 15, 15, # 84
860 15, 15, 15, 15, 15, 15, 15, 15, # 85
861 15, 15, 15, 15, 15, 15, 15, 15, # 85
862 15, 15, 15, 15, 15, 15, 15, 15, # 85
863 15, 15, 15, 15, 15, 15, 15, 15, # 85
864 15, 15, 15, 15, 15, 15, 15, 15, # 85
865 15, 15, 15, 15, 15, 15, 15, 15, # 85
866 46, 46, 46, 46, 46, 46, 46, 46, # 85
867 46, 46, 46, 46, 46, 46, 46, 46, # 85
868 15, 15, 15, 15, 15, 15, 15, 15, # 86
869 15, 15, 15, 15, 15, 15, 15, 15, # 86
870 15, 15, 15, 15, 46, 46, 46, 46, # 86
871 46, 46, 15, 15, 15, 15, 15, 15, # 86
872 15, 15, 15, 15, 15, 15, 15, 15, # 86
873 15, 15, 15, 15, 15, 15, 15, 15, # 86
874 15, 15, 15, 15, 15, 15, 15, 15, # 86
875 15, 15, 15, 15, 15, 15, 15, 15, # 86
876 46, 15, 15, 15, 15, 46, 15, 15, # 87
877 15, 15, 46, 46, 15, 15, 15, 15, # 87
878 15, 15, 15, 15, 15, 15, 15, 15, # 87
879 15, 15, 15, 15, 15, 15, 15, 15, # 87
880 15, 15, 15, 15, 15, 15, 15, 15, # 87
881 46, 15, 15, 15, 15, 15, 15, 15, # 87
882 15, 15, 15, 15, 15, 15, 15, 15, # 87
883 15, 15, 15, 15, 15, 15, 15, 15, # 87
884 15, 15, 15, 15, 15, 15, 15, 15, # 88
885 15, 15, 15, 15, 46, 15, 46, 15, # 88
886 15, 15, 15, 46, 46, 46, 15, 46, # 88
887 15, 15, 15, 15, 15, 15, 15, 46, # 88
888 46, 15, 15, 15, 15, 15, 15, 15, # 88
889 46, 46, 46, 46, 46, 46, 46, 46, # 88
890 46, 46, 46, 46, 46, 46, 119, 119, # 88
891 119, 119, 119, 119, 119, 119, 119, 119, # 88
892 114, 114, 114, 114, 114, 114, 114, 114, # 89
893 114, 114, 83, 83, 83, 83, 83, 83, # 89
894 83, 83, 83, 83, 15, 46, 46, 46, # 89
895 15, 15, 15, 15, 15, 15, 15, 15, # 89
896 15, 15, 15, 15, 15, 15, 15, 15, # 89
897 15, 15, 15, 15, 15, 15, 15, 15, # 89
898 46, 15, 15, 15, 15, 15, 15, 15, # 89
899 15, 15, 15, 15, 15, 15, 15, 46, # 89
900 2, 3, 3, 3, 15, 59, 3, 120, # 90
901 5, 6, 5, 6, 5, 6, 5, 6, # 90
902 5, 6, 15, 15, 5, 6, 5, 6, # 90
903 5, 6, 5, 6, 8, 5, 6, 5, # 90
904 15, 121, 121, 121, 121, 121, 121, 121, # 90
905 121, 121, 60, 60, 60, 60, 60, 60, # 90
906 8, 59, 59, 59, 59, 59, 15, 15, # 90
907 46, 46, 46, 46, 46, 46, 46, 15, # 90
908 46, 40, 40, 40, 40, 40, 40, 40, # 91
909 40, 40, 40, 40, 40, 40, 40, 40, # 91
910 40, 40, 40, 40, 40, 40, 40, 40, # 91
911 40, 40, 40, 40, 40, 40, 40, 40, # 91
912 40, 40, 40, 40, 40, 40, 40, 40, # 91
913 40, 40, 40, 40, 40, 40, 40, 40, # 91
914 40, 40, 40, 40, 40, 40, 40, 40, # 91
915 40, 40, 40, 40, 40, 40, 40, 40, # 91
916 40, 40, 40, 40, 40, 40, 40, 40, # 92
917 40, 40, 40, 40, 40, 40, 40, 40, # 92
918 40, 40, 40, 40, 40, 46, 46, 46, # 92
919 46, 60, 60, 59, 59, 59, 59, 46, # 92
920 46, 40, 40, 40, 40, 40, 40, 40, # 92
921 40, 40, 40, 40, 40, 40, 40, 40, # 92
922 40, 40, 40, 40, 40, 40, 40, 40, # 92
923 40, 40, 40, 40, 40, 40, 40, 40, # 92
924 40, 40, 40, 40, 40, 40, 40, 40, # 93
925 40, 40, 40, 40, 40, 40, 40, 40, # 93
926 40, 40, 40, 40, 40, 40, 40, 40, # 93
927 40, 40, 40, 40, 40, 40, 40, 40, # 93
928 40, 40, 40, 40, 40, 40, 40, 40, # 93
929 40, 40, 40, 40, 40, 40, 40, 40, # 93
930 40, 40, 40, 40, 40, 40, 40, 40, # 93
931 40, 40, 40, 3, 59, 59, 59, 46, # 93
932 46, 46, 46, 46, 46, 40, 40, 40, # 94
933 40, 40, 40, 40, 40, 40, 40, 40, # 94
934 40, 40, 40, 40, 40, 40, 40, 40, # 94
935 40, 40, 40, 40, 40, 40, 40, 40, # 94
936 40, 40, 40, 40, 40, 40, 40, 40, # 94
937 40, 40, 40, 40, 40, 46, 46, 46, # 94
938 46, 40, 40, 40, 40, 40, 40, 40, # 94
939 40, 40, 40, 40, 40, 40, 40, 40, # 94
940 40, 40, 40, 40, 40, 40, 40, 40, # 95
941 40, 40, 40, 40, 40, 40, 40, 46, # 95
942 15, 15, 85, 85, 85, 85, 15, 15, # 95
943 15, 15, 15, 15, 15, 15, 15, 15, # 95
944 46, 46, 46, 46, 46, 46, 46, 46, # 95
945 46, 46, 46, 46, 46, 46, 46, 46, # 95
946 46, 46, 46, 46, 46, 46, 46, 46, # 95
947 46, 46, 46, 46, 46, 46, 46, 46, # 95
948 15, 15, 15, 15, 15, 15, 15, 15, # 96
949 15, 15, 15, 15, 15, 15, 15, 15, # 96
950 15, 15, 15, 15, 15, 15, 15, 15, # 96
951 15, 15, 15, 15, 15, 46, 46, 46, # 96
952 85, 85, 85, 85, 85, 85, 85, 85, # 96
953 85, 85, 15, 15, 15, 15, 15, 15, # 96
954 15, 15, 15, 15, 15, 15, 15, 15, # 96
955 15, 15, 15, 15, 15, 15, 15, 15, # 96
956 15, 15, 15, 15, 46, 46, 46, 46, # 97
957 46, 46, 46, 46, 46, 46, 46, 46, # 97
958 46, 46, 46, 46, 46, 46, 46, 46, # 97
959 46, 46, 46, 46, 46, 46, 46, 46, # 97
960 15, 15, 15, 15, 15, 15, 15, 15, # 97
961 15, 15, 15, 15, 15, 15, 15, 15, # 97
962 15, 15, 15, 15, 15, 15, 15, 15, # 97
963 15, 15, 15, 15, 46, 46, 46, 15, # 97
964 114, 114, 114, 114, 114, 114, 114, 114, # 98
965 114, 114, 15, 15, 15, 15, 15, 15, # 98
966 15, 15, 15, 15, 15, 15, 15, 15, # 98
967 15, 15, 15, 15, 15, 15, 15, 15, # 98
968 15, 15, 15, 15, 15, 15, 15, 15, # 98
969 15, 15, 15, 15, 15, 15, 15, 15, # 98
970 15, 46, 46, 46, 46, 46, 46, 46, # 98
971 46, 46, 46, 46, 46, 46, 46, 46, # 98
972 15, 15, 15, 15, 15, 15, 15, 15, # 99
973 15, 15, 15, 15, 46, 46, 46, 46, # 99
974 15, 15, 15, 15, 15, 15, 15, 15, # 99
975 15, 15, 15, 15, 15, 15, 15, 15, # 99
976 15, 15, 15, 15, 15, 15, 15, 15, # 99
977 15, 15, 15, 15, 15, 15, 15, 15, # 99
978 15, 15, 15, 15, 15, 15, 15, 15, # 99
979 15, 15, 15, 15, 15, 15, 15, 46, # 99
980 15, 15, 15, 15, 15, 15, 15, 15, # 100
981 15, 15, 15, 15, 15, 15, 15, 15, # 100
982 15, 15, 15, 15, 15, 15, 15, 15, # 100
983 15, 15, 15, 15, 15, 15, 15, 15, # 100
984 15, 15, 15, 15, 15, 15, 15, 15, # 100
985 15, 15, 15, 15, 15, 15, 15, 15, # 100
986 15, 15, 15, 15, 15, 15, 15, 46, # 100
987 46, 46, 46, 15, 15, 15, 15, 15, # 100
988 15, 15, 15, 15, 15, 15, 15, 15, # 101
989 15, 15, 15, 15, 15, 15, 15, 15, # 101
990 15, 15, 15, 15, 15, 15, 15, 15, # 101
991 15, 15, 15, 15, 15, 15, 46, 46, # 101
992 15, 15, 15, 15, 15, 15, 15, 15, # 101
993 15, 15, 15, 15, 15, 15, 15, 15, # 101
994 15, 15, 15, 15, 15, 15, 15, 15, # 101
995 15, 15, 15, 15, 15, 15, 15, 46, # 101
996 40, 40, 40, 40, 40, 40, 40, 40, # 102
997 40, 40, 40, 40, 40, 40, 40, 40, # 102
998 40, 40, 40, 40, 40, 40, 40, 40, # 102
999 40, 40, 40, 40, 40, 40, 40, 40, # 102
1000 40, 40, 40, 40, 40, 40, 46, 46, # 102
1001 46, 46, 46, 46, 46, 46, 46, 46, # 102
1002 46, 46, 46, 46, 46, 46, 46, 46, # 102
1003 46, 46, 46, 46, 46, 46, 46, 46, # 102
1004 40, 40, 40, 40, 40, 40, 40, 40, # 103
1005 40, 40, 40, 40, 40, 40, 40, 40, # 103
1006 40, 40, 40, 40, 40, 40, 40, 40, # 103
1007 40, 40, 40, 40, 40, 40, 40, 40, # 103
1008 40, 40, 40, 40, 46, 46, 46, 46, # 103
1009 46, 46, 46, 46, 46, 46, 46, 46, # 103
1010 46, 46, 46, 46, 46, 46, 46, 46, # 103
1011 46, 46, 46, 46, 46, 46, 46, 46, # 103
1012 122, 122, 122, 122, 122, 122, 122, 122, # 104
1013 122, 122, 122, 122, 122, 122, 122, 122, # 104
1014 122, 122, 122, 122, 122, 122, 122, 122, # 104
1015 122, 122, 122, 122, 122, 122, 122, 122, # 104
1016 122, 122, 122, 122, 122, 122, 122, 122, # 104
1017 122, 122, 122, 122, 122, 122, 122, 122, # 104
1018 122, 122, 122, 122, 122, 122, 122, 122, # 104
1019 122, 122, 122, 122, 122, 122, 122, 122, # 104
1020 123, 123, 123, 123, 123, 123, 123, 123, # 105
1021 123, 123, 123, 123, 123, 123, 123, 123, # 105
1022 123, 123, 123, 123, 123, 123, 123, 123, # 105
1023 123, 123, 123, 123, 123, 123, 123, 123, # 105
1024 123, 123, 123, 123, 123, 123, 123, 123, # 105
1025 123, 123, 123, 123, 123, 123, 123, 123, # 105
1026 123, 123, 123, 123, 123, 123, 123, 123, # 105
1027 123, 123, 123, 123, 123, 123, 123, 123, # 105
1028 40, 40, 40, 40, 40, 40, 40, 40, # 106
1029 40, 40, 40, 40, 40, 40, 40, 40, # 106
1030 40, 40, 40, 40, 40, 40, 40, 40, # 106
1031 40, 40, 40, 40, 40, 40, 40, 40, # 106
1032 40, 40, 40, 40, 40, 40, 40, 40, # 106
1033 40, 40, 40, 40, 40, 40, 46, 46, # 106
1034 46, 46, 46, 46, 46, 46, 46, 46, # 106
1035 46, 46, 46, 46, 46, 46, 46, 46, # 106
1036 16, 16, 16, 16, 16, 16, 16, 46, # 107
1037 46, 46, 46, 46, 46, 46, 46, 46, # 107
1038 46, 46, 46, 16, 16, 16, 16, 16, # 107
1039 46, 46, 46, 46, 46, 46, 60, 40, # 107
1040 40, 40, 40, 40, 40, 40, 40, 40, # 107
1041 40, 7, 40, 40, 40, 40, 40, 40, # 107
1042 40, 40, 40, 40, 40, 40, 40, 46, # 107
1043 40, 40, 40, 40, 40, 46, 40, 46, # 107
1044 40, 40, 46, 40, 40, 46, 40, 40, # 108
1045 40, 40, 40, 40, 40, 40, 40, 40, # 108
1046 40, 40, 40, 40, 40, 40, 40, 40, # 108
1047 40, 40, 40, 40, 40, 40, 40, 40, # 108
1048 40, 40, 40, 40, 40, 40, 40, 40, # 108
1049 40, 40, 40, 40, 40, 40, 40, 40, # 108
1050 40, 40, 40, 40, 40, 40, 40, 40, # 108
1051 40, 40, 40, 40, 40, 40, 40, 40, # 108
1052 40, 40, 40, 40, 40, 40, 40, 40, # 109
1053 40, 40, 40, 40, 40, 40, 40, 40, # 109
1054 40, 40, 40, 40, 40, 40, 40, 40, # 109
1055 40, 40, 40, 40, 40, 40, 40, 40, # 109
1056 40, 40, 40, 40, 40, 40, 40, 40, # 109
1057 40, 40, 40, 40, 40, 40, 40, 40, # 109
1058 40, 40, 46, 46, 46, 46, 46, 46, # 109
1059 46, 46, 46, 46, 46, 46, 46, 46, # 109
1060 46, 46, 46, 46, 46, 46, 46, 46, # 110
1061 46, 46, 46, 46, 46, 46, 46, 46, # 110
1062 46, 46, 46, 40, 40, 40, 40, 40, # 110
1063 40, 40, 40, 40, 40, 40, 40, 40, # 110
1064 40, 40, 40, 40, 40, 40, 40, 40, # 110
1065 40, 40, 40, 40, 40, 40, 40, 40, # 110
1066 40, 40, 40, 40, 40, 40, 40, 40, # 110
1067 40, 40, 40, 40, 40, 40, 40, 40, # 110
1068 40, 40, 40, 40, 40, 40, 40, 40, # 111
1069 40, 40, 40, 40, 40, 40, 40, 40, # 111
1070 40, 40, 40, 40, 40, 40, 40, 40, # 111
1071 40, 40, 40, 40, 40, 40, 40, 40, # 111
1072 40, 40, 40, 40, 40, 40, 40, 40, # 111
1073 40, 40, 40, 40, 40, 40, 40, 40, # 111
1074 40, 40, 40, 40, 40, 40, 40, 40, # 111
1075 40, 40, 40, 40, 40, 40, 5, 6, # 111
1076 46, 46, 46, 46, 46, 46, 46, 46, # 112
1077 46, 46, 46, 46, 46, 46, 46, 46, # 112
1078 40, 40, 40, 40, 40, 40, 40, 40, # 112
1079 40, 40, 40, 40, 40, 40, 40, 40, # 112
1080 40, 40, 40, 40, 40, 40, 40, 40, # 112
1081 40, 40, 40, 40, 40, 40, 40, 40, # 112
1082 40, 40, 40, 40, 40, 40, 40, 40, # 112
1083 40, 40, 40, 40, 40, 40, 40, 40, # 112
1084 40, 40, 40, 40, 40, 40, 40, 40, # 113
1085 40, 40, 40, 40, 40, 40, 40, 40, # 113
1086 46, 46, 40, 40, 40, 40, 40, 40, # 113
1087 40, 40, 40, 40, 40, 40, 40, 40, # 113
1088 40, 40, 40, 40, 40, 40, 40, 40, # 113
1089 40, 40, 40, 40, 40, 40, 40, 40, # 113
1090 40, 40, 40, 40, 40, 40, 40, 40, # 113
1091 40, 40, 40, 40, 40, 40, 40, 40, # 113
1092 40, 40, 40, 40, 40, 40, 40, 40, # 114
1093 46, 46, 46, 46, 46, 46, 46, 46, # 114
1094 46, 46, 46, 46, 46, 46, 46, 46, # 114
1095 46, 46, 46, 46, 46, 46, 46, 46, # 114
1096 46, 46, 46, 46, 46, 46, 46, 46, # 114
1097 46, 46, 46, 46, 46, 46, 46, 46, # 114
1098 40, 40, 40, 40, 40, 40, 40, 40, # 114
1099 40, 40, 40, 40, 46, 46, 46, 46, # 114
1100 46, 46, 46, 46, 46, 46, 46, 46, # 115
1101 46, 46, 46, 46, 46, 46, 46, 46, # 115
1102 46, 46, 46, 46, 46, 46, 46, 46, # 115
1103 46, 46, 46, 46, 46, 46, 46, 46, # 115
1104 60, 60, 60, 60, 46, 46, 46, 46, # 115
1105 46, 46, 46, 46, 46, 46, 46, 46, # 115
1106 3, 8, 8, 12, 12, 5, 6, 5, # 115
1107 6, 5, 6, 5, 6, 5, 6, 5, # 115
1108 6, 5, 6, 5, 6, 46, 46, 46, # 116
1109 46, 3, 3, 3, 3, 12, 12, 12, # 116
1110 3, 3, 3, 46, 3, 3, 3, 3, # 116
1111 8, 5, 6, 5, 6, 5, 6, 3, # 116
1112 3, 3, 7, 8, 7, 7, 7, 46, # 116
1113 3, 4, 3, 3, 46, 46, 46, 46, # 116
1114 40, 40, 40, 46, 40, 46, 40, 40, # 116
1115 40, 40, 40, 40, 40, 40, 40, 40, # 116
1116 40, 40, 40, 40, 40, 40, 40, 40, # 117
1117 40, 40, 40, 40, 40, 40, 40, 40, # 117
1118 40, 40, 40, 40, 40, 40, 40, 40, # 117
1119 40, 40, 40, 40, 40, 40, 40, 40, # 117
1120 40, 40, 40, 40, 40, 40, 40, 40, # 117
1121 40, 40, 40, 40, 40, 40, 40, 40, # 117
1122 40, 40, 40, 40, 40, 40, 40, 40, # 117
1123 40, 40, 40, 40, 40, 46, 46, 104, # 117
1124 46, 3, 3, 3, 4, 3, 3, 3, # 118
1125 5, 6, 3, 7, 3, 8, 3, 3, # 118
1126 9, 9, 9, 9, 9, 9, 9, 9, # 118
1127 9, 9, 3, 3, 7, 7, 7, 3, # 118
1128 3, 10, 10, 10, 10, 10, 10, 10, # 118
1129 10, 10, 10, 10, 10, 10, 10, 10, # 118
1130 10, 10, 10, 10, 10, 10, 10, 10, # 118
1131 10, 10, 10, 5, 3, 6, 11, 12, # 118
1132 11, 13, 13, 13, 13, 13, 13, 13, # 119
1133 13, 13, 13, 13, 13, 13, 13, 13, # 119
1134 13, 13, 13, 13, 13, 13, 13, 13, # 119
1135 13, 13, 13, 5, 7, 6, 7, 46, # 119
1136 46, 3, 5, 6, 3, 3, 40, 40, # 119
1137 40, 40, 40, 40, 40, 40, 40, 40, # 119
1138 59, 40, 40, 40, 40, 40, 40, 40, # 119
1139 40, 40, 40, 40, 40, 40, 40, 40, # 119
1140 40, 40, 40, 40, 40, 40, 40, 40, # 120
1141 40, 40, 40, 40, 40, 40, 40, 40, # 120
1142 40, 40, 40, 40, 40, 40, 40, 40, # 120
1143 40, 40, 40, 40, 40, 40, 59, 59, # 120
1144 40, 40, 40, 40, 40, 40, 40, 40, # 120
1145 40, 40, 40, 40, 40, 40, 40, 40, # 120
1146 40, 40, 40, 40, 40, 40, 40, 40, # 120
1147 40, 40, 40, 40, 40, 40, 40, 46, # 120
1148 46, 46, 40, 40, 40, 40, 40, 40, # 121
1149 46, 46, 40, 40, 40, 40, 40, 40, # 121
1150 46, 46, 40, 40, 40, 40, 40, 40, # 121
1151 46, 46, 40, 40, 40, 46, 46, 46, # 121
1152 4, 4, 7, 11, 15, 4, 4, 46, # 121
1153 7, 7, 7, 7, 7, 15, 15, 46, # 121
1154 46, 46, 46, 46, 46, 46, 46, 46, # 121
1155 46, 46, 46, 46, 46, 15, 46, 46 # 121
1156 };
1157
1158# The A table has 124 entries for a total of 496 bytes.
1159
1160A = array[] of {
1161 16r0001000F, # 0 Cc, ignorable
1162 16r0004000F, # 1 Cc, whitespace
1163 16r0004000C, # 2 Zs, whitespace
1164 16r00000018, # 3 Po
1165 16r0006001A, # 4 Sc, currency
1166 16r00000015, # 5 Ps
1167 16r00000016, # 6 Pe
1168 16r00000019, # 7 Sm
1169 16r00000014, # 8 Pd
1170 16r00036009, # 9 Nd, identifier part, decimal 16
1171 16r0827FE01, # 10 Lu, hasLower (add 32), identifier start, supradecimal 31
1172 16r0000001B, # 11 Sk
1173 16r00050017, # 12 Pc, underscore
1174 16r0817FE02, # 13 Ll, hasUpper (subtract 32), identifier start, supradecimal 31
1175 16r0000000C, # 14 Zs
1176 16r0000001C, # 15 So
1177 16r00070002, # 16 Ll, identifier start
1178 16r0000600B, # 17 No, decimal 16
1179 16r0000500B, # 18 No, decimal 8
1180 16r0000800B, # 19 No, strange
1181 16r08270001, # 20 Lu, hasLower (add 32), identifier start
1182 16r08170002, # 21 Ll, hasUpper (subtract 32), identifier start
1183 int 16rE1D70002, # 22 Ll, hasUpper (subtract -121), identifier start
1184 16r00670001, # 23 Lu, hasLower (add 1), identifier start
1185 16r00570002, # 24 Ll, hasUpper (subtract 1), identifier start
1186 int 16rCE670001, # 25 Lu, hasLower (add -199), identifier start
1187 16r3A170002, # 26 Ll, hasUpper (subtract 232), identifier start
1188 int 16rE1E70001, # 27 Lu, hasLower (add -121), identifier start
1189 16r4B170002, # 28 Ll, hasUpper (subtract 300), identifier start
1190 16r34A70001, # 29 Lu, hasLower (add 210), identifier start
1191 16r33A70001, # 30 Lu, hasLower (add 206), identifier start
1192 16r33670001, # 31 Lu, hasLower (add 205), identifier start
1193 16r32A70001, # 32 Lu, hasLower (add 202), identifier start
1194 16r32E70001, # 33 Lu, hasLower (add 203), identifier start
1195 16r33E70001, # 34 Lu, hasLower (add 207), identifier start
1196 16r34E70001, # 35 Lu, hasLower (add 211), identifier start
1197 16r34670001, # 36 Lu, hasLower (add 209), identifier start
1198 16r35670001, # 37 Lu, hasLower (add 213), identifier start
1199 16r00070001, # 38 Lu, identifier start
1200 16r36A70001, # 39 Lu, hasLower (add 218), identifier start
1201 16r00070005, # 40 Lo, identifier start
1202 16r36670001, # 41 Lu, hasLower (add 217), identifier start
1203 16r36E70001, # 42 Lu, hasLower (add 219), identifier start
1204 16r00AF0001, # 43 Lu, hasLower (add 2), hasTitle, identifier start
1205 16r007F0003, # 44 Lt, hasUpper (subtract 1), hasLower (add 1), hasTitle, identifier start
1206 16r009F0002, # 45 Ll, hasUpper (subtract 2), hasTitle, identifier start
1207 16r00000000, # 46 unassigned
1208 16r34970002, # 47 Ll, hasUpper (subtract 210), identifier start
1209 16r33970002, # 48 Ll, hasUpper (subtract 206), identifier start
1210 16r33570002, # 49 Ll, hasUpper (subtract 205), identifier start
1211 16r32970002, # 50 Ll, hasUpper (subtract 202), identifier start
1212 16r32D70002, # 51 Ll, hasUpper (subtract 203), identifier start
1213 16r33D70002, # 52 Ll, hasUpper (subtract 207), identifier start
1214 16r34570002, # 53 Ll, hasUpper (subtract 209), identifier start
1215 16r34D70002, # 54 Ll, hasUpper (subtract 211), identifier start
1216 16r35570002, # 55 Ll, hasUpper (subtract 213), identifier start
1217 16r36970002, # 56 Ll, hasUpper (subtract 218), identifier start
1218 16r36570002, # 57 Ll, hasUpper (subtract 217), identifier start
1219 16r36D70002, # 58 Ll, hasUpper (subtract 219), identifier start
1220 16r00070004, # 59 Lm, identifier start
1221 16r00030006, # 60 Mn, identifier part
1222 16r09A70001, # 61 Lu, hasLower (add 38), identifier start
1223 16r09670001, # 62 Lu, hasLower (add 37), identifier start
1224 16r10270001, # 63 Lu, hasLower (add 64), identifier start
1225 16r0FE70001, # 64 Lu, hasLower (add 63), identifier start
1226 16r09970002, # 65 Ll, hasUpper (subtract 38), identifier start
1227 16r09570002, # 66 Ll, hasUpper (subtract 37), identifier start
1228 16r10170002, # 67 Ll, hasUpper (subtract 64), identifier start
1229 16r0FD70002, # 68 Ll, hasUpper (subtract 63), identifier start
1230 16r0F970002, # 69 Ll, hasUpper (subtract 62), identifier start
1231 16r0E570002, # 70 Ll, hasUpper (subtract 57), identifier start
1232 16r0BD70002, # 71 Ll, hasUpper (subtract 47), identifier start
1233 16r0D970002, # 72 Ll, hasUpper (subtract 54), identifier start
1234 16r15970002, # 73 Ll, hasUpper (subtract 86), identifier start
1235 16r14170002, # 74 Ll, hasUpper (subtract 80), identifier start
1236 16r14270001, # 75 Lu, hasLower (add 80), identifier start
1237 16r0C270001, # 76 Lu, hasLower (add 48), identifier start
1238 16r0C170002, # 77 Ll, hasUpper (subtract 48), identifier start
1239 16r00034009, # 78 Nd, identifier part, decimal 0
1240 16r00000007, # 79 Me
1241 16r00030008, # 80 Mc, identifier part
1242 16r00037409, # 81 Nd, identifier part, decimal 26
1243 16r00005A0B, # 82 No, decimal 13
1244 16r00006E0B, # 83 No, decimal 23
1245 16r0000740B, # 84 No, decimal 26
1246 16r0000000B, # 85 No
1247 int 16rFE170002, # 86 Ll, hasUpper (subtract -8), identifier start
1248 int 16rFE270001, # 87 Lu, hasLower (add -8), identifier start
1249 int 16rED970002, # 88 Ll, hasUpper (subtract -74), identifier start
1250 int 16rEA970002, # 89 Ll, hasUpper (subtract -86), identifier start
1251 int 16rE7170002, # 90 Ll, hasUpper (subtract -100), identifier start
1252 int 16rE0170002, # 91 Ll, hasUpper (subtract -128), identifier start
1253 int 16rE4170002, # 92 Ll, hasUpper (subtract -112), identifier start
1254 int 16rE0970002, # 93 Ll, hasUpper (subtract -126), identifier start
1255 int 16rFDD70002, # 94 Ll, hasUpper (subtract -9), identifier start
1256 int 16rEDA70001, # 95 Lu, hasLower (add -74), identifier start
1257 int 16rFDE70001, # 96 Lu, hasLower (add -9), identifier start
1258 int 16rEAA70001, # 97 Lu, hasLower (add -86), identifier start
1259 int 16rE7270001, # 98 Lu, hasLower (add -100), identifier start
1260 int 16rFE570002, # 99 Ll, hasUpper (subtract -7), identifier start
1261 int 16rE4270001, # 100 Lu, hasLower (add -112), identifier start
1262 int 16rFE670001, # 101 Lu, hasLower (add -7), identifier start
1263 int 16rE0270001, # 102 Lu, hasLower (add -128), identifier start
1264 int 16rE0A70001, # 103 Lu, hasLower (add -126), identifier start
1265 16r00010010, # 104 Cf, ignorable
1266 16r0004000D, # 105 Zl, whitespace
1267 16r0004000E, # 106 Zp, whitespace
1268 16r0000400B, # 107 No, decimal 0
1269 16r0000440B, # 108 No, decimal 2
1270 16r0427420A, # 109 Nl, hasLower (add 16), identifier start, decimal 1
1271 16r0427800A, # 110 Nl, hasLower (add 16), identifier start, strange
1272 16r0417620A, # 111 Nl, hasUpper (subtract 16), identifier start, decimal 17
1273 16r0417800A, # 112 Nl, hasUpper (subtract 16), identifier start, strange
1274 16r0007800A, # 113 Nl, identifier start, strange
1275 16r0000420B, # 114 No, decimal 1
1276 16r0000720B, # 115 No, decimal 25
1277 16r06A0001C, # 116 So, hasLower (add 26)
1278 16r0690001C, # 117 So, hasUpper (subtract 26)
1279 16r00006C0B, # 118 No, decimal 22
1280 16r0000560B, # 119 No, decimal 11
1281 16r0007720A, # 120 Nl, identifier start, decimal 25
1282 16r0007400A, # 121 Nl, identifier start, decimal 0
1283 16r00000013, # 122 Cs
1284 16r00000012 # 123 Co
1285 };
java/pkg2/java/lang/unicode_table.m+8−0
@@ -0,0 +1,8 @@
1UnicodeTable : module
2{
3 PATH : con "/dis/java/java/lang/unicode_table.dis";
4
5 A : array of int;
6 X : array of int;
7 Y : array of int;
8};
java/pkg2/java/mkfile+13−0
@@ -0,0 +1,13 @@
1<../../../mkconfig
2
3DIRS=\
4# applet\
5# awt\
6# beans\
7# io\
8 lang\
9# net\
10# security\
11# util\
12
13<$ROOT/mkfiles/mksubdirs
java/pkg2/java/net/BindException.java+0−0

Empty file added.

java/pkg2/java/net/ConnectException.java+0−0

Empty file added.

java/pkg2/java/net/ContentHandler.java+0−0

Empty file added.

java/pkg2/java/net/ContentHandlerFactory.java+0−0

Empty file added.

java/pkg2/java/net/DatagramPacket.java+0−0

Empty file added.

java/pkg2/java/net/DatagramPacket_L.m+16−0
@@ -0,0 +1,16 @@
1# javal v1.5 generated file: edit with care
2
3DatagramPacket_L : module
4{
5 DatagramPacket_obj : adt
6 {
7 cl_mod : ClassModule;
8 buf : JArrayB;
9 length : int;
10 address : JObject;
11 port : int;
12 };
13
14 init : fn( jni_p : JNI );
15
16};
java/pkg2/java/net/DatagramSocket.java+0−0

Empty file added.

java/pkg2/java/net/DatagramSocketImpl.java+0−0

Empty file added.

java/pkg2/java/net/DatagramSocketImpl_L.m+14−0
@@ -0,0 +1,14 @@
1# generated file edit with care
2
3DatagramSocketImpl_L : module
4{
5 DatagramSocketImpl_obj : adt
6 {
7 cl_mod : ClassModule;
8 localPort : int;
9 fd : ref FileDescriptor_obj;
10 };
11
12 init : fn( jni_p : JNI );
13
14};
java/pkg2/java/net/FileNameMap.java+0−0

Empty file added.

java/pkg2/java/net/HttpURLConnection.java+0−0

Empty file added.

java/pkg2/java/net/InetAddress.java+0−0

Empty file added.

java/pkg2/java/net/InetAddressImpl_L.b+218−0
@@ -0,0 +1,218 @@
1implement InetAddressImpl_L;
2
3# javal v1.5 generated file: edit with care
4
5include "jni.m";
6 jni : JNI;
7 ClassModule,
8 JString,
9 JArray,
10 JArrayI,
11 JArrayC,
12 JArrayB,
13 JArrayS,
14 JArrayJ,
15 JArrayF,
16 JArrayD,
17 JArrayZ,
18 JArrayJObject,
19 JArrayJClass,
20 JArrayJString,
21 JClass,
22 JThread,
23 JObject : import jni;
24
25#>> extra pre includes here
26#<<
27
28include "InetAddressImpl_L.m";
29
30#>> extra post includes here
31
32include "InetAddress_L.m";
33 inet: InetAddress_L; # declare pointer to module name
34
35include "srv.m";
36 srv: Srv;
37
38sys: Sys;
39
40include "jnet.m";
41 jnet: JNET;
42
43DEBUG, AF_INET: import jnet;
44FD: import sys;
45InetAddress_obj: import inet; # import adt object for p0 ref
46Value: import jni;
47
48#<<
49
50init( jni_p : JNI )
51{
52 # save java native inteface mod instance
53 jni = jni_p;
54 #>>extra initialization here
55
56 sys = jni->sys;
57 if((srv = load Srv Srv->BUILTINPATH) == nil
58 && (srv = load Srv Srv->PATH) == nil)
59 jni->InitError( jni->sys->sprint( "java.net.InetAddressImpl: could not load Srv: %r" ) );
60
61 #<<
62}
63
64getLocalHostName_rString( this : ref InetAddressImpl_obj) : JString
65{#>>
66
67 fd: ref FD;
68 buf:= array[256] of byte;
69
70 if (DEBUG)
71 sys->print("Entering getLocalHostName\n");
72
73 fd = sys->open("/dev/sysname", sys->OREAD);
74
75 if (fd != nil )
76 n := sys->read(fd, buf, 256);
77 else
78 return jni->NewString("localhost");
79
80 if (n <= 0) {
81 return jni->NewString("localhost");
82 if (DEBUG)
83 sys->print(" Bad return from /dev/sysname\n");
84 }
85 if (DEBUG)
86 sys->print(" Name from dev/sysname: %s\n", string buf[0:n]);
87 return jni->NewString(string buf[0:n]);
88
89}
90#<<
91
92makeAnyLocalAddress_rInetAddress_V( this : ref InetAddressImpl_obj, p0 : JObject)
93{#>>
94
95 # p0 must be changed to a type InetAddress_obj in arg list
96 # Must include InetAddress_L.m also in this file.
97
98 if (DEBUG)
99 sys->print("Entering makeAnyLocalAddress\n");
100
101
102 #p0.address = jnet->INADDR_ANY;
103
104 val := ref Value.TInt( jnet->INADDR_ANY );
105 n := jni->SetObjField( p0, "address", val );
106 if (DEBUG )
107 sys->print("makeAnyLocalAddr: Return from SetObjField %d\n",n);
108
109 #p0.family = jnet->AF_INET;
110 val = ref Value.TInt( jnet->AF_INET );
111 n = jni->SetObjField( p0, "family", val );
112 if (DEBUG )
113 sys->print("makeAnyLocalAddr: Return from SetObjField %d\n",n);
114}#<<
115
116lookupAllHostAddr_rString_aaB( this : ref InetAddressImpl_obj, p0 : JString) : JArray
117{#>>
118
119 if (DEBUG)
120 sys->print("Entering lookupAllHostAddr\n");
121
122 iplist,AddrList: list of string;
123 hostname,str,temp: string;
124 j: int;
125
126 hostname = p0.str;
127 if (DEBUG)
128 sys->print("hostname is %s \n", p0.str);
129 AddrList = srv->iph2a(hostname);
130 if (DEBUG)
131 sys->print("InetAddressImpl:Got AddrList\n");
132
133
134 b:= array[len AddrList] of { array[jnet->IPADDRLEN] of byte };
135
136 if (AddrList != nil) {
137 for(i:=0;i<len AddrList;i++) {
138 str = hd AddrList;
139 if (DEBUG)
140 sys->print(" Addrlist hd = %s\n", str);
141 AddrList = tl AddrList;
142
143 # insure net byte ordered byte[][]
144 ( j, iplist ) = sys->tokenize( str, ".");
145 for (k:=0; k<j; k++) {
146 temp = hd iplist;
147 if (DEBUG)
148 sys->print("iplist hd = %s\n", temp);
149 iplist = tl iplist;
150 if (DEBUG)
151 sys->print("b[%d][%d]\n", i,k);
152 b[i][k] = byte temp;
153 if (DEBUG)
154 sys->print("InetAddressGetHostByName: tokenize b[%d][%d] = %d\n", i, k, int b[i][k]);
155 }
156 }
157 return jni->MkAAByte( b );
158 } else {
159 jni->ThrowException( "java.net.UnknownHostException", "Host unknown" );
160 return nil;
161 }
162
163}#<<
164
165getHostByAddr_I_rString( this : ref InetAddressImpl_obj, p0 : int) : JString
166{#>>
167
168 address: string;
169
170 # p0 is the address
171 # IPV4 only....
172
173
174 if (DEBUG)
175 sys->print("Entering getHostByAddr\n");
176
177 if( !p0 )
178 jni->ThrowException( "java.net.UnknownHostException",
179 "Gethostbyaddr Bad Address" );
180
181 if (DEBUG)
182 sys->print("GetHostByAddr: p0 = %d\n", p0);
183
184 b:= array[jnet->IPADDRLEN] of byte;
185
186 b[0] = byte ( p0 >> 24 );
187 b[1] = byte ( p0 >> 16 );
188 b[2] = byte ( p0 >> 8 );
189 b[3] = byte p0;
190
191 address = string b[0] + "." + string b[1] + "." + string b[2] + "." +
192 string b[3];
193
194 HostList := srv->ipa2h(address);
195
196 if ( len HostList == 0 ) {
197 if (DEBUG)
198 sys->print("GetHostByAddr: ipa2h returned nil on %s\n",
199 address);
200 jni->ThrowException( "java.net.UnknownHostException",
201 "Gethostbyaddr Bad Address" );
202 return nil;
203 }
204
205 return jni->NewString( string hd HostList );
206
207}#<<
208
209getInetFamily_I( this : ref InetAddressImpl_obj) : int
210{#>>
211
212 if (DEBUG)
213 sys->print("Entering getInetFamily\n");
214 #This is a nasty piece of work here...
215 return AF_INET;
216
217}#<<
218
java/pkg2/java/net/InetAddressImpl_L.m+17−0
@@ -0,0 +1,17 @@
1# javal v1.5 generated file: edit with care
2
3InetAddressImpl_L : module
4{
5 InetAddressImpl_obj : adt
6 {
7 cl_mod : ClassModule;
8 };
9
10 init : fn( jni_p : JNI );
11 getLocalHostName_rString : fn( this : ref InetAddressImpl_obj) : JString;
12 makeAnyLocalAddress_rInetAddress_V : fn( this : ref InetAddressImpl_obj, p0 : JObject);
13 lookupAllHostAddr_rString_aaB : fn( this : ref InetAddressImpl_obj, p0 : JString) : JArray;
14 getHostByAddr_I_rString : fn( this : ref InetAddressImpl_obj, p0 : int) : JString;
15 getInetFamily_I : fn( this : ref InetAddressImpl_obj) : int;
16
17};
java/pkg2/java/net/InetAddress_L.m+12−0
@@ -0,0 +1,12 @@
1# generated file edit with care
2
3InetAddress_L : module
4{
5 InetAddress_obj : adt
6 {
7 cl_mod : ClassModule;
8 hostName : JString;
9 address : int;
10 family : int;
11 };
12};
java/pkg2/java/net/MalformedURLException.java+0−0

Empty file added.

java/pkg2/java/net/MulticastSocket.java+0−0

Empty file added.

java/pkg2/java/net/NoRouteToHostException.java+0−0

Empty file added.

java/pkg2/java/net/PlainDatagramSocketImpl..a+0−0

Empty file added.

java/pkg2/java/net/PlainDatagramSocketImpl_L.b+695−0
@@ -0,0 +1,695 @@
1implement PlainDatagramSocketImpl_L;
2
3# javal v1.5 generated file: edit with care
4
5include "jni.m";
6 jni : JNI;
7 ClassModule,
8 JString,
9 JArray,
10 JArrayI,
11 JArrayC,
12 JArrayB,
13 JArrayS,
14 JArrayJ,
15 JArrayF,
16 JArrayD,
17 JArrayZ,
18 JArrayJObject,
19 JArrayJClass,
20 JArrayJString,
21 JClass,
22 JThread,
23 JObject : import jni;
24
25#>> extra pre includes here
26#<<
27
28include "PlainDatagramSocketImpl_L.m";
29
30#>> extra post includes here
31
32include "jnet.m";
33 jnet: JNET;
34
35include "java/io/FileDescriptor_L.m";
36 fildes: FileDescriptor_L;
37
38include "InetAddress_L.m";
39 inet: InetAddress_L;
40
41InetAddress_obj: import inet; #make sure p0 ref works properly
42
43include "DatagramPacket_L.m";
44 pkt: DatagramPacket_L;
45
46include "srv.m";
47 srv: Srv;
48
49sys: Sys;
50
51strp: String;
52
53c: Cast;
54
55
56DEBUG, AF_INET: import jnet;
57FD: import sys;
58DatagramPacket_obj: import pkt; #make sure p0 ref works properly
59FileDescriptor_obj: import fildes;
60Value: import jni;
61
62
63
64#<<
65
66init( jni_p : JNI )
67{
68 # save java native inteface mod instance
69 jni = jni_p;
70 #>>extra initialization here
71
72 sys = jni->sys;
73 strp = jni->str;
74 c = jni->CastMod();
75 if((srv = load Srv Srv->BUILTINPATH) == nil
76 && (srv = load Srv Srv->PATH) == nil)
77 jni->InitError( jni->sys->sprint( "java.net.PlainDatagramSocketImpl: could not load Srv: %r" ) );
78
79 #<<
80}
81
82bind_I_rInetAddress_V( this : ref PlainDatagramSocketImpl_obj, p0 : int,p1 : JObject)
83{#>>
84
85 fd: ref FD;
86 buf:= array[50] of byte;
87 byteary:= array[6] of byte;
88 i,n: int;
89 str: string;
90 arg: list of string;
91
92 # Create the localaddress/localport assoc to a socket......
93
94 # p1 is a ref to InetAddress_obj
95 # p0 is the localport
96
97 if (DEBUG)
98 sys->print("PlainDgramBind: Entering....\n");
99
100 if( this.cfd == nil ) {
101 if (DEBUG)
102 sys->print("Attempt to Bind using cfd = nil\n");
103 jni->ThrowException("java.net.SocketException",
104 "Socket closed");
105 }
106
107 # Check for address presence...
108 if (p1 == nil) {
109 if( DEBUG )
110 sys->print("PlainDgramSocketImplBind: No address given\n");
111 jni->ThrowException("java.lang.NullPointerException", "null Address" );
112 }
113
114 # assume IPv4...
115
116 v := jni->GetObjField( p1, "address", "I");
117
118 if (DEBUG && v == nil)
119 sys->print("DGrambind: GetObjField returned nil\n");
120 if (DEBUG)
121 sys->print("DGrambind: GetObjField done\n");
122 vl := v.Int();
123
124 b := array[jnet->IPADDRLEN] of byte;
125 b[0] = byte (vl >> 24 );
126 b[1] = byte (vl >> 16 );
127 b[2] = byte (vl >> 8 );
128 b[3] = byte vl;
129
130 if (p0)
131 str = "announce " + string b[0] + "." + string b[1] + "." +
132 string b[2] + "." + string b[3] + "!" +
133 string p0;
134 else
135 str = "announce " + string b[0] + "." + string b[1] +
136 + "." + string b[2] + "." + string b[3] ;
137
138
139 n = sys->write( this.cfd.fd, array of byte str, len str );
140
141 if( n <= 0 ) {
142 if (DEBUG)
143 sys->print( "Datagram %s to ctl file failed\n", str);
144 jni->ThrowException( "java.net.SocketException",
145 "Bind error");
146 }
147
148 str = "/net/" + "udp/" + string this.connection + "/local";
149 if (DEBUG)
150 sys->print( "PlainDatagramSocketBind: opening file %s to get local port\n", str);
151 fd = sys->open( str, sys->OREAD );
152 if ( fd == nil ) {
153 if (DEBUG)
154 sys->print( "PlainDatagramSocketBind: Open of local file returned nil fd\n");
155 jni->ThrowException( "java.net.SocketException",
156 "Bind local file open error");
157 }
158 n = sys->read( fd, buf, len buf);
159
160
161 if ( n <= 0 ) {
162 if (DEBUG)
163 sys->print( "PlainDatagramSocketBind: Read of local file returned %d\n", n);
164 jni->ThrowException( "java.net.SocketException",
165 "Bind local file read error");
166 }
167
168 ( i, arg) = sys->tokenize(string buf[0:n], "!");
169 arg = tl arg;
170
171 if (DEBUG)
172 sys->print( "PlainDatagramSocketBind: Returning port # %d\n", int hd arg);
173 this.localPort = int hd arg;
174
175 if (DEBUG)
176 sys->print("PlainDgramBind: Leaving....\n");
177
178}#<<
179
180send_rDatagramPacket_V( this : ref PlainDatagramSocketImpl_obj, p0 : JObject)
181{#>>
182 #p0 - Datagram Packet obj ref
183
184 b:= array[jnet->IPADDRLEN] of byte;
185 str: string;
186
187 if (DEBUG)
188 sys->print("PlainDgramsend: Entering....\n");
189
190 if (this.cfd == nil ) {
191 if (DEBUG)
192 sys->print( "PlainDatagramSocketSend: ref FileDescriptor_obj for cfd is nil\n");
193 jni->ThrowException( "java.net.SocketException",
194 "Socket closed");
195 }
196
197 if ( p0 == nil ) {
198 if (DEBUG)
199 sys->print( "PlainDatagramSocketSend: ref DatagramPacket_obj is nil\n");
200 jni->ThrowException( "java.lang.NullPointerException",
201 "Null DatagramPacket arg");
202 }
203
204 #Check buf field...
205 Pb := jni->GetObjField( p0, "buf", "[B");
206 if ( Pb == nil ) {
207 if (DEBUG)
208 sys->print( "PlainDatagramSocketSend: ref DatagramPacket_obj buf is nil\n");
209 jni->ThrowException( "java.lang.NullPointerException",
210 "Null DatagramPacket_obj buffer ref");
211 }
212 if (DEBUG)
213 sys->print("Dgramsend: GetObjField returned %x\n", Pb);
214
215 Pbvl := Pb.Object();
216 if (DEBUG)
217 sys->print("Dgramsend: GetObjField returned %x\n", Pbvl);
218
219
220 #Check address field....
221 if (DEBUG)
222 sys->print("DGramsend: Doing GetObjField Packet.address\n");
223 I := jni->GetObjField( p0, "address", "Ljava.net.InetAddress;");
224 if ( I == nil ) {
225 if (DEBUG)
226 sys->print( "PlainDatagramSocketSend: ref DatagramPacket_obj address is nil\n");
227 jni->ThrowException( "java.lang.NullPointerException",
228 "Null DatagramPacket_obj address ref");
229 }
230
231 #address is an InetAddress ref
232 Ivl := I.Object();
233 if (DEBUG)
234 sys->print("Dgramsend: GetObjField returned %x\n", Ivl);
235
236 if (DEBUG)
237 sys->print("DGramsend: Doing GetObjField Packet.address.address\n");
238 v := jni->GetObjField( Ivl, "address", "I");
239
240 if (DEBUG && v == nil)
241 sys->print("DGramsend: GetObjField returned nil\n");
242 vl := v.Int();
243
244 if (DEBUG)
245 sys->print("Dgramsend: GetObjField returned %d\n", vl);
246
247 b[0] = byte (vl >> 24);
248 b[1] = byte (vl >> 16);
249 b[2] = byte (vl >> 8);
250 b[3] = byte (vl);
251
252 a := string b[0]+"."+string b[1]+"."+string b[2]+
253 "."+string b[3];
254
255 # Check port....
256 if (DEBUG)
257 sys->print("DGramsend: Doing GetObjField Packet.port\n");
258 v = jni->GetObjField( p0, "port", "I");
259
260 if (DEBUG && v == nil)
261 sys->print("DGramsend: GetObjField returned nil\n");
262
263 vl = v.Int();
264 if (DEBUG)
265 sys->print("Dgramsend: GetObjField returned %d\n", vl);
266 if ( vl <= 0 )
267 str = "connect " + a;
268 else
269 str = "connect " + a + "!" + string vl;
270
271 if( DEBUG )
272 sys->print( "DGramsend: connect str = %s\n", str);
273
274 n := sys->write( this.cfd.fd, array of byte str, len array of byte str );
275 if( n <= 0 ) {
276 if (DEBUG)
277 sys->print( "DGramsend: connect cmd failed %d\n", n);
278 jni->ThrowException( "java.net.SocketException",
279 "Datagram send ctl file error");
280 }
281
282 #Get buf.ary field....
283 ar := c->ToJArrayB( Pbvl );
284 n = sys->write( this.fd.fd, ar.ary, len ar.ary);
285 if ( n <= 0 ) {
286 # set length to zero...
287 val := ref Value.TInt(0);
288 jni->SetObjField( p0, "length", val );
289 if (DEBUG)
290 sys->print( "PlainDatagramSocketSend: write of data file returned %d\n", n);
291 jni->ThrowException( "java.net.SocketException",
292 "Send: data file write error");
293 }
294
295 val := ref Value.TInt(n);
296 jni->SetObjField( p0, "length", val );
297
298 if (DEBUG)
299 sys->print("PlainDgramsend: Leaving...\n");
300
301}#<<
302
303peek_rInetAddress_I( this : ref PlainDatagramSocketImpl_obj, p0 : JObject) : int
304{#>>
305 if (DEBUG)
306 sys->print( "PlainDatagramSocketPeek: Unsupported entry.\n");
307 jni->ThrowException( "java.net.SocketException",
308 "Peek: Unsupported option");
309 return -1;
310}#<<
311
312receive_rDatagramPacket_V( this : ref PlainDatagramSocketImpl_obj, p0 : JObject)
313{#>>
314
315 # p0 = ref DatagramPacket
316
317 str,temp: string;
318 st: list of string;
319 m: int;
320
321
322
323 if (DEBUG)
324 sys->print("PlainDgramreceive: Entering...\n");
325
326 if (this.cfd == nil ) {
327 if (DEBUG)
328 sys->print( "PlainDatagramSocketRead: ref FileDescriptor_obj for cfd is nil\n");
329 jni->ThrowException( "java.net.SocketException",
330 "Socket closed");
331 }
332
333 if ( p0 == nil ) {
334 if (DEBUG)
335 sys->print( "PlainDatagramSocketRead: ref DatagramPacket_obj is nil\n");
336 jni->ThrowException( "java.lang.NullPointerException",
337 "Null DatagramPacket_obj ref");
338 }
339
340 #Check buf field...
341 Pb := jni->GetObjField( p0, "buf", "[B");
342 if ( Pb == nil ) {
343 if (DEBUG)
344 sys->print( "PlainDatagramSocketRecv: ref DatagramPacket_obj buf is nil\n");
345 jni->ThrowException( "java.lang.NullPointerException",
346 "Null DatagramPacket_obj buffer ref");
347 }
348 if (DEBUG)
349 sys->print("DgramRecv: GetObjField returned %x\n", Pb);
350
351 Pbvl := Pb.Object();
352 if (DEBUG)
353 sys->print("DgramRecv: GetObjField returned %x\n", Pbvl);
354
355 #Get buf.ary field....
356 ar := c->ToJArrayB( Pbvl );
357
358 n := sys->read( this.fd.fd, ar.ary, len ar.ary);
359 val := ref Value.TInt(n);
360 jni->SetObjField( p0, "length", val );
361
362 if ( n < 0 ) {
363 if (DEBUG)
364 sys->print( "PlainDatagramSocketRead: read of data file returned %d\n", n);
365 jni->ThrowException( "java.net.SocketException",
366 "PlainDatagramSocketReceive: data file read error");
367 }
368
369 if (DEBUG)
370 sys->print( "PlainDatagramSocketReceive: read of data file: %s\n", string ar.ary[0:n]);
371
372 # Timeout logic...
373 if( this.timeout != 0 ) {
374 temp = jnet->timeout + " " + string this.timeout;
375 rc := sys->write(this.cfd.fd, array of byte temp,
376 len array of byte temp);
377 if (DEBUG)
378 sys->print("DatagramSocketImplReceive: fixing timeout value %s\n", string this.timeout);
379 if ( rc <= 0 )
380 jni->ThrowException("java.net.SocketException",
381 "DatagramSocketImplReceive: Unable to set timeout");
382 }
383
384 # Check status file for timeout...
385
386 buf:= array[256] of byte;
387
388 temp = "/net/udp/" + string this.connection + "/status";
389 sfd := sys->open( temp, sys->OREAD );
390 if (sfd == nil ) {
391 if (DEBUG)
392 sys->print( "DatagramSocketImplReceive: Open of status file %s returned nil fd\n", temp);
393 jni->ThrowException( "java.net.SocketException",
394 "DatagramSocketImplReceive: Read failed");
395 }
396
397 k := sys->read(sfd, buf, len buf);
398
399 if ( k <= 0 ) {
400 if (DEBUG)
401 sys->print("DgramReceive: status file read: %d\n", n);
402 jni->ThrowException( "java.net.SocketException",
403 "DatagramSocketImplReceive: status file read failed");
404 }
405
406
407 if (DEBUG)
408 sys->print("DgramSocketreceive: Got status: %s\n", string buf[0:k]);
409
410 (m, st) = sys->tokenize( string buf[:k], " \n\t");
411
412 if ( m != 0 )
413 for(i:=0;i<m;i++) {
414 str = hd st;
415 if ( strp->prefix( str, "timed-out" )) {
416 if (DEBUG)
417 sys->print( "DatagramSocketImplReceive: timeout\n");
418 jni->ThrowException("java.io.InterruptedIOException",
419 "DatagramSocketImplReceive: Read timed out.");
420 }
421 st = tl st;
422 }
423 else
424 if (DEBUG)
425 sys->print( "DatagramSocketImplReceive: Can't tokenize\n");
426
427
428 if (DEBUG)
429 sys->print( "DatagramSocketImplReceive: Doing NewObject\n");
430 # Default constructor...
431 I_obj := jni->NewObject( jni->FindClass( "java/net/InetAddress" ));
432
433 if (DEBUG)
434 sys->print( "DatagramSocketImplReceive: NewObject Done\n");
435 str = "/net/" + "udp/" + string this.connection + "/remote";
436 fd := sys->open(str, sys->OREAD);
437
438 if ( fd == nil ) {
439 if (DEBUG)
440 sys->print("Dgramreceive: Can't open %s\n", str);
441 jni->ThrowException( "java.net.SocketException",
442 "DatagramSocketImplreceive: Unable to obtain remote fd\n");
443 }
444
445 n = sys->read(fd, buf, len buf);
446
447 if (n <= 0) {
448 if (DEBUG)
449 sys->print("DgramSocketreceive: Can't read %s\n", str);
450 jni->ThrowException( "java.net.SocketException",
451 "DatagramSocketImplreceive: Unable to obtain remote addr\n");
452 }
453
454 if (DEBUG)
455 sys->print("DgramSocketreceive: Remote file read has %s\n", string buf[0:n]);
456
457 (m, st) = sys->tokenize( string buf[:n], "!");
458 if ( m == 0 ) {
459 if (DEBUG)
460 sys->print("DgramSocketReceive: Can't tokenize %s\n", str);
461 jni->ThrowException( "java.net.SocketException",
462 "DatagramSocketImplReceive: Unable to tokenize remote\n");
463 }
464
465 str = hd st;
466 st = tl st;
467
468 iplist: list of string;
469 ( i, iplist ) = sys->tokenize( str, ".");
470 if (DEBUG)
471 sys->print("DgramSocketreceive: tokenize iplist i = %d\n", i);
472 b:= array[len iplist] of byte;
473 for (j:=0; j<i; j++) {
474 temp = hd iplist;
475 iplist = tl iplist;
476 b[j] = byte temp;
477 }
478
479 i = 0;
480 i |= int b[0] <<24;
481 i |= int b[1] <<16;
482 i |= int b[2] <<8;
483 i |= int b[3];
484 if (DEBUG )
485 sys->print("DgramSocketreceive: shifted remote addr = %d\n",i);
486
487 val = ref Value.TInt( int hd st );
488 n = jni->SetObjField( p0, "port", val );
489 if (DEBUG )
490 sys->print("DgramSocketRecv: Return from SetObjField port %d\n",n );
491
492 nval := ref Value.TObject( I_obj );
493 n = jni->SetObjField( p0, "address", nval );
494 if (DEBUG )
495 sys->print("DgramSocketRecv: Return from SetObjField addr %d\n",n );
496
497 if (DEBUG )
498 sys->print("DgramSocketRecv: Finished setting InetAddr ref\n" );
499
500 val = ref Value.TInt( i );
501 n = jni->SetObjField( I_obj, "address", val );
502 if (DEBUG )
503 sys->print("DgramSocketRecv: Return from Inetaddr addr SetObjField %d\n",n );
504
505 val = ref Value.TInt( jnet->AF_INET );
506 n = jni->SetObjField( I_obj, "family", val );
507 if (DEBUG )
508 sys->print("DgramSocketRecv: Return from family SetObjField %d\n",n );
509
510 if (DEBUG)
511 sys->print("PlainDgramRecv: Leaving...\n");
512
513}#<<
514
515setTTL_B_V( this : ref PlainDatagramSocketImpl_obj, p0 : int)
516{#>>
517 if (DEBUG)
518 sys->print( "PlainDatagramSocketSetTTL: Unsupported.\n");
519 jni->ThrowException( "java.net.SocketException",
520 "setTTL: Unsupported option");
521}#<<
522
523getTTL_B( this : ref PlainDatagramSocketImpl_obj) : int
524{#>>
525 if (DEBUG)
526 sys->print( "PlainDatagramSocketGetTTL: Unsupported.\n");
527 jni->ThrowException( "java.net.SocketException",
528 "getTTL: Unsupported option");
529 return -1;
530}#<<
531
532join_rInetAddress_V( this : ref PlainDatagramSocketImpl_obj, p0 : JObject)
533{#>>
534 if (DEBUG)
535 sys->print( "PlainDatagramSocketJoin: Unsupported.\n");
536 jni->ThrowException( "java.net.SocketException",
537 "Join: Unsupported option");
538}#<<
539
540leave_rInetAddress_V( this : ref PlainDatagramSocketImpl_obj, p0 : JObject)
541{#>>
542 if (DEBUG)
543 sys->print( "PlainDatagramSocketLeave: Unsupported.\n");
544 jni->ThrowException( "java.net.SocketException",
545 "Leave: Unsupported option");
546}#<<
547
548datagramSocketCreate_V( this : ref PlainDatagramSocketImpl_obj)
549{#>>
550
551 dir: string;
552 cfd: ref FD;
553
554 if (DEBUG)
555 sys->print("DgramCreate: Entering...\n");
556
557 #Open clone device and allocate a connection
558 dir = "/net/udp/clone";
559 cfd = sys->open(dir, sys->ORDWR);
560 if (cfd == nil) {
561 if( DEBUG )
562 sys->print( "DgramCreate: Unable to open clone device\n");
563 jni->ThrowException( "java.net.SocketException",
564 "Unable to create socket");
565 }
566
567 #The following gets a connection number string
568 buf := array[10] of byte;
569 n := sys->read(cfd, buf, len buf);
570 if (n < 0) {
571 if (DEBUG)
572 sys->print("DgramCreate: Ctl file read returned no connection num!\n");
573 jni->ThrowException( "java.net.SocketException",
574 "Unable to create socket");
575 }
576
577 if (DEBUG)
578 sys->print("DgramCreate: ctl read connection #: %s\n",
579 string buf[:n]);
580
581 if (DEBUG)
582 sys->print("DgramCreate: Storing cfd #\n");
583 this.cfd.fd = cfd;
584 r := string buf[:n];
585 if (DEBUG)
586 sys->print("DgramCreate: Storing conn #\n");
587 this.connection = int r;
588
589 #Open data file and get a handle...
590 dir = "/net/" + "udp/" + string this.connection + "/data";
591 cfd = sys->open(dir, sys->ORDWR);
592 if (cfd == nil) {
593 if( DEBUG )
594 sys->print( "DatagramCreate: Unable to open %s\n", dir);
595 jni->ThrowException( "java.net.SocketException",
596 "Unable to create socket");
597 }
598 if (DEBUG)
599 sys->print("DgramCreate: Storing fd #\n");
600 this.fd.fd = cfd;
601}#<<
602
603datagramSocketClose_V( this : ref PlainDatagramSocketImpl_obj)
604{#>>
605
606 if (DEBUG)
607 sys->print( "In socket close routine");
608 this.fd = nil;
609 this.cfd = nil;
610
611
612}#<<
613
614socketSetOption_I_rObject_V( this : ref PlainDatagramSocketImpl_obj, p0 : int,p1 : JObject)
615{#>>
616
617 if( p0 == jnet->IP_MULTICAST_IF ){
618 if (DEBUG)
619 sys->print("PlainDatagramSocketImplSetOption: MULTICAST");
620 jni->ThrowException("java.net.SocketException",
621 "invalid DatagramSocket Option");
622 }
623}#<<
624
625socketGetOption_I_I( this : ref PlainDatagramSocketImpl_obj, p0 : int) : int
626{#>>
627
628 # p0 = option
629
630 buf := array[256] of byte;
631 temp, str: string;
632 iplist, st: list of string;
633 m,i : int;
634
635 ctype := "udp";
636 if (DEBUG)
637 sys->print("PlainDatagramSocketImplGetOption: Entering...\n");
638
639 if ( this.fd == nil ) {
640 if (DEBUG)
641 sys->print("PlainDatagramSocketImplGetOption: Null this.fd\n");
642 jni->ThrowException("java.net.SocketException", "Socket Closed");
643 }
644
645 if( p0 == jnet->IP_MULTICAST_IF ) {
646 if (DEBUG)
647 sys->print("PlainDatagramSocketImplGetOption: MULTICAST");
648 jni->ThrowException("java.net.SocketException", "invalid DatagramSocket Option");
649 } else if ( p0 == jnet->SO_BINADDR ) {
650 if (DEBUG)
651 sys->print("PlainDatagramSocketImplGetOption: BINADDR");
652 sfd := sys->open("/dev/sysname", sys->OREAD);
653 if(( m = sys->read(sfd, buf, len buf)) < 0 ) {
654 if (DEBUG)
655 sys->print("DatagramSocketGetOpt: SO_BINADDR: /dev/sysna me read failed\n");
656 return -1;
657 }
658 st = srv->iph2a(string buf[0:m]);
659 if (st == nil) {
660 if (DEBUG)
661 sys->print("DsockGetOpt: iph2a returned nil list\n");
662 jni->ThrowException( "java.net.SocketException",
663 "socketGetOption: SO_BINADDR: Unable to get local addres s");
664 }
665 str = hd st;
666 if (DEBUG)
667 sys->print("socketGetOption: st hd = %s\n", str);
668 # insure net byte ordered byte[]
669 ( i, iplist ) = sys->tokenize( str, ".");
670 if (DEBUG)
671 sys->print("socketGetOption: iplist tokenize i = %d\n", i);
672 b:= array[len iplist] of byte;
673 for (j:=0; j<i; j++) {
674 temp = hd iplist;
675 iplist = tl iplist;
676 b[j] = byte temp;
677 }
678 i=0;
679 i |= int ( b[0] << 24) ;
680 i |= int ( b[1] << 16 );
681 i |= int ( b[2] << 8 );
682 i |= int ( b[3] );
683 if (DEBUG )
684 sys->print("DgramSocketGetOpt: BINADDR = %d\n", i);
685 return i;
686 } else
687 jni->ThrowException( "java.net.SocketException",
688 "DatagramSocketGetOption: Unsupported Option.");
689 if (DEBUG)
690 sys->print("PlainDatagramSocketImplGetOption: Leaving...\n");
691
692 return -1;
693}#<<
694
695
java/pkg2/java/net/PlainDatagramSocketImpl_L.m+29−0
@@ -0,0 +1,29 @@
1# javal v1.5 generated file: edit with care
2
3PlainDatagramSocketImpl_L : module
4{
5 PlainDatagramSocketImpl_obj : adt
6 {
7 cl_mod : ClassModule;
8 localPort : int;
9 fd : ref FileDescriptor_obj;
10 cfd : ref FileDescriptor_obj;
11 connection : int;
12 timeout : int;
13 };
14
15 init : fn( jni_p : JNI );
16 bind_I_rInetAddress_V : fn( this : ref PlainDatagramSocketImpl_obj, p0 : int,p1 : JObject);
17 send_rDatagramPacket_V : fn( this : ref PlainDatagramSocketImpl_obj, p0 : JObject);
18 peek_rInetAddress_I : fn( this : ref PlainDatagramSocketImpl_obj, p0 : JObject) : int;
19 receive_rDatagramPacket_V : fn( this : ref PlainDatagramSocketImpl_obj, p0 : JObject);
20 setTTL_B_V : fn( this : ref PlainDatagramSocketImpl_obj, p0 : int);
21 getTTL_B : fn( this : ref PlainDatagramSocketImpl_obj) : int;
22 join_rInetAddress_V : fn( this : ref PlainDatagramSocketImpl_obj, p0 : JObject);
23 leave_rInetAddress_V : fn( this : ref PlainDatagramSocketImpl_obj, p0 : JObject);
24 datagramSocketCreate_V : fn( this : ref PlainDatagramSocketImpl_obj);
25 datagramSocketClose_V : fn( this : ref PlainDatagramSocketImpl_obj);
26 socketSetOption_I_rObject_V : fn( this : ref PlainDatagramSocketImpl_obj, p0 : int,p1 : JObject);
27 socketGetOption_I_I : fn( this : ref PlainDatagramSocketImpl_obj, p0 : int) : int;
28
29};
java/pkg2/java/net/PlainSocketImpl.java+0−0

Empty file added.

java/pkg2/java/net/PlainSocketImpl_L.b+685−0
@@ -0,0 +1,685 @@
1implement PlainSocketImpl_L;
2
3include "jni.m";
4 jni : JNI;
5 ClassModule,
6 JString,
7 JArray,
8 JArrayI,
9 JArrayC,
10 JArrayB,
11 JArrayS,
12 JArrayJ,
13 JArrayF,
14 JArrayD,
15 JArrayZ,
16 JArrayJObject,
17 JArrayJClass,
18 JArrayJString,
19 JClass,
20 JObject : import jni;
21
22#>> extra pre includes here
23#<<
24
25include "PlainSocketImpl_L.m";
26
27#>> extra post includes here
28
29include "jnet.m";
30 jnet: JNET;
31
32include "java/io/FileDescriptor_L.m";
33 fildes: FileDescriptor_L;
34
35include "InetAddress_L.m";
36 inet: InetAddress_L;
37
38include "srv.m";
39 srv: Srv;
40
41
42FileDescriptor_obj: import fildes;
43InetAddress_obj: import inet;
44
45# This next file was once generated by javal, now it must be hand crafted.
46include "SocketImpl_L.m";
47 sock: SocketImpl_L;
48
49 sys: Sys;
50
51 strp: String;
52
53DEBUG: import jnet;
54FD: import sys;
55SocketImpl_obj: import sock;
56Value: import jni;
57
58#<<
59
60init( jni_p : JNI )
61{
62 # save java native inteface mod instance
63 jni = jni_p;
64 #>>extra initialization here
65
66 sys = jni->sys;
67 strp = jni->str;
68 if((srv = load Srv Srv->BUILTINPATH) == nil
69 && (srv = load Srv Srv->PATH) == nil)
70 jni->InitError( jni->sys->sprint( "java.net.PlainSocketImpl: could not load Srv: %r" ) );
71
72 #<<
73}
74
75socketCreate_Z_V( this : ref PlainSocketImpl_obj, p0 : int)
76{#>>
77
78 cfd,fd: ref FD;
79 dir,ctype: string;
80
81 if (DEBUG)
82 sys->print("Entering socketCreate\n");
83
84 # Set socket ctype...
85 if ( p0 ) {
86 ctype = "tcp";
87 this.ctype = jnet->SOCK_STREAM;
88 } else {
89 ctype = "udp";
90 this.ctype = jnet->SOCK_DGRAM;
91 }
92
93 #Open clone device and allocate a connection
94 dir = "/net/" + ctype + "/clone";
95 cfd = sys->open(dir, sys->ORDWR);
96 if (cfd == nil) {
97 if( DEBUG )
98 sys->print( "Unable to open clone device\n");
99 jni->ThrowException( "java.net.SocketException",
100 "Unable to create socket");
101 }
102 this.cfd.fd = cfd;
103
104 buf := array[10] of byte;
105 n := sys->read(cfd, buf, len buf);
106 if (n < 0) {
107 if (DEBUG)
108 sys->print("socketCreate bad ctl file read\n");
109 jni->ThrowException( "java.net.SocketException",
110 "socketCreate: Unable to create socket");
111 }
112 if (DEBUG)
113 sys->print("socketCreate: ctl read connection #: %s\n", string buf[0:n]);
114 s := string buf[:n];
115
116 if (DEBUG)
117 sys->print("socketCreate: s is %s\n", s );
118 this.connection = int s;
119
120 # Populate data fd........
121 dir = "/net/" + ctype + "/" + string this.connection + "/data";
122 if (DEBUG)
123 sys->print("socketCreate: data dir: %s\n", dir);
124 fd = sys->open(dir, sys->ORDWR);
125
126 if ( fd == nil ) {
127 if (DEBUG)
128 sys->print("socketCreate: Attempt to open %s - no fd returned\n", dir);
129 jni->ThrowException( "java.net.SocketException",
130 "Connect error: can't open connection");
131 }
132
133 this.fd.fd = fd;
134
135 if (DEBUG)
136 sys->print("socketCreate: leaving \n");
137}#<<
138
139socketConnect_rInetAddress_I_V( this : ref PlainSocketImpl_obj, p0 : ref InetAddress_obj,p1 : int)
140{#>>
141 b:= array[4] of byte;
142 buf:= array[50] of byte;
143 port,str,ctype: string;
144 arg: list of string;
145 i,n: int;
146 fd: ref FD;
147
148 if (DEBUG)
149 sys->print("socketConnect: entering.. \n");
150 # Get network ctype and address and port.......
151
152 # Note p0 is an InetAddress_obj ref.....
153 if ( p0 != nil ) {
154 b[0] = byte (p0.address >> 24);
155 b[1] = byte (p0.address >> 16);
156 b[2] = byte (p0.address >> 8);
157 b[3] = byte (p0.address);
158 str = string b[0]+"."+string b[1]+"."+string b[2]+
159 "."+string b[3];
160 if( DEBUG ) {
161 sys->print( "socketConnect: byte array = %s\n", str );
162 }
163 } else {
164 if( DEBUG )
165 sys->print( "socketConnect: InetAddress ref = nil!\n");
166 jni->ThrowException( "java.lang.NullPointerException",
167 "Null InetAddress");
168 }
169
170 if (this.ctype == jnet->SOCK_STREAM)
171 ctype = "tcp";
172 else
173 ctype = "udp";
174
175
176 # port is the third arg...
177 if (p1>0)
178 port = string p1;
179 else {
180 if( DEBUG )
181 sys->print( "socketConnect: No server port arg provided\n");
182 jni->ThrowException( "java.net.SocketException",
183 "No port argument");
184 }
185
186 # Make string to write to ctl and issue connect....
187
188 cstr := "connect " + str + "!" + port;
189 if( DEBUG )
190 sys->print( "socketConnect: connect str = %s\n", cstr);
191 if ( this.cfd != nil )
192 n = sys->write( this.cfd.fd, array of byte cstr,
193 len array of byte cstr );
194 else {
195 if (DEBUG)
196 sys->print("socketConnect: ctl fd == nil!\n");
197 jni->ThrowException( "java.lang.NullPointerException",
198 "socketConnect: ctl file fd nil");
199 }
200
201 if( n <= 0 ) {
202 if (DEBUG)
203 sys->print( "Connect cmd to ctl file returned bad byte count %d\n",n);
204 jni->ThrowException( "java.net.SocketException",
205 "Connect write error");
206 }
207 this.address = p0;
208 this.port = p1;
209
210 # Populate local port........
211
212 if (this.localport == 0) { # If there was no bind
213 cstr = "/net/"+ctype+"/"+string this.connection+"/local";
214 fd = sys->open(cstr, sys->OREAD);
215 if ( fd == nil ) {
216 if (DEBUG)
217 sys->print("socketConnect: Open %s failed.\n",
218 cstr );
219 jni->ThrowException( "java.net.SocketException",
220 "Connect error");
221 }
222 n = sys->read( fd, buf, len buf );
223 if ( n <= 0 ) {
224 if (DEBUG)
225 sys->print("Connect Error: Read of %s returned %d\n", cstr ,n );
226 jni->ThrowException( "java.net.SocketException",
227 "Connect error");
228 }
229
230 if (DEBUG)
231 sys->print("socketConnect: Read of %s returned %s\n",
232 cstr, string buf[:n]);
233 ( i, arg) = sys->tokenize(string buf[0:n], "!");
234 if (i == 0) {
235 if (DEBUG)
236 sys->print("Connect Error: tokenize of /local");
237 jni->ThrowException( "java.net.SocketException",
238 "Connect error");
239 }
240 arg = tl arg;
241 str = hd arg;
242 if (DEBUG)
243 sys->print("socketConnect: Tokenize for local port returned %s\n", str);
244 this.localport = int str;
245 }
246}#<<
247
248socketBind_rInetAddress_I_V( this : ref PlainSocketImpl_obj, p0 : ref InetAddress_obj,p1 : int)
249{#>>
250
251 buf:= array[50] of byte;
252 b := array[jnet->IPADDRLEN] of byte;
253 i: int;
254 arg: list of string;
255
256 if (DEBUG)
257 sys->print("Entering socketBind\n");
258
259 # Create the localaddress/localport assoc to a socket......
260
261 # Note p0 is a ref to InetAddress_obj
262 # The ip address was shifted in previously so...
263 # IPV4 only....
264 if ( p0 != nil ) {
265 if (DEBUG)
266 sys->print( "socketBind: p0.address = %d\n",p0.address);
267 b[0] = byte (p0.address >> 24);
268 b[1] = byte (p0.address >> 16);
269 b[2] = byte (p0.address >> 8);
270 b[3] = byte (p0.address);
271 x := string b[0]+"."+string b[1]+"."+string b[2]+
272 "."+string b[3];
273 if (DEBUG)
274 sys->print("socketBind: Bind using %s \n", x);
275 } else
276 jni->ThrowException( "java.lang.NullPointerException",
277 "Null InetAddress");
278
279 if( this.fd == nil ) {
280 if (DEBUG)
281 sys->print("Attempt to Bind using cfd = nil\n");
282 jni->ThrowException("java.net.SocketException", "Null Socket");
283 }
284
285 # bind is announce
286
287 if (p1)
288 str := "announce " + string b[0] + "." + string b[1] +
289 + "." + string b[2] + "." +
290 string b[3] + "!" + string p1;
291 else
292 str = "announce " + string b[0] + "." + string b[1] +
293 + "." + string b[2] + "." + string b[3] ;
294
295 if( DEBUG )
296 sys->print("socketBind: announce port is: %s\n", string p1);
297
298
299 n := sys->write( this.cfd.fd, array of byte str, len array of byte str );
300
301 if( n <= 0 ) {
302 if (DEBUG)
303 sys->print( "socketBind: %s to ctl failed\n", str);
304 jni->ThrowException( "java.net.SocketException",
305 "Bind error");
306 }
307
308 # Populate local port........
309 if (this.ctype == jnet->SOCK_STREAM)
310 ctype := "tcp";
311 else
312 ctype = "udp";
313
314 cstr := "/net/"+ctype+"/"+string this.connection+"/local";
315 fd := sys->open(cstr, sys->OREAD);
316 if ( fd == nil ) {
317 if (DEBUG)
318 sys->print("socketBind: Open %s failed.\n",
319 cstr );
320 jni->ThrowException( "java.net.SocketException",
321 "Bind error");
322 }
323 n = sys->read( fd, buf, len buf );
324 if ( n <= 0 ) {
325 if (DEBUG)
326 sys->print("Bind Error: Read of %s returned %d\n", cstr ,n );
327 jni->ThrowException( "java.net.SocketException",
328 "Bind error - opening /local");
329 }
330
331 if (DEBUG)
332 sys->print("socketConnect: Read of %s returned %s\n",
333 cstr, string buf[:n]);
334 ( i, arg) = sys->tokenize(string buf[0:n], "!");
335 if (i == 0) {
336 if (DEBUG)
337 sys->print("Bind Error: tokenize of /local");
338 jni->ThrowException( "java.net.SocketException",
339 "Bind error");
340 }
341 arg = tl arg;
342 str = hd arg;
343 if (DEBUG)
344 sys->print("socketBind: Tokenize for local port returned %s\n", str);
345 this.localport = int str;
346 this.address = p0;
347}#<<
348
349socketListen_I_V( this : ref PlainSocketImpl_obj, p0 : int)
350{#>>
351
352 # Maybe should just return here max q is always 5......
353 if (DEBUG)
354 sys->print( "In socket listen routine\n");
355
356}#<<
357
358socketAccept_rSocketImpl_V( this : ref PlainSocketImpl_obj, p0 : ref SocketImpl_obj )
359{#>>
360 # p0 is a ref to SocketImpl_obj
361
362 ctype,dir: string;
363 buf := array[200] of byte;
364 str: string;
365 st: list of string;
366 m,n : int;
367
368 if (DEBUG)
369 sys->print( "In socketAccept\n");
370
371 if ( p0 == nil ) {
372 if( DEBUG )
373 sys->print( "socketAccept: PlainSocketImpl ref = nil!\n");
374 jni->ThrowException( "java.lang.NullPointerException",
375 "Null Socket Ptr");
376 }
377
378 if (this.ctype == jnet->SOCK_STREAM)
379 ctype = "tcp";
380 else
381 ctype = "udp";
382
383 if( this.timeout != 0 ) {
384 temp:= jnet->timeout + " " + string this.timeout;
385 if (DEBUG)
386 sys->print("socketAccept: writing to ctl: %s\n", temp);
387 if ( this.cfd != nil )
388 rc := sys->write(this.cfd.fd, array of byte temp,
389 len array of byte temp);
390 else {
391 if (DEBUG)
392 sys->print("socketAccept: ctl fd is nil\n");
393 jni->ThrowException( "java.lang.NullPointerException",
394 "Null CTL FD");
395 }
396
397
398 if (DEBUG)
399 sys->print("socketAccept: wrote to ctl: %s\n", temp);
400 if ( rc <= 0 ) {
401 if (DEBUG)
402 sys->print("socketAccept: Bad write to ctl: %s\n", temp);
403 jni->ThrowException("java.net.SocketException",
404 "socketAccept: Unable to set timeout");
405 }
406 }
407
408 dir = "/net/" + ctype + "/" + string this.connection + "/listen";
409 if ((lfd := sys->open(dir, sys->ORDWR)) == nil ) {
410 if (DEBUG)
411 sys->print( "Open of listen file %s returned nil fd\n", dir);
412 jni->ThrowException( "java.net.SocketException",
413 "socketAccept: accept failed");
414 }
415
416 # Check status file to see if timed out...
417 dir = "/net/" + ctype + "/" + string this.connection + "/status";
418 if ((sfd := sys->open(dir, sys->OREAD)) == nil ) {
419 if (DEBUG)
420 sys->print( "socketAccept: Open of status file %s returned nil fd\n", dir);
421 jni->ThrowException( "java.net.SocketException",
422 "socketAccept: status file open failed");
423 }
424
425 n = sys->read(sfd, buf, len buf);
426 if ( n <= 0 ) {
427 if (DEBUG)
428 sys->print("socketAccept: status file read: %d\n", n);
429 jni->ThrowException( "java.net.SocketException",
430 "socketAccept: status file read failed");
431 }
432
433 if (DEBUG)
434 sys->print("socketAccept: Got status: %s\n", string buf[0:n]);
435 (m, st) = sys->tokenize( string buf[:n], " \t\n");
436
437 for(i:=0;i<m;i++) {
438 str = hd st;
439 if ( strp->prefix( str, "timed-out" )) {
440 if (DEBUG)
441 sys->print( "socketAccept: Status is timeout\n");
442 jni->ThrowException("java.io.InterruptedIOException",
443 "socketAccept: accept timed out.");
444 }
445 st = tl st;
446 }
447
448 # Need to save the dfd and cfd. Note SocketImpl is abstract...
449 if (DEBUG)
450 sys->print( "socketAccept: Storing fd from listen in SocketImpl_obj\n");
451 # Get connection...
452 n = sys->read(lfd, buf, len buf);
453 if (n <= 0) {
454 if (DEBUG)
455 sys->print(" SocketAccept: ctl file read bad return code\n");
456 jni->ThrowException( "java.net.SocketException",
457 "socketAccept: Unable to accept socket");
458 }
459
460 if (DEBUG)
461 sys->print("socketAccept: listen ctl conn #: %s\n", string buf[0:n]);
462
463 s := string buf[0:n];
464 if (DEBUG)
465 sys->print("socketAccept: storing connection number = %d in SocketImpl.\n", int s );
466 p0.connection = int s; # save connection number
467 if (DEBUG)
468 sys->print("socketAccept: storing connection ctype = %d in SocketImpl.\n", this.ctype );
469 p0.ctype = this.ctype; # save connection ctype
470
471 dir = "/net/" + ctype + "/" + string p0.connection + "/data";
472 if ((fd := sys->open( dir, sys->ORDWR)) == nil ) {
473 if (DEBUG)
474 sys->print(" SocketAccept: open of %s failed\n", dir);
475
476 jni->ThrowException( "java.net.SocketException",
477 "Unable to open accepted socket");
478 }
479 if (DEBUG)
480 sys->print("SocketAccept: About to store dfd in SocketImpl fd (abstract class)\n");
481 p0.fd.fd = fd; #Store data file fd.....
482
483 if (DEBUG)
484 sys->print(" socketAccept: storing accepted cfd now\n" );
485 p0.cfd.fd = lfd; # store in class...
486
487}#<<
488
489socketAvailable_I( this : ref PlainSocketImpl_obj) : int
490{#>>
491
492 if (DEBUG)
493 sys->print( "In socket available routine\n");
494 jni->ThrowException( "java.io.IOException", "socketAvailable: Unsupported function" );
495 return -1;
496
497}#<<
498
499socketClose_V( this : ref PlainSocketImpl_obj)
500{#>>
501 if (DEBUG)
502 sys->print( "In socket close routine\n");
503 this.fd = nil;
504 this.cfd = nil;
505 this = nil;
506
507}#<<
508
509initProto_V( )
510{#>>
511 if (DEBUG)
512 sys->print( "In initProto routine\n");
513 return;
514}#<<
515
516socketSetOption_I_Z_rObject_V( this : ref PlainSocketImpl_obj, p0 : int,p1 : int,p2 : JObject)
517{#>>
518 # p0 = opt
519 # p1 = enable
520 # p2 = val
521
522 if (DEBUG)
523 sys->print( "In SocketSetOption routine");
524
525 if ( this.cfd == nil ) {
526 if (DEBUG)
527 sys->print("PlainSocketImplSetOption: Null this.fd\n");
528 jni->ThrowException("java.net.SocketException", "Socket Closed");
529 }
530
531 if (this.ctype == jnet->SOCK_STREAM)
532 ctype := "tcp";
533 else
534 ctype = "udp";
535
536 if( p0 == jnet->TCP_NODELAY )
537 s := "tcp_nodelay " + string p1;
538 else if ( p0 == jnet->SO_LINGER )
539 if ( p1 > 0 ) {
540 if( p2 != nil ) {
541 v := jni->GetObjField( p2, "value", "I");
542 vl := v.Int();
543 s = "linger " + string vl;
544 }
545 } else
546 s = "linger " + "-1";
547 else
548 jni->ThrowException( "java.net.SocketException",
549 "Socket Option Unsupported");
550
551 if ( DEBUG )
552 sys->print("SocketSetOpt: Option given is: %s\n", s );
553
554 n := sys->write( this.cfd.fd, array of byte s, len array of byte s );
555
556 if( n <= 0 ) {
557 if (DEBUG)
558 sys->print( "SetSockOpt: cmd to ctl file returned bad byte count %d\n",n);
559 jni->ThrowException( "java.net.SocketException",
560 "SetSocketOption error");
561 }
562}#<<
563
564socketGetOption_I_I( this : ref PlainSocketImpl_obj, p0 : int) : int
565{#>>
566
567 temp,ctype,dir: string;
568 buf:= array[256] of byte;
569 s,str: string;
570 iplist,st: list of string;
571 m,n,i : int;
572
573 # p0 == socket option
574
575 if (DEBUG)
576 sys->print( "In SocketGetOption routine");
577
578 if ( this.fd == nil ) {
579 if (DEBUG)
580 sys->print("PlainSocketImplGetOption: this.fd is null\n");
581 jni->ThrowException("java.net.SocketException", "Socket Closed");
582 }
583
584
585 if (this.ctype == jnet->SOCK_STREAM)
586 ctype = "tcp";
587 else
588 ctype = "udp";
589
590 if (p0 == jnet->SO_LINGER )
591 s = "linger";
592 else if ( p0 == jnet->TCP_NODELAY )
593 s = "tcp_nodelay";
594 else if ( p0 == jnet->SO_BINADDR ){
595 sfd := sys->open("/dev/sysname", sys->OREAD);
596 if ( sfd == nil ) {
597 jni->ThrowException( "java.net.SocketException",
598 "socketGetOpt: Inferno sysname file open failed");
599 }
600
601 if(( m = sys->read(sfd, buf, len buf)) < 0 ) {
602 if (DEBUG)
603 sys->print("SocketGetOpt: SO_BINADDR: /dev/sysname read failed\n");
604 return -1;
605 }
606 st = srv->iph2a(string buf[0:m]);
607 if (st == nil) {
608 if (DEBUG)
609 sys->print("sockGetOpt: iph2a returned nil list\n");
610 jni->ThrowException( "java.net.SocketException",
611 "socketGetOption: SO_BINADDR: Unable to get local address");
612 }
613 str = hd st;
614 if (DEBUG)
615 sys->print("socketGetOption: st hd = %s\n", str);
616 # insure net byte ordered byte[]
617 ( i, iplist ) = sys->tokenize( str, ".");
618 if ( i == 0 ) {
619 if (DEBUG)
620 sys->print("sockGetOpt: tokenize 0 size list\n");
621 jni->ThrowException( "java.net.SocketException",
622 "socketGetOption: SO_BINADDR: Unable tokenize local address");
623 }
624 b:= array[len iplist] of byte;
625 for (j:=0; j<len iplist; j++) {
626 temp = hd iplist;
627 if (DEBUG )
628 sys->print("socketGetOpt: temp = %s\n", temp);
629 iplist = tl iplist;
630 b[j] = byte temp;
631 }
632 i=0;
633 i |= int ( b[0] << 24) ;
634 i |= int ( b[1] << 16 );
635 i |= int ( b[2] << 8 );
636 i |= int ( b[3] );
637 if (DEBUG )
638 sys->print("socketGetOpt: returning BINADDR = %d\n", i);
639 return i;
640 } else
641 jni->ThrowException( "java.net.SocketException",
642 "socketGetOption: Unknown Option");
643
644
645 # Get status file string ...
646 dir = "/net/" + ctype + "/" + string this.connection + "/status";
647
648 if ((sfd := sys->open( dir, sys->OREAD )) == nil ) {
649 if (DEBUG)
650 sys->print("socketGetOpt: Open status file %s return"+
651 "ed nil fd\n", dir);
652 jni->ThrowException( "java.net.SocketException",
653 "socketGetOpt: Inferno Status file open failed");
654 }
655
656 n = sys->read(sfd, buf, len buf);
657 if ( n <= 0 ) {
658 if( DEBUG )
659 sys->print("socketGetOpt: status file bad read %d\n", n);
660 return -1;
661 }
662 if (DEBUG)
663 sys->print("socketGetOpt: status file has: %s\n", string buf[0:n]);
664
665 (m, st) = sys->tokenize( string buf[:n], " \t\n");
666 if ( m == 0 )
667 jni->ThrowException( "java.net.SocketException",
668 "socketGetOption: Unable to tokenize status info");
669
670 for(i=0;i<m;i++) {
671 str = hd st;
672 st = tl st;
673 if ( strp->prefix( str, s )) {
674 if (p0 == jnet -> SO_LINGER)
675 return int hd st;
676 else if ( p0 == jnet -> TCP_NODELAY)
677 if ( int hd st != 0 )
678 return 0;
679 else
680 break;
681 }
682 }
683
684 return -1;
685}#<<
java/pkg2/java/net/PlainSocketImpl_L.m+30−0
@@ -0,0 +1,30 @@
1# generated file edit with care
2
3PlainSocketImpl_L : module
4{
5 PlainSocketImpl_obj : adt
6 {
7 cl_mod : ClassModule;
8 cfd : ref FileDescriptor_obj;
9 ctype : int;
10 connection : int;
11 fd : ref FileDescriptor_obj;
12 address : ref InetAddress_obj;
13 port : int;
14 localport : int;
15 timeout : int;
16 };
17
18 init : fn( jni_p : JNI );
19 socketCreate_Z_V : fn( this : ref PlainSocketImpl_obj, p0 : int);
20 socketConnect_rInetAddress_I_V : fn( this : ref PlainSocketImpl_obj, p0 : ref InetAddress_obj,p1 : int);
21 socketBind_rInetAddress_I_V : fn( this : ref PlainSocketImpl_obj, p0 : ref InetAddress_obj,p1 : int);
22 socketListen_I_V : fn( this : ref PlainSocketImpl_obj, p0 : int);
23 socketAccept_rSocketImpl_V : fn( this : ref PlainSocketImpl_obj, p0 : ref SocketImpl_obj);
24 socketAvailable_I : fn( this : ref PlainSocketImpl_obj) : int;
25 socketClose_V : fn( this : ref PlainSocketImpl_obj);
26 initProto_V : fn( );
27 socketSetOption_I_Z_rObject_V : fn( this : ref PlainSocketImpl_obj, p0 : int,p1 : int,p2 : JObject);
28 socketGetOption_I_I : fn( this : ref PlainSocketImpl_obj, p0 : int) : int;
29
30};
java/pkg2/java/net/ProtocolException.java+0−0

Empty file added.

java/pkg2/java/net/ServerSocket.java+0−0

Empty file added.

java/pkg2/java/net/Socket.java+0−0

Empty file added.

java/pkg2/java/net/SocketException.java+0−0

Empty file added.

java/pkg2/java/net/SocketImpl.java+0−0

Empty file added.

java/pkg2/java/net/SocketImplFactory.java+0−0

Empty file added.

java/pkg2/java/net/SocketImpl_L.m+19−0
@@ -0,0 +1,19 @@
1# generated file edit with care
2
3SocketImpl_L : module
4{
5 SocketImpl_obj : adt
6 {
7 cl_mod : ClassModule;
8 cfd : ref FileDescriptor_obj;
9 ctype: int;
10 connection: int;
11 fd : ref FileDescriptor_obj;
12 address : ref InetAddress_obj;
13 port : int;
14 localport : int;
15 };
16
17 init : fn( jni_p : JNI );
18
19};
java/pkg2/java/net/SocketInputStream.java+0−0

Empty file added.

java/pkg2/java/net/SocketInputStream_L.b+173−0
@@ -0,0 +1,173 @@
1implement SocketInputStream_L;
2
3include "jni.m";
4 jni : JNI;
5 ClassModule,
6 JString,
7 JArray,
8 JArrayI,
9 JArrayC,
10 JArrayB,
11 JArrayS,
12 JArrayJ,
13 JArrayF,
14 JArrayD,
15 JArrayZ,
16 JArrayJObject,
17 JArrayJString,
18 JClass,
19 JObject : import jni;
20
21#>> extra pre includes here
22
23#<<
24
25include "SocketInputStream_L.m";
26
27#>> extra post includes here
28
29include "jnet.m";
30 jnet: JNET;
31
32include "java/io/FileDescriptor_L.m";
33 fildes: FileDescriptor_L;
34
35include "InetAddress_L.m";
36 inet: InetAddress_L;
37
38FileDescriptor_obj: import fildes;
39InetAddress_obj: import inet;
40
41include "SocketImpl_L.m";
42 sock: SocketImpl_L;
43
44SocketImpl_obj: import sock;
45
46include "PlainSocketImpl_L.m";
47 psock: PlainSocketImpl_L;
48
49sys: Sys;
50strp: String;
51DEBUG: import jnet;
52FD: import sys;
53
54PlainSocketImpl_obj: import psock;
55
56#<<
57
58init( jni_p : JNI )
59{
60 # save java native inteface mod instance
61 jni = jni_p;
62 #>>extra initialization here
63
64 sys = jni->sys;
65 strp = jni->str;
66
67 #<<
68}
69
70socketRead_aB_I_I_I( this : ref SocketInputStream_obj, p0 : JArrayB,p1 : int,p2 : int) : int
71{#>>
72
73
74 st: list of string;
75 str: string;
76 m: int;
77
78 # p1 = offset
79 # p2 = length
80
81 if (p0 == nil ) {
82 if ( DEBUG )
83 sys->print( "socketRead: p0 ptr to JArrayB is nil\n");
84 jni->ThrowException( "java.lang.NullPointerException", "");
85 }
86
87 if (this.fd == nil ) {
88 if ( DEBUG )
89 sys->print( "socketRead: this.fd == 0, socket must be closed\n");
90 jni->ThrowException( "java.net.SocketException", "Socket was closed");
91 }
92
93 if ( p2 <0 || p1 < 0 || p1 + p2 > len p0.ary ) {
94 if ( DEBUG )
95 sys->print( "socketRead: offset: %d/length: %d wrong in byte array\n",p1,p2);
96 jni->ThrowException( "java.lang.ArrayIndexOutOfBoundsException", "");
97 }
98
99
100 if (this.impl == nil ) {
101 if ( DEBUG )
102 sys->print( "socketRead: p0 ptr to SocketImpl is nil\n");
103 jni->ThrowException( "java.lang.NullPointerException", "null SocketImpl ref");
104 }
105
106
107 # The TIMEOUT logic... Note modifications to SocketInputStream_L.m
108 # had to be made to support impl ptr as a ref to PlainSocketImpl_obj instead
109 # of JOBJECT...
110
111 if( this.impl.timeout != 0 ) {
112 temp:= jnet->timeout + " " + string this.impl.timeout;
113 rc := sys->write(this.impl.cfd.fd, array of byte temp, len temp);
114 if (DEBUG)
115 sys->print("socketRead: fixing timeout value %s\n", string this.impl.timeout);
116 if ( rc <= 0 )
117 jni->ThrowException("java.net.SocketException",
118 "socketRead: Unable to set timeout");
119 }
120
121 # Do Read of data file into buffer...
122 if (DEBUG)
123 sys->print("Reading into JArrayB for %d bytes\n",p2);
124
125 n := sys->read(this.fd.fd, array of byte p0.ary[p1: ], p2);
126
127 if (DEBUG)
128 sys->print("SocketInputStream: read of socket: %s\n", string p0.ary[p1:n]);
129
130 # Check status file to for timeout...
131
132 if (this.impl.ctype == jnet->SOCK_STREAM)
133 ctype:= "tcp";
134 else
135 ctype = "udp";
136
137 buf:= array[256] of byte;
138
139 dir := "/net/" + ctype + "/" + string this.impl.connection + "/status";
140 sfd := sys->open( dir, sys->OREAD );
141 if (sfd == nil ) {
142 if (DEBUG)
143 sys->print( "socketInputStreamRead: Open of status file %s returned nil fd\n", dir);
144 jni->ThrowException( "java.net.SocketException",
145 "socketInputStreamRead: Read failed");
146 }
147
148 k := sys->read(sfd, buf, len buf);
149 if (DEBUG)
150 sys->print("socketInputStreamRead: status file has: %s\n", string buf[0:k]);
151 if ( k > 0 ) {
152 (m, st) = sys->tokenize( string buf, " \t\n");
153 for(i:=0;i<m;i++) {
154 str = hd st;
155 if ( strp->prefix( str, "timed-out" )) {
156 if (DEBUG)
157 sys->print( "socketAccept: timeout\n");
158 jni->ThrowException("java.io.InterruptedIOException",
159 "socketInputStreamRead: Read timed out.");
160 }
161 st = tl st;
162 }
163 }
164
165
166 if ( n < 0 ) {
167 if ( DEBUG )
168 sys->print( "socketRead: Read failed with code %d\n", n);
169 jni->ThrowException( "java.net.SocketException", "Read failed");
170 }
171 return n;
172
173}#<<
java/pkg2/java/net/SocketInputStream_L.m+17−0
@@ -0,0 +1,17 @@
1# generated file edit with care
2
3SocketInputStream_L : module
4{
5 SocketInputStream_obj : adt
6 {
7 cl_mod : ClassModule;
8 fd : ref FileDescriptor_obj;
9 eof : int;
10 impl : ref PlainSocketImpl_obj;
11 temp : JArrayB;
12 };
13
14 init : fn( jni_p : JNI );
15 socketRead_aB_I_I_I : fn( this : ref SocketInputStream_obj, p0 : JArrayB,p1 : int,p2 : int) : int;
16
17};
java/pkg2/java/net/SocketOptions.java+0−0

Empty file added.

java/pkg2/java/net/SocketOutputStream.java+0−0

Empty file added.

java/pkg2/java/net/SocketOutputStream_L.b+95−0
@@ -0,0 +1,95 @@
1implement SocketOutputStream_L;
2
3include "jni.m";
4 jni : JNI;
5 ClassModule,
6 JString,
7 JArray,
8 JArrayI,
9 JArrayC,
10 JArrayB,
11 JArrayS,
12 JArrayJ,
13 JArrayF,
14 JArrayD,
15 JArrayZ,
16 JArrayJObject,
17 JArrayJString,
18 JClass,
19 JObject : import jni;
20
21#>> extra pre includes here
22
23#<<
24
25include "SocketOutputStream_L.m";
26
27#>> extra post includes here
28
29
30include "jnet.m";
31 jnet: JNET;
32
33include "java/io/FileDescriptor_L.m";
34 fildes: FileDescriptor_L;
35
36include "InetAddress_L.m";
37 inet: InetAddress_L;
38
39sys: Sys;
40
41DEBUG: import jnet;
42FD: import sys;
43FileDescriptor_obj: import fildes;
44InetAddress_obj: import inet;
45
46#<<
47
48init( jni_p : JNI )
49{
50 # save java native inteface mod instance
51 jni = jni_p;
52 #>>extra initialization here
53
54 sys = jni->sys;
55
56 if (DEBUG)
57 sys->print("socketOutputStream: init()\n");
58 #<<
59}
60
61socketWrite_aB_I_I_V( this : ref SocketOutputStream_obj, p0 : JArrayB,p1 : int,p2 : int)
62{#>>
63
64
65 if (this.fd == nil ) {
66 if ( DEBUG )
67 sys->print( "socketWrite: this.fd == 0, socket must be closed\n");
68 jni->ThrowException( "java.net.SocketException", "Socket was closed");
69 }
70
71 if ( p2 <0 || p1 < 0 || p1 + p2 > len p0.ary ) {
72 if ( DEBUG )
73 sys->print( "socketWrite: offset: %d/length: %d wrong in byte array\n",p1,p2);
74 jni->ThrowException( "java.lang.ArrayIndexOutOfBoundsException", "");
75 }
76
77 if (p0 == nil ) {
78 if ( DEBUG )
79 sys->print( "socketWrite: p0 ptr to JArrayB is nil\n");
80 jni->ThrowException( "java.lang.NullPointerException", "");
81 }
82
83 # Write into buffer...
84 if (DEBUG)
85 sys->print("Writing into JArrayB for %d bytes\n",p2);
86 n := sys->write(this.fd.fd, p0.ary[p1: ], p2);
87 if ( n < 0 ) {
88 if ( DEBUG )
89 sys->print( "socketWrite: Read failed with code %d\n", n);
90 jni->ThrowException( "java.net.SocketException", "Write failed");
91 }
92 return;
93
94}#<<
95
java/pkg2/java/net/SocketOutputStream_L.m+16−0
@@ -0,0 +1,16 @@
1# generated file edit with care
2
3SocketOutputStream_L : module
4{
5 SocketOutputStream_obj : adt
6 {
7 cl_mod : ClassModule;
8 fd : ref FileDescriptor_obj;
9 impl : JObject;
10 temp : JArrayB;
11 };
12
13 init : fn( jni_p : JNI );
14 socketWrite_aB_I_I_V : fn( this : ref SocketOutputStream_obj, p0 : JArrayB,p1 : int,p2 : int);
15
16};
java/pkg2/java/net/URL.java+0−0

Empty file added.

java/pkg2/java/net/URLConnection.java+0−0

Empty file added.

java/pkg2/java/net/URLEncoder.java+0−0

Empty file added.

java/pkg2/java/net/URLStreamHandler.java+0−0

Empty file added.

java/pkg2/java/net/URLStreamHandlerFactory.java+0−0

Empty file added.

java/pkg2/java/net/UnknownHostException.java+0−0

Empty file added.

java/pkg2/java/net/UnknownServiceException.java+0−0

Empty file added.

java/pkg2/java/net/jnet.m+23−0
@@ -0,0 +1,23 @@
1JNET: module
2{
3 # These are taken from solaris
4
5 AF_INET: con 2;
6 INADDR_ANY: con 0;
7
8 SOCK_STREAM: con 2;
9 SOCK_DGRAM: con 1;
10 SO_LINGER: con 16r80;
11 SO_REUSEADDR: con 16r04;
12 TCP_NODELAY: con 16r01;
13
14 SO_BINADDR: con 16r0F;
15 IP_MULTICAST_IF: con 16r10;
16
17 timeout: con "rcvtimeo";
18 linger: con "linger";
19 nodelay: con "nodelay";
20
21 IPADDRLEN: con 4;
22 DEBUG: con 0;
23};
java/pkg2/java/net/mkfile+100−0
@@ -0,0 +1,100 @@
1<../../../../mkconfig
2
3TARG=\
4 BindException.dis\
5 ConnectException.dis\
6 ContentHandler.dis\
7 ContentHandlerFactory.dis\
8 DatagramPacket.dis\
9 DatagramSocket.dis\
10 DatagramSocketImpl.dis\
11 FileNameMap.dis\
12 HttpURLConnection.dis\
13 InetAddress.dis\
14 InetAddressImpl.dis\
15 MalformedURLException.dis\
16 MulticastSocket.dis\
17# for NoRouteToHostException.dis\
18 r9PkdNz+JgG1Itcw2f6YJ.dis\
19# for PlainDatagramSocketImpl.dis\
20 5zd2a5CaD3UBT8TZHMXzK.dis\
21 PlainSocketImpl.dis\
22 ProtocolException.dis\
23 ServerSocket.dis\
24 Socket.dis\
25 SocketException.dis\
26 SocketImpl.dis\
27 SocketImplFactory.dis\
28 SocketInputStream.dis\
29 SocketOptions.dis\
30 SocketOutputStream.dis\
31 URL.dis\
32 URLConnection.dis\
33 URLEncoder.dis\
34 URLStreamHandler.dis\
35# for URLStreamHandlerFactory.dis\
36 O1DuMby-OVJt3a8-blgAl.dis\
37 UnknownContentHandler.dis\
38 UnknownHostException.dis\
39# for UnknownServiceException.dis\
40 r10zsfdVB4eiod6AyF43R.dis\
41# Limbo code\
42 InetAddressImpl_L.dis\
43# for PlainDatagramSocketImpl_L.dis\
44 5zd2a5CaD3UBT8TZHMXzK_L.dis\
45 PlainSocketImpl_L.dis\
46 SocketInputStream_L.dis\
47 SocketOutputStream_L.dis\
48
49MODULES=\
50 $ROOT/java/module/classloader.m\
51 $ROOT/java/module/jni.m\
52 $ROOT/java/module/cast.m\
53 DatagramPacket_L.m\
54 DatagramSocketImpl_L.m\
55 InetAddressImpl_L.m\
56 InetAddress_L.m\
57 PlainDatagramSocketImpl_L.m\
58 PlainSocketImpl_L.m\
59 SocketImpl_L.m\
60 SocketInputStream_L.m\
61 SocketOutputStream_L.m\
62 jnet.m\
63
64SYSMODULES=\
65 draw.m\
66 hash.m\
67 keyring.m\
68 loader.m\
69 math.m\
70 string.m\
71 sys.m\
72
73DISBIN=$ROOT/java/dis/java/java/net
74
75<$ROOT/mkfiles/mkjava
76
77LIMBOINCL=\
78 $LIMBOINCL\
79 -I$ROOT/java/pkg\
80
81InetAddressImpl.dis: InetAddress.class
82 j2d InetAddressImpl.class
83
84r9PkdNz+JgG1Itcw2f6YJ.dis: NoRouteToHostException.class
85 j2d NoRouteToHostException.class
86
875zd2a5CaD3UBT8TZHMXzK.dis: PlainDatagramSocketImpl.class
88 j2d PlainDatagramSocketImpl.class
89
90UnknownContentHandler.dis: URLConnection.class
91 j2d UnknownContentHandler.class
92
93O1DuMby-OVJt3a8-blgAl.dis: URLStreamHandlerFactory.class
94 j2d URLStreamHandlerFactory.class
95
96r10zsfdVB4eiod6AyF43R.dis: UnknownServiceException.class
97 j2d UnknownServiceException.class
98
995zd2a5CaD3UBT8TZHMXzK_L.dis: PlainDatagramSocketImpl_L.b
100 limbo $LIMBOFLAGS $LIMBOINCL -gw -o $target PlainDatagramSocketImpl_L.b
java/pkg2/java/security/DigestException.java+0−0

Empty file added.

java/pkg2/java/security/DigestOutputStream.java+0−0

Empty file added.

java/pkg2/java/security/MessageDigest.java+0−0

Empty file added.

java/pkg2/java/security/NoSuchAlgorithmException.java+0−0

Empty file added.

java/pkg2/java/security/NoSuchProviderException.java+0−0

Empty file added.

java/pkg2/java/security/Provider.java+0−0

Empty file added.

java/pkg2/java/security/Security.java+0−0

Empty file added.

java/pkg2/java/security/mkfile+22−0
@@ -0,0 +1,22 @@
1<../../../../mkconfig
2
3TARG=\
4 DigestException.dis\
5 DigestOutputStream.dis\
6 MessageDigest.dis\
7# for NoSuchAlgorithmException.dis\
8 RnrbF1WrtSRsKMq-afpiR.dis\
9# for NoSuchProviderException.dis\
10 5GZfzesuxCFJ93DgPnKzv.dis\
11 Provider.dis\
12 Security.dis\
13
14DISBIN=$ROOT/java/dis/java/java/security
15
16<$ROOT/mkfiles/mkjava
17
18RnrbF1WrtSRsKMq-afpiR.dis: NoSuchAlgorithmException.class
19 j2d $prereq
20
215GZfzesuxCFJ93DgPnKzv.dis: NoSuchProviderException.class
22 j2d $prereq
java/pkg2/java/util/BitSet.java+0−0

Empty file added.

java/pkg2/java/util/Calendar.java+782−0
@@ -0,0 +1,782 @@
1/*
2 * @(#)Calendar.java 1.23 97/01/29
3 *
4 * (C) Copyright Taligent, Inc. 1996 - All Rights Reserved
5 * (C) Copyright IBM Corp. 1996 - All Rights Reserved
6 *
7 * Portions copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
8 *
9 * The original version of this source code and documentation is copyrighted
10 * and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
11 * materials are provided under terms of a License Agreement between Taligent
12 * and Sun. This technology is protected by multiple US and International
13 * patents. This notice and attribution to Taligent may not be removed.
14 * Taligent is a registered trademark of Taligent, Inc.
15 *
16 * Permission to use, copy, modify, and distribute this software
17 * and its documentation for NON-COMMERCIAL purposes and without
18 * fee is hereby granted provided that this copyright notice
19 * appears in all copies. Please refer to the file "copyright.html"
20 * for further important copyright and licensing information.
21 *
22 * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
23 * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
24 * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
25 * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
26 * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
27 * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
28 *
29 */
30
31package java.util;
32
33import java.io.Serializable;
34import java.io.ObjectInputStream;
35
36/**
37 * <code>Calendar</code> is an abstract base class for converting between
38 * a <code>Date</code> object and a set of integer fields such as
39 * <code>YEAR</code>, <code>MONTH</code>, <code>DAY</code>, <code>HOUR</code>,
40 * and so on. (A <code>Date</code> object represents a specific instant in
41 * time with millisecond precision. See
42 * <a href="java.util.Date.html"><code>java.util.Date</code></a>
43 * for information about the <code>Date</code> class.)
44 *
45 * <p>
46 * Subclasses of <code>Calendar</code> interpret a <code>Date</code>
47 * according to the rules of a specific calendar system. The JDK
48 * provides one concrete subclass of <code>Calendar</code>:
49 * <code>GregorianCalendar</code>. Future subclasses could represent
50 * the various types of lunar calendars in use in many parts of the world.
51 *
52 * <p>
53 * Like other locale-sensitive classes, <code>Calendar</code> provides a
54 * class method, <code>getInstance</code>, for getting a generally useful
55 * object of this type. <code>Calendar</code>'s <code>getInstance</code> method
56 * returns a <code>GregorianCalendar</code> object whose
57 * time fields have been initialized with the current date and time:
58 * <blockquote>
59 * <pre>
60 * Calendar rightNow = Calendar.getInstance();
61 * </pre>
62 * </blockquote>
63 *
64 * <p>
65 * A <code>Calendar</code> object can produce all the time field values
66 * needed to implement the date-time formatting for a particular language
67 * and calendar style (for example, Japanese-Gregorian, Japanese-Traditional).
68 *
69 * <p>
70 * When computing a <code>Date</code> from time fields, two special circumstances
71 * may arise: there may be insufficient information to compute the
72 * <code>Date</code> (such as only year and month but no day in the month),
73 * or there may be inconsistent information (such as "Tuesday, July 15, 1996"
74 * -- July 15, 1996 is actually a Monday).
75 *
76 * <p>
77 * <strong>Insufficient information.</strong> The calendar will use default
78 * information to specify the missing fields. This may vary by calendar; for
79 * the Gregorian calendar, the default for a field is the same as that of the
80 * start of the epoch: i.e., YEAR = 1970, MONTH = JANUARY, DATE = 1, etc.
81 *
82 * <p>
83 * <strong>Inconsistent information.</strong> The calendar will give preference
84 * to the combinations of fields in the following order (and disregard other
85 * inconsistent information).
86 *
87 * <blockquote>
88 * <pre>
89 * month + day-of-month
90 * month + week-of-month + day-of-week
91 * month + day-of-week-of-month + day-of-week
92 * day-of-year
93 * day-of-week + week-of-year
94 * hour-of-day
95 * ampm + hour-of-ampm
96 * </pre>
97 * </blockquote>
98 *
99 * <p>
100 * <strong>Note:</strong> for some non-Gregorian calendars, different
101 * fields may be necessary for complete disambiguation. For example, a full
102 * specification of the historial Arabic astronomical calendar requires year,
103 * month, day-of-month <em>and</em> day-of-week in some cases.
104 *
105 * <p>
106 * <strong>Note:</strong> There are certain possible ambiguities in
107 * interpretation of certain singular times, which are resolved in the
108 * following ways:
109 * <ol>
110 * <li> 24:00:00 "belongs" to the following day. That is,
111 * 23:59 on Dec 31, 1969 &lt; 24:00 on Jan 1, 1970 &lt; 24:01:00 on Jan 1, 1970
112 *
113 * <li> Although historically not precise, midnight also belongs to "am",
114 * and noon belongs to "pm", so on the same day,
115 * 12:00 am (midnight) &lt; 12:01 am, and 12:00 pm (noon) &lt; 12:01 pm
116 * </ol>
117 *
118 * <p>
119 * The date or time format strings are not part of the definition of a
120 * calendar, as those must be modifiable or overridable by the user at
121 * runtime. Use <a href="java.text.DateFormat.html">java.text.DateFormat</a>
122 * to format dates.
123 *
124 * <p>
125 * <code>Calendar</code> provides an API for field "rolling", where fields
126 * can be incremented or decremented, but wrap around. For example, rolling the
127 * month up in the date "September 12, 1996" results in "October 12, 1996".
128 *
129 * <p>
130 * <code>Calendar</code> also provides a date arithmetic function for
131 * adding the specified (signed) amount of time to a particular time field.
132 * For example, subtracting 5 days from the date "September 12, 1996" results
133 * in "September 7, 1996".
134 *
135 * @see Date
136 * @see GregorianCalendar
137 * @see TimeZone
138 * @see java.text.DateFormat
139 * @version 1.17 06 Jan 1997
140 * @author Mark Davis, David Goldsmith, Chen-Lieh Huang
141 */
142public abstract class Calendar implements Serializable, Cloneable {
143
144 /**
145 * Useful constant for date and time. Used in time fields.
146 * ERA is calendar specific.
147 */
148 public final static int ERA = 0;
149 /**
150 * Useful constant for date and time. Used in time fields.
151 */
152 public final static int YEAR = 1;
153 /**
154 * Useful constant for date and time. Used in time fields.
155 */
156 public final static int MONTH = 2;
157 /**
158 * Useful constant for date and time. Used in time fields.
159 */
160 public final static int WEEK_OF_YEAR = 3;
161 /**
162 * Useful constant for date and time. Used in time fields.
163 */
164 public final static int WEEK_OF_MONTH = 4;
165 /**
166 * Useful constant for date and time. Used in time fields.
167 * DATE is the time field name for day-of-month.
168 */
169 public final static int DATE = 5;
170 /**
171 * Useful constant for date and time. Used in time fields.
172 * This is a synonym for DATE.
173 */
174 public final static int DAY_OF_MONTH = 5;
175 /**
176 * Useful constant for date and time. Used in time fields.
177 */
178 public final static int DAY_OF_YEAR = 6;
179 /**
180 * Useful constant for date and time. Used in time fields.
181 */
182 public final static int DAY_OF_WEEK = 7;
183 /**
184 * Useful constant for date and time. Used in time fields.
185 */
186 public final static int DAY_OF_WEEK_IN_MONTH = 8;
187 /**
188 * Useful constant for date and time. Used in time fields.
189 */
190 public final static int AM_PM = 9;
191 /**
192 * Useful constant for date and time. Used in time fields.
193 * HOUR is used for the 12-hour clock.
194 */
195 public final static int HOUR = 10;
196 /**
197 * Useful constant for date and time. Used in time fields.
198 * HOUR_OF_DAY is used for the 24-hour clock.
199 */
200 public final static int HOUR_OF_DAY = 11;
201 /**
202 * Useful constant for date and time. Used in time fields.
203 */
204 public final static int MINUTE = 12;
205 /**
206 * Useful constant for date and time. Used in time fields.
207 */
208 public final static int SECOND = 13;
209 /**
210 * Useful constant for date and time. Used in time fields.
211 */
212 public final static int MILLISECOND = 14;
213 /**
214 * Useful constant for date and time. Used in time fields.
215 */
216 public final static int ZONE_OFFSET = 15;
217 /**
218 * Useful constant for date and time. Used in time fields.
219 */
220 public final static int DST_OFFSET = 16;
221 /**
222 * Useful constant for date and time.
223 * FIELD_COUNT is used for the time field array creation.
224 */
225 public final static int FIELD_COUNT = 17;
226
227 /**
228 * Useful constant for days of week. Used in GregorianCalendar.
229 */
230 public final static int SUNDAY = 1;
231 /**
232 * Useful constant for days of week. Used in GregorianCalendar.
233 */
234 public final static int MONDAY = 2;
235 /**
236 * Useful constant for days of week. Used in GregorianCalendar.
237 */
238 public final static int TUESDAY = 3;
239 /**
240 * Useful constant for days of week. Used in GregorianCalendar.
241 */
242 public final static int WEDNESDAY = 4;
243 /**
244 * Useful constant for days of week. Used in GregorianCalendar.
245 */
246 public final static int THURSDAY = 5;
247 /**
248 * Useful constant for days of week. Used in GregorianCalendar.
249 */
250 public final static int FRIDAY = 6;
251 /**
252 * Useful constant for days of week. Used in GregorianCalendar.
253 */
254 public final static int SATURDAY = 7;
255 /**
256 * Useful constant for month. Used in GregorianCalendar.
257 * Note: Calendar month is now 0-based.
258 */
259 public final static int JANUARY = 0;
260 /**
261 * Useful constant for month. Used in GregorianCalendar.
262 */
263 public final static int FEBRUARY = 1;
264 /**
265 * Useful constant for month. Used in GregorianCalendar.
266 */
267 public final static int MARCH = 2;
268 /**
269 * Useful constant for month. Used in GregorianCalendar.
270 */
271 public final static int APRIL = 3;
272 /**
273 * Useful constant for month. Used in GregorianCalendar.
274 */
275 public final static int MAY = 4;
276 /**
277 * Useful constant for month. Used in GregorianCalendar.
278 */
279 public final static int JUNE = 5;
280 /**
281 * Useful constant for month. Used in GregorianCalendar.
282 */
283 public final static int JULY = 6;
284 /**
285 * Useful constant for month. Used in GregorianCalendar.
286 */
287 public final static int AUGUST = 7;
288 /**
289 * Useful constant for month. Used in GregorianCalendar.
290 */
291 public final static int SEPTEMBER = 8;
292 /**
293 * Useful constant for month. Used in GregorianCalendar.
294 */
295 public final static int OCTOBER = 9;
296 /**
297 * Useful constant for month. Used in GregorianCalendar.
298 */
299 public final static int NOVEMBER = 10;
300 /**
301 * Useful constant for month. Used in GregorianCalendar.
302 */
303 public final static int DECEMBER = 11;
304 /**
305 * Useful constant for month. Used in GregorianCalendar.
306 * UNDECIMBER is an artifical name. This 13th month is for lunar
307 * calendars.
308 */
309 public final static int UNDECIMBER = 12;
310 /**
311 * Useful constant for hour in 12-hour clock. Used in GregorianCalendar.
312 */
313 public final static int AM = 0;
314 /**
315 * Useful constant for hour in 12-hour clock. Used in GregorianCalendar.
316 */
317 public final static int PM = 1;
318
319 //
320 // Internal notes:
321 // Calendar contains two kinds of time representations: current "time" in
322 // milliseconds, and a set of time "fields" representing the current time.
323 // Calling setTime() method only sets the current time without recomputing
324 // the time fields until the next get() method is called. Similarly,
325 // calling one of the set() methods only sets time fields without
326 // recomputing the current time value until the next getTime() method is
327 // called.
328 //
329
330 /**
331 * The time fields containing values into which the millis is computed.
332 */
333 protected int fields[];
334 /**
335 * The flags which tell if a specified time field for the calendar is set.
336 */
337 protected boolean isSet[];
338 /**
339 * The current time set for the calendar.
340 */
341 protected long time;
342 /**
343 * The flag which indicates if the current time is set for the calendar.
344 */
345 protected boolean isTimeSet;
346 /**
347 * The flag which tells if the time fields are set for the calendar.
348 */
349 protected boolean areFieldsSet;
350
351 /**
352 * @see #setLenient
353 */
354 private boolean lenient=true;
355
356 /**
357 * Time zone affects the time calculation done by Calendar. Calendar uses
358 * the time zone data to produce the local time. Both firstDayOfWeek
359 * and minimalDaysInFirstWeek are locale-dependent. For example,
360 * in US locale, firstDayOfWeek is SUNDAY; minimalDaysInFirstWeek is 1.
361 * They are used to figure out the week count for a specific date for
362 * a given locale. These must be set when a Calendar is constructed.
363 */
364 private TimeZone zone;
365 private int firstDayOfWeek;
366 private int minimalDaysInFirstWeek;
367
368 /**
369 * Constructs a Calendar with the default time zone as returned
370 * by TimeZone.getDefault(), and the default locale.
371 * @see TimeZone#getDefault
372 */
373 protected Calendar()
374 {
375 throw new NoSuchElementException();
376 }
377
378 /**
379 * Constructs a Calendar with the given time zone and locale.
380 * @param zone the given time zone.
381 */
382 protected Calendar(TimeZone zone, Locale aLocale)
383 {
384 throw new NoSuchElementException();
385 }
386
387 /**
388 * Gets a Calendar using the default timezone and locale.
389 * @return a Calendar.
390 */
391 public static synchronized Calendar getInstance()
392 {
393 throw new NoSuchElementException();
394 }
395
396 /**
397 * Gets a Calendar using the given timezone and default locale.
398 * @param zone the given timezone.
399 * @return a Calendar.
400 */
401 public static synchronized Calendar getInstance(TimeZone zone)
402 {
403 throw new NoSuchElementException();
404 }
405
406 /**
407 * Gets a Calendar using the default timezone and given locale.
408 * @param aLocale the given locale.
409 * @return a Calendar.
410 */
411 public static synchronized Calendar getInstance(Locale aLocale)
412 {
413 throw new NoSuchElementException();
414 }
415
416 /**
417 * Gets a Calendar using the given timezone and given locale.
418 * @param zone the given timezone.
419 * @param aLocale the given locale.
420 * @return a Calendar.
421 */
422 public static synchronized Calendar getInstance(TimeZone zone,
423 Locale aLocale)
424 {
425 throw new NoSuchElementException();
426 }
427
428 /**
429 * Gets the set of locales for which Calendars are installed.
430 * @return the set of locales for which Calendars are installed.
431 */
432 public static synchronized Locale[] getAvailableLocales()
433 {
434 throw new NoSuchElementException();
435 }
436
437 /**
438 * Converts Calendar's time field values to UTC as milliseconds.
439 */
440 protected abstract void computeTime();
441
442 /**
443 * Converts UTC as milliseconds to time field values.
444 * This allows you to sync up the time field values with
445 * a new time that is set for the calendar.
446 */
447 protected abstract void computeFields();
448
449 /**
450 * Gets this Calendar's current time.
451 * @return the current time.
452 */
453 public final Date getTime() {
454 throw new NoSuchElementException();
455 }
456
457 /**
458 * Sets this Calendar's current time with the given Date.
459 * @param date the given Date.
460 */
461 public final void setTime(Date date) {
462 throw new NoSuchElementException();
463 }
464
465 /**
466 * Gets this Calendar's current time as a long.
467 * @return the current time as milliseconds from the epoch.
468 */
469 protected long getTimeInMillis() {
470 throw new NoSuchElementException();
471 }
472
473 /**
474 * Sets this Calendar's current time from the given long value.
475 * @param date the new time in milliseconds from the epoch.
476 */
477 protected void setTimeInMillis( long millis ) {
478 throw new NoSuchElementException();
479 }
480
481
482 /**
483 * Gets the value for a given time field.
484 * @param field the given time field.
485 * @return the value for the given time field.
486 */
487 public final int get(int field)
488 {
489 throw new NoSuchElementException();
490 }
491
492 /**
493 * Gets the value for a given time field. This is an internal
494 * fast time field value getter for the subclasses.
495 * @param field the given time field.
496 * @return the value for the given time field.
497 */
498 protected final int internalGet(int field)
499 {
500 throw new NoSuchElementException();
501 }
502
503 /**
504 * Sets the time field with the given value.
505 * @param field the given time field.
506 * @param value the value to be set for the given time field.
507 */
508 public final void set(int field, int value)
509 {
510 throw new NoSuchElementException();
511 }
512
513 /**
514 * Sets the values for the fields year, month, and date.
515 * @param year the value used to set the YEAR time field.
516 * @param month the value used to set the MONTH time field.
517 * Month value is 0-based. e.g., 0 for January.
518 * @param date the value used to set the DATE time field.
519 */
520 public final void set(int year, int month, int date)
521 {
522 throw new NoSuchElementException();
523 }
524
525 /**
526 * Sets the values for the fields year, month, date, hour, and minute.
527 * @param year the value used to set the YEAR time field.
528 * @param month the value used to set the MONTH time field.
529 * Month value is 0-based. e.g., 0 for January.
530 * @param date the value used to set the DATE time field.
531 * @param hour the value used to set the HOUR_OF_DAY time field.
532 * @param minute the value used to set the MINUTE time field.
533 */
534 public final void set(int year, int month, int date, int hour, int minute)
535 {
536 throw new NoSuchElementException();
537 }
538
539 /**
540 * Sets the values for the fields year, month, date, hour, minute,
541 * and second.
542 * @param year the value used to set the YEAR time field.
543 * @param month the value used to set the MONTH time field.
544 * Month value is 0-based. e.g., 0 for January.
545 * @param date the value used to set the DATE time field.
546 * @param hour the value used to set the HOUR_OF_DAY time field.
547 * @param minute the value used to set the MINUTE time field.
548 * @param second the value used to set the SECOND time field.
549 */
550 public final void set(int year, int month, int date, int hour, int minute,
551 int second)
552 {
553 throw new NoSuchElementException();
554 }
555
556 /**
557 * Clears the values of all the time fields.
558 */
559 public final void clear()
560 {
561 throw new NoSuchElementException();
562 }
563
564 /**
565 * Clears the value in the given time field.
566 * @param field the time field to be cleared.
567 */
568 public final void clear(int field)
569 {
570 throw new NoSuchElementException();
571 }
572
573 /**
574 * Determines if the given time field has a value set.
575 * @return true if the given time field has a value set; false otherwise.
576 */
577 public final boolean isSet(int field)
578 {
579 throw new NoSuchElementException();
580 }
581
582 /**
583 * Fills in any unset fields in the time field list.
584 */
585 protected void complete()
586 {
587 throw new NoSuchElementException();
588 }
589
590 /**
591 * Compares the time field records.
592 * Equivalent to comparing result of conversion to UTC.
593 * @param when the Calendar to be compared with this Calendar.
594 * @return true if the current time of this Calendar is before
595 * the time of Calendar when; false otherwise.
596 */
597 abstract public boolean before(Object when);
598
599 /**
600 * Compares the time field records.
601 * Equivalent to comparing result of conversion to UTC.
602 * @param when the Calendar to be compared with this Calendar.
603 * @return true if the current time of this Calendar is after
604 * the time of Calendar when; false otherwise.
605 */
606 abstract public boolean after(Object when);
607
608 /**
609 * Date Arithmetic function.
610 * Adds the specified (signed) amount of time to the given time field,
611 * based on the calendar's rules. For example, to subtract 5 days from
612 * the current time of the calendar, you can achieve it by calling:
613 * <p>add(Calendar.DATE, -5).
614 * @param field the time field.
615 * @param amount the amount of date or time to be added to the field.
616 */
617 abstract public void add(int field, int amount);
618
619 /**
620 * Time Field Rolling function.
621 * Rolls (up/down) a single unit of time on the given time field. For
622 * example, to roll the current date up by one day, you can achieve it
623 * by calling:
624 * <p>roll(Calendar.DATE, true).
625 * When rolling on the year or Calendar.YEAR field, it will roll the year
626 * value in the range between 1 and the value returned by calling
627 * getMaximum(Calendar.YEAR).
628 * When rolling on the month or Calendar.MONTH field, other fields like
629 * date might conflict and, need to be changed. For instance,
630 * rolling the month on the date 01/31/96 will result in 03/02/96.
631 * When rolling on the hour-in-day or Calendar.HOUR_OF_DAY field, it will
632 * roll the hour value in the range between 0 and 23, which is zero-based.
633 * @param field the time field.
634 * @param up indicates if the value of the specified time field is to be
635 * rolled up or rolled down. Use true if rolling up, false otherwise.
636 */
637 abstract public void roll(int field, boolean up);
638
639 /**
640 * Sets the time zone with the given time zone value.
641 * @param value the given time zone.
642 */
643 public void setTimeZone(TimeZone value)
644 {
645 throw new NoSuchElementException();
646 }
647
648 /**
649 * Gets the time zone.
650 * @return the time zone object associated with this calendar.
651 */
652 public TimeZone getTimeZone()
653 {
654 throw new NoSuchElementException();
655 }
656
657 /**
658 * Specify whether or not date/time interpretation is to be lenient. With
659 * lenient interpretation, a date such as "February 942, 1996" will be
660 * treated as being equivalent to the 941st day after February 1, 1996.
661 * With strict interpretation, such dates will cause an exception to be
662 * thrown.
663 *
664 * @see java.text.DateFormat#setLenient
665 */
666 public void setLenient(boolean lenient)
667 {
668 throw new NoSuchElementException();
669 }
670
671 /**
672 * Tell whether date/time interpretation is to be lenient.
673 */
674 public boolean isLenient()
675 {
676 throw new NoSuchElementException();
677 }
678
679 /**
680 * Sets what the first day of the week is; e.g., Sunday in US,
681 * Monday in France.
682 * @param value the given first day of the week.
683 */
684 public void setFirstDayOfWeek(int value)
685 {
686 throw new NoSuchElementException();
687 }
688
689 /**
690 * Gets what the first day of the week is; e.g., Sunday in US,
691 * Monday in France.
692 * @return the first day of the week.
693 */
694 public int getFirstDayOfWeek()
695 {
696 throw new NoSuchElementException();
697 }
698
699 /**
700 * Sets what the minimal days required in the first week of the year are;
701 * For example, if the first week is defined as one that contains the first
702 * day of the first month of a year, call the method with value 1. If it
703 * must be a full week, use value 7.
704 * @param value the given minimal days required in the first week
705 * of the year.
706 */
707 public void setMinimalDaysInFirstWeek(int value)
708 {
709 throw new NoSuchElementException();
710 }
711
712 /**
713 * Gets what the minimal days required in the first week of the year are;
714 * e.g., if the first week is defined as one that contains the first day
715 * of the first month of a year, getMinimalDaysInFirstWeek returns 1. If
716 * the minimal days required must be a full week, getMinimalDaysInFirstWeek
717 * returns 7.
718 * @return the minimal days required in the first week of the year.
719 */
720 public int getMinimalDaysInFirstWeek()
721 {
722 throw new NoSuchElementException();
723 }
724
725 /**
726 * Gets the minimum value for the given time field.
727 * e.g., for Gregorian DAY_OF_MONTH, 1.
728 * @param field the given time field.
729 * @return the minimum value for the given time field.
730 */
731 abstract public int getMinimum(int field);
732
733 /**
734 * Gets the maximum value for the given time field.
735 * e.g. for Gregorian DAY_OF_MONTH, 31.
736 * @param field the given time field.
737 * @return the maximum value for the given time field.
738 */
739 abstract public int getMaximum(int field);
740
741 /**
742 * Gets the highest minimum value for the given field if varies.
743 * Otherwise same as getMinimum(). For Gregorian, no difference.
744 * @param field the given time field.
745 * @return the highest minimum value for the given time field.
746 */
747 abstract public int getGreatestMinimum(int field);
748
749 /**
750 * Gets the lowest maximum value for the given field if varies.
751 * Otherwise same as getMaximum(). e.g., for Gregorian DAY_OF_MONTH, 28.
752 * @param field the given time field.
753 * @return the lowest maximum value for the given time field.
754 */
755 abstract public int getLeastMaximum(int field);
756
757 /**
758 * Overrides Cloneable
759 */
760 public Object clone()
761 {
762 throw new NoSuchElementException();
763 }
764
765
766 // =======================privates===============================
767
768 /**
769 * Both firstDayOfWeek and minimalDaysInFirstWeek are locale-dependent.
770 * They are used to figure out the week count for a specific date for
771 * a given locale. These must be set when a Calendar is constructed.
772 * @param desiredLocale the given locale.
773 */
774 private void setWeekCountData(Locale desiredLocale)
775 {
776 throw new NoSuchElementException();
777 }
778
779 private void readObject(ObjectInputStream s) {
780 throw new NoSuchElementException();
781 }
782}
java/pkg2/java/util/Date.java+0−0

Empty file added.

java/pkg2/java/util/Date_L.b+180−0
@@ -0,0 +1,180 @@
1implement Date_L;
2
3# javal v1.3 generated file: edit with care
4
5include "jni.m";
6 jni : JNI;
7 ClassModule,
8 JString,
9 JArray,
10 JArrayI,
11 JArrayC,
12 JArrayB,
13 JArrayS,
14 JArrayJ,
15 JArrayF,
16 JArrayD,
17 JArrayZ,
18 JArrayJObject,
19 JArrayJClass,
20 JArrayJString,
21 JClass,
22 JThread,
23 JObject : import jni;
24
25#>> extra pre includes here
26include "daytime.m";
27 localtime : ref Daytime->Tm;
28 gmttime : ref Daytime->Tm;
29 daytime : Daytime;
30 sys : import jni;
31 FALSE : import jni;
32 TRUE : import jni;
33month := array[] of {
34 "Jan", "Feb", "Mar", "Apr", "May", "Jun",
35 "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
36};
37
38#<<
39
40include "Date_L.m";
41
42#>> extra post includes here
43
44#<<
45
46init( jni_p : JNI )
47{
48 # save java native inteface mod instance
49 jni = jni_p;
50 #>>extra initialization here
51 sys = jni->sys;
52 daytime = load Daytime Daytime->PATH;
53 if(daytime == nil)
54 jni->InitError( sys->sprint( "java.util.Date: could not load %s: %r", Daytime->PATH ) );
55 #<<
56}
57
58toString_rString( this : ref Date_obj) : JString
59{#>>
60 if (this.expanded != byte TRUE)
61 expand_V(this);
62 if (this.expanded != byte TRUE)
63 jni->ThrowException("java.lang.IllegalArgumentException", "could not expand time");
64 s := daytime->text(localtime);
65 return (jni->NewString( s));
66}#<<
67
68toLocaleString_rString( this : ref Date_obj) : JString
69{#>>
70 s : string;
71 #
72 # put the date in the following format
73 # 09-Sep-97 9:15:24 PM
74 #
75 if (this.expanded != byte TRUE)
76 expand_V(this);
77 if (this.expanded != byte TRUE)
78 jni->ThrowException("java.lang.IllegalArgumentException", "could not expand time");
79
80 if ((int this.tm_hour) >= 12) {
81 s = sys->sprint( "%.2d-%s-%.2d %d:%.2d:%.2d PM",
82 int this.tm_mday,
83 month[int this.tm_mon],
84 this.tm_year,
85 (int this.tm_hour) - 12,
86 int this.tm_min,
87 int this.tm_sec);
88 } else {
89 s = sys->sprint( "%.2d-%s-%.2d %d:%.2d:%.2d AM",
90 int this.tm_mday,
91 month[int this.tm_mon],
92 this.tm_year,
93 int this.tm_hour,
94 int this.tm_min,
95 int this.tm_sec);
96 }
97 return (jni->NewString( s));
98}#<<
99
100toGMTString_rString( this : ref Date_obj) : JString
101{#>>
102 s : string;
103 if (this.valueValid != byte TRUE)
104 computeValue_V( this);
105 if (this.valueValid != byte TRUE)
106 jni->ThrowException("java.lang.IllegalArgumentException", "could not compute time");
107 t := (big this.value) / big 1000;
108 #10 Sep 1997 02:15:24 GMT
109 s = sys->sprint( "%.2d %s %d %.2d:%.2d:%.2d GMT",
110 int this.tm_mday,
111 month[int this.tm_mon],
112 this.tm_year + 1900,
113 int this.tm_hour,
114 int this.tm_min,
115 int this.tm_sec);
116
117 gmttime = daytime->gmt(int t);
118 return (jni->NewString( s));
119}#<<
120
121expand_V( this : ref Date_obj)
122{#>>
123 #
124 # this routine assumes there is a valid date stored
125 # in this.value. If not, return error.
126 #
127 if (this.value <= (big 0)) {
128 this.expanded = byte FALSE;
129 this.tm_millis = 0;
130 this.tm_sec = byte 0;
131 this.tm_min = byte 0;
132 this.tm_hour = byte 0;
133 this.tm_mday = byte 0;
134 this.tm_mon = byte 0;
135 this.tm_wday = byte 0;
136 this.tm_yday = 0;
137 this.tm_year = 0;
138 this.tm_isdst = 0;
139 return;
140 }
141 t := (big this.value) / big 1000;
142 localtime = daytime->local(int t);
143 #
144 # set the following to 0 since java code is not using them.
145 #
146 this.tm_millis = 0;
147 this.tm_isdst = 0; # flag for alternate daylight savings time
148 #
149 # these values come from calculations done by local().
150 #
151 this.tm_sec = byte localtime.sec;
152 this.tm_min = byte localtime.min;
153 this.tm_hour = byte localtime.hour;
154 this.tm_mday = byte localtime.mday; # day of the month - [1, 31]
155 this.tm_mon = byte localtime.mon; # months since January - [0, 11]
156 this.tm_wday = byte localtime.wday; # days since Sunday - [0, 6]
157 this.tm_yday = localtime.yday; # days since January 1 - [0, 365]
158 this.tm_year = localtime.year; # years since 1900
159 this.expanded = byte TRUE;
160}#<<
161
162computeValue_V( this : ref Date_obj)
163{#>>
164 now := daytime->now();
165 localtime = daytime->local(now);
166 localtime.sec = int this.tm_sec;
167 localtime.min = int this.tm_min;
168 localtime.hour = int this.tm_hour;
169 localtime.mday = int this.tm_mday;
170 localtime.mon = int this.tm_mon;
171 localtime.year = int this.tm_year;
172 localtime.wday = int this.tm_wday;
173 localtime.yday = int this.tm_yday;
174
175 t := daytime->tm2epoch(localtime);
176 this.value = (big t) * big 1000;
177 this.valueValid = byte TRUE;
178}#<<
179
180
java/pkg2/java/util/Date_L.m+30−0
@@ -0,0 +1,30 @@
1# javal v1.3 generated file: edit with care
2
3Date_L : module
4{
5 Date_obj : adt
6 {
7 cl_mod : ClassModule;
8 value : big;
9 valueValid : byte;
10 expanded : byte;
11 tm_millis : int;
12 tm_sec : byte;
13 tm_min : byte;
14 tm_hour : byte;
15 tm_mday : byte;
16 tm_mon : byte;
17 tm_wday : byte;
18 tm_yday : int;
19 tm_year : int;
20 tm_isdst : int;
21 };
22
23 init : fn( jni_p : JNI );
24 toString_rString : fn( this : ref Date_obj) : JString;
25 toLocaleString_rString : fn( this : ref Date_obj) : JString;
26 toGMTString_rString : fn( this : ref Date_obj) : JString;
27 expand_V : fn( this : ref Date_obj);
28 computeValue_V : fn( this : ref Date_obj);
29
30};
java/pkg2/java/util/Dictionary.java+0−0

Empty file added.

java/pkg2/java/util/EmptyStackException.java+0−0

Empty file added.

java/pkg2/java/util/Enumeration.java+0−0

Empty file added.

java/pkg2/java/util/EventListener.java+0−0

Empty file added.

java/pkg2/java/util/EventObject.java+0−0

Empty file added.

java/pkg2/java/util/GregorianCalendar.java+557−0
@@ -0,0 +1,557 @@
1/*
2 * @(#)GregorianCalendar.java 1.20 97/03/09
3 *
4 * (C) Copyright Taligent, Inc. 1996 - All Rights Reserved
5 * (C) Copyright IBM Corp. 1996 - All Rights Reserved
6 *
7 * Portions copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
8 *
9 * The original version of this source code and documentation is copyrighted
10 * and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
11 * materials are provided under terms of a License Agreement between Taligent
12 * and Sun. This technology is protected by multiple US and International
13 * patents. This notice and attribution to Taligent may not be removed.
14 * Taligent is a registered trademark of Taligent, Inc.
15 *
16 * Permission to use, copy, modify, and distribute this software
17 * and its documentation for NON-COMMERCIAL purposes and without
18 * fee is hereby granted provided that this copyright notice
19 * appears in all copies. Please refer to the file "copyright.html"
20 * for further important copyright and licensing information.
21 *
22 * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
23 * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
24 * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
25 * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
26 * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
27 * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
28 *
29 */
30
31package java.util;
32
33import java.io.ObjectInputStream;
34
35/**
36 * <code>GregorianCalendar</code> is a concrete subclass of
37 * <a href="java.util.Calendar.html"><code>Calendar</code></a>
38 * and provides the standard calendar used by most of the world.
39 *
40 * <p>
41 * The standard (Gregorian) calendar has 2 eras, BC and AD.
42 *
43 * <p>
44 * This implementation handles a single discontinuity, which corresponds
45 * by default to the date the Gregorian calendar was instituted (October 15,
46 * 1582 in some countries, later in others). This cutover date may be changed
47 * by the caller.
48 *
49 * <p>
50 * Prior to the institution of the Gregorian calendar, New Year's Day was
51 * March 25. To avoid confusion, this calendar always uses January 1. A manual
52 * adjustment may be made if desired for dates that are prior to the Gregorian
53 * changeover and which fall between January 1 and March 24.
54 *
55 * <p>
56 * <strong>Example:</strong>
57 * <blockquote>
58 * <pre>
59 * // get the supported ids for GMT-08:00 (Pacific Standard Time)
60 * String[] ids = TimeZone.getAvailableIDs(-8 * 60 * 60 * 1000);
61 * // if no ids were returned, something is wrong. get out.
62 * if (ids.length == 0)
63 * System.exit(0);
64 *
65 * // begin output
66 * System.out.println("Current Time");
67 *
68 * // create a Pacific Standard Time time zone
69 * SimpleTimeZone pdt = new SimpleTimeZone(-8 * 60 * 60 * 1000, ids[0]);
70 *
71 * // set up rules for daylight savings time
72 * pdt.setStartRule(Calendar.APRIL, 1, Calendar.SUNDAY, 2 * 60 * 60 * 1000);
73 * pdt.setEndRule(Calendar.OCTOBER, -1, Calendar.SUNDAY, 2 * 60 * 60 * 1000);
74 *
75 * // create a GregorianCalendar with the Pacific Daylight time zone
76 * // and the current date and time
77 * Calendar calendar = new GregorianCalendar(pdt);
78 * Date trialTime = new Date();
79 * calendar.setTime(trialTime);
80 *
81 * // print out a bunch of interesting things
82 * System.out.println("ERA: " + calendar.get(Calendar.ERA));
83 * System.out.println("YEAR: " + calendar.get(Calendar.YEAR));
84 * System.out.println("MONTH: " + calendar.get(Calendar.MONTH));
85 * System.out.println("WEEK_OF_YEAR: " + calendar.get(Calendar.WEEK_OF_YEAR));
86 * System.out.println("WEEK_OF_MONTH: " + calendar.get(Calendar.WEEK_OF_MONTH));
87 * System.out.println("DATE: " + calendar.get(Calendar.DATE));
88 * System.out.println("DAY_OF_MONTH: " + calendar.get(Calendar.DAY_OF_MONTH));
89 * System.out.println("DAY_OF_YEAR: " + calendar.get(Calendar.DAY_OF_YEAR));
90 * System.out.println("DAY_OF_WEEK: " + calendar.get(Calendar.DAY_OF_WEEK));
91 * System.out.println("DAY_OF_WEEK_IN_MONTH: "
92 * + calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));
93 * System.out.println("AM_PM: " + calendar.get(Calendar.AM_PM));
94 * System.out.println("HOUR: " + calendar.get(Calendar.HOUR));
95 * System.out.println("HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY));
96 * System.out.println("MINUTE: " + calendar.get(Calendar.MINUTE));
97 * System.out.println("SECOND: " + calendar.get(Calendar.SECOND));
98 * System.out.println("MILLISECOND: " + calendar.get(Calendar.MILLISECOND));
99 * System.out.println("ZONE_OFFSET: "
100 * + (calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000)));
101 * System.out.println("DST_OFFSET: "
102 * + (calendar.get(Calendar.DST_OFFSET)/(60*60*1000)));
103
104 * System.out.println("Current Time, with hour reset to 3");
105 * calendar.clear(Calendar.HOUR_OF_DAY); // so doesn't override
106 * calendar.set(Calendar.HOUR, 3);
107 * System.out.println("ERA: " + calendar.get(Calendar.ERA));
108 * System.out.println("YEAR: " + calendar.get(Calendar.YEAR));
109 * System.out.println("MONTH: " + calendar.get(Calendar.MONTH));
110 * System.out.println("WEEK_OF_YEAR: " + calendar.get(Calendar.WEEK_OF_YEAR));
111 * System.out.println("WEEK_OF_MONTH: " + calendar.get(Calendar.WEEK_OF_MONTH));
112 * System.out.println("DATE: " + calendar.get(Calendar.DATE));
113 * System.out.println("DAY_OF_MONTH: " + calendar.get(Calendar.DAY_OF_MONTH));
114 * System.out.println("DAY_OF_YEAR: " + calendar.get(Calendar.DAY_OF_YEAR));
115 * System.out.println("DAY_OF_WEEK: " + calendar.get(Calendar.DAY_OF_WEEK));
116 * System.out.println("DAY_OF_WEEK_IN_MONTH: "
117 * + calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));
118 * System.out.println("AM_PM: " + calendar.get(Calendar.AM_PM));
119 * System.out.println("HOUR: " + calendar.get(Calendar.HOUR));
120 * System.out.println("HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY));
121 * System.out.println("MINUTE: " + calendar.get(Calendar.MINUTE));
122 * System.out.println("SECOND: " + calendar.get(Calendar.SECOND));
123 * System.out.println("MILLISECOND: " + calendar.get(Calendar.MILLISECOND));
124 * System.out.println("ZONE_OFFSET: "
125 * + (calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000))); // in hours
126 * System.out.println("DST_OFFSET: "
127 * + (calendar.get(Calendar.DST_OFFSET)/(60*60*1000))); // in hours
128 * </pre>
129 * </blockquote>
130 *
131 * @see Calendar
132 * @see TimeZone
133 * @version 1.20 03/09/97
134 * @author David Goldsmith, Mark Davis, Chen-Lieh Huang
135 */
136public class GregorianCalendar extends Calendar {
137
138 // Internal notes:
139 // This algorithm is based on the one presented on pp. 10-12 of
140 // "Numerical Recipes in C", William H. Press, et. al., Cambridge
141 // University Press 1988, ISBN 0-521-35465-X.
142
143 /**
144 * Useful constant for GregorianCalendar.
145 */
146 public static final int BC = 0;
147 /**
148 * Useful constant for GregorianCalendar.
149 */
150 public static final int AD = 1;
151
152 // Note that the Julian date used here is not a true Julian date, since
153 // it is measured from midnight, not noon.
154
155 private static final long julianDayOffset = 2440588;
156 private static final int millisPerDay = 24 * 60 * 60 * 1000;
157 private static final int numDays[]
158 = {0,31,59,90,120,151,181,212,243,273,304,334}; // 0-based, for day-in-year
159 private static final int leapNumDays[]
160 = {0,31,60,91,121,152,182,213,244,274,305,335}; // 0-based, for day-in-year
161 private static final int maxDaysInMonth[]
162 = {31,28,31,30,31,30,31,31,30,31,30,31}; // 0-based
163
164 // This is measured from the standard epoch, not in Julian Days.
165 // Default is 00:00:00 local time, October 15, 1582.
166 private long gregorianCutover = -12219292800000L;
167
168 /**
169 * Converts time as milliseconds to Julian date.
170 * @param millis the given milliseconds.
171 * @return the Julian date number.
172 */
173 private static final long millisToJulianDay(long millis)
174 {
175 throw new NoSuchElementException();
176 }
177
178 /**
179 * Converts Julian date to time as milliseconds.
180 * @param julian the given Julian date number.
181 * @return time as milliseconds.
182 */
183 private static final long julianDayToMillis(long julian)
184 {
185 throw new NoSuchElementException();
186 }
187
188 /**
189 * Constructs a default GregorianCalendar using the current time
190 * in the default time zone with the default locale.
191 */
192 public GregorianCalendar()
193 {
194 throw new NoSuchElementException();
195 }
196
197 /**
198 * Constructs a GregorianCalendar based on the current time
199 * in the given time zone with the default locale.
200 * @param zone the given time zone.
201 */
202 public GregorianCalendar(TimeZone zone)
203 {
204 throw new NoSuchElementException();
205 }
206
207 /**
208 * Constructs a GregorianCalendar based on the current time
209 * in the default time zone with the given locale.
210 * @param aLocale the given locale.
211 */
212 public GregorianCalendar(Locale aLocale)
213 {
214 throw new NoSuchElementException();
215 }
216
217 /**
218 * Constructs a GregorianCalendar based on the current time
219 * in the given time zone with the given locale.
220 * @param zone the given time zone.
221 * @param aLocale the given locale.
222 */
223 public GregorianCalendar(TimeZone zone, Locale aLocale)
224 {
225 throw new NoSuchElementException();
226 }
227
228 /**
229 * Constructs a GregorianCalendar with the given date set
230 * in the default time zone with the default locale.
231 * @param year the value used to set the YEAR time field in the calendar.
232 * @param month the value used to set the MONTH time field in the calendar.
233 * Month value is 0-based. e.g., 0 for January.
234 * @param date the value used to set the DATE time field in the calendar.
235 */
236 public GregorianCalendar(int year, int month, int date)
237 {
238 throw new NoSuchElementException();
239 }
240
241 /**
242 * Constructs a GregorianCalendar with the given date
243 * and time set for the default time zone with the default locale.
244 * @param year the value used to set the YEAR time field in the calendar.
245 * @param month the value used to set the MONTH time field in the calendar.
246 * Month value is 0-based. e.g., 0 for January.
247 * @param date the value used to set the DATE time field in the calendar.
248 * @param hour the value used to set the HOUR_OF_DAY time field
249 * in the calendar.
250 * @param minute the value used to set the MINUTE time field
251 * in the calendar.
252 */
253 public GregorianCalendar(int year, int month, int date, int hour,
254 int minute)
255 {
256 throw new NoSuchElementException();
257 }
258
259 /**
260 * Constructs a GregorianCalendar with the given date
261 * and time set for the default time zone with the default locale.
262 * @param year the value used to set the YEAR time field in the calendar.
263 * @param month the value used to set the MONTH time field in the calendar.
264 * Month value is 0-based. e.g., 0 for January.
265 * @param date the value used to set the DATE time field in the calendar.
266 * @param hour the value used to set the HOUR_OF_DAY time field
267 * in the calendar.
268 * @param minute the value used to set the MINUTE time field
269 * in the calendar.
270 * @param second the value used to set the SECOND time field
271 * in the calendar.
272 */
273 public GregorianCalendar(int year, int month, int date, int hour,
274 int minute, int second)
275 {
276 throw new NoSuchElementException();
277 }
278
279 /**
280 * Sets the GregorianCalendar change date. This is the point when the
281 * switch from Julian dates to Gregorian dates occurred. Default is
282 * 00:00:00 local time, October 15, 1582. Previous to this time and date
283 * will be Julian dates.
284 *
285 * @param date the given Gregorian cutover date.
286 */
287 public void setGregorianChange(Date date)
288 {
289 throw new NoSuchElementException();
290 }
291
292 /**
293 * Gets the Gregorian Calendar change date. This is the point when the
294 * switch from Julian dates to Gregorian dates occurred. Default is
295 * 00:00:00 local time, October 15, 1582. Previous to
296 * this time and date will be Julian dates.
297 * @return the Gregorian cutover time for this calendar.
298 */
299 public final Date getGregorianChange()
300 {
301 throw new NoSuchElementException();
302 }
303
304 // Converts the time field list to the time as milliseconds.
305 private final void timeToFields(long theTime)
306 {
307 throw new NoSuchElementException();
308 }
309
310
311 /**
312 * @param date day-of-year or day-of-month. Month is zero based.
313 * @param day day-of-week for date. Zero based.
314 * @param firstDatesDay the day-of-week for the first day of the year
315 * or month.
316 * @param firstDay the first day of the week for the calendar.
317 * e.g. Sunday for US.
318 * @param minimalDaysInFirstWeek the minimal number of days in the
319 * week to qualify as the first week; otherwise partial week belongs
320 * to last (year/month).
321 * <note> weekCount is the number of weeks in the (year/month) for the
322 * date. If zero, belongs to last (year/month). You MUST add the date to
323 * the last day of the previous (year/month), and call this method again!
324 * @return week number, one-based.
325 */
326 private static int weekNumber(int date, int day, int firstDatesDay,
327 int firstDay, int minimalDaysInFirstWeek)
328 {
329 throw new NoSuchElementException();
330 }
331
332
333 // XXX Currently this method has a bug, and it is not being used.
334 private static int dateFrom(int weekNumber, int day, int firstDatesDay,
335 int firstDay, int minimalDaysInFirstWeek)
336 {
337 throw new NoSuchElementException();
338 }
339
340
341 /**
342 * Determines if the given year is a leap year. Returns true if the
343 * given year is a leap year.
344 * @param year the given year.
345 * @return true if the given year is a leap year; false otherwise.
346 */
347 public boolean isLeapYear(int year)
348 {
349 throw new NoSuchElementException();
350 }
351
352 /**
353 * Overrides Calendar
354 * Converts UTC as milliseconds to time field values.
355 */
356 protected void computeFields()
357 {
358 throw new NoSuchElementException();
359 }
360
361 /**
362 * Validates the values of the set time fields.
363 */
364 private boolean validateFields()
365 {
366 throw new NoSuchElementException();
367 }
368
369 /**
370 * Validates the value of the given time field.
371 */
372 private boolean boundsCheck(int value, int field)
373 {
374 throw new NoSuchElementException();
375 }
376
377 /**
378 * Overrides Calendar
379 * Converts time field values to UTC as milliseconds.
380 * @exception IllegalArgumentException if an unknown field is given.
381 */
382 protected void computeTime()
383 {
384 throw new NoSuchElementException();
385 }
386
387 /**
388 * Overrides Cloneable
389 */
390 public Object clone()
391 {
392 throw new NoSuchElementException();
393 }
394
395 /**
396 * Override hashCode.
397 * Generates the hash code for the GregorianCalendar object
398 */
399 public synchronized int hashCode()
400 {
401 throw new NoSuchElementException();
402 }
403
404 /**
405 * Overrides Calendar
406 * Compares the time field records.
407 * Equivalent to comparing result of conversion to UTC.
408 * Please see Calendar.equals for descriptions on parameters and
409 * the return value.
410 */
411 public boolean equals(Object obj)
412 {
413 throw new NoSuchElementException();
414 }
415
416 /**
417 * Overrides Calendar
418 * Compares the time field records.
419 * Equivalent to comparing result of conversion to UTC.
420 * Please see Calendar.before for descriptions on parameters and
421 * the return value.
422 */
423 public boolean before(Object when)
424 {
425 throw new NoSuchElementException();
426 }
427
428 /**
429 * Overrides Calendar
430 * Compares the time field records.
431 * Equivalent to comparing result of conversion to UTC.
432 * Please see Calendar.after for descriptions on parameters and
433 * the return value.
434 */
435 public boolean after(Object when)
436 {
437 throw new NoSuchElementException();
438 }
439
440 /**
441 * Overrides Calendar
442 * Date Arithmetic function.
443 * Adds the specified (signed) amount of time to the given time field,
444 * based on the calendar's rules.
445 * @param field the time field.
446 * @param amount the amount of date or time to be added to the field.
447 * @exception IllegalArgumentException if an unknown field is given.
448 */
449 public void add(int field, int amount)
450 {
451 throw new NoSuchElementException();
452 }
453
454
455 /**
456 * Overrides Calendar
457 * Time Field Rolling function.
458 * Rolls (up/down) a single unit of time on the given time field.
459 * @param field the time field.
460 * @param up Indicates if rolling up or rolling down the field value.
461 * @exception IllegalArgumentException if an unknown field value is given.
462 */
463 public void roll(int field, boolean up)
464 {
465 throw new NoSuchElementException();
466 }
467
468
469 // Roll the time field value down by 1.
470 private void rollDown(int field)
471 {
472 throw new NoSuchElementException();
473 }
474
475
476 /**
477 * <pre>
478 * Field names Minimum Greatest Minimum Least Maximum Maximum
479 * ----------- ------- ---------------- ------------- -------
480 * ERA 0 0 1 1
481 * YEAR 1 1 5,000,000 5,000,000
482 * MONTH 0 0 11 11
483 * WEEK_OF_YEAR 1 1 53 54
484 * WEEK_OF_MONTH 1 1 4 6
485 * DAY_OF_MONTH 1 1 28 31
486 * DAY_OF_YEAR 1 1 365 366
487 * DAY_OF_WEEK 1 1 7 7
488 * DAY_OF_WEEK_IN_MONTH -1 -1 4 6
489 * AM_PM 0 0 1 1
490 * HOUR 0 0 11 12
491 * HOUR_OF_DAY 0 0 23 23
492 * MINUTE 0 0 59 59
493 * SECOND 0 0 59 59
494 * MILLISECOND 0 0 999 999
495 * ZONE_OFFSET -12*60*60*1000 -12*60*60*1000 12*60*60*1000 12*60*60*1000
496 * DST_OFFSET 0 0 1*60*60*1000 1*60*60*1000
497 * </pre>
498 */
499 private static final int MinValues[]
500 = {0,1,0,1,1,1,1,1,-1,0,0,0,0,0,0,-12*60*60*1000,0};
501 private static final int GreatestMinValues[]
502 = {0,1,0,1,1,1,1,1,-1,0,0,0,0,0,0,-12*60*60*1000,0};// same as MinValues
503 private static final int LeastMaxValues[]
504 = {1,5000000,11,53,4,28,365,7,4,1,11,23,59,59,999,
505 12*60*60*1000,1*60*60*1000};
506 private static final int MaxValues[]
507 = {1,5000000,11,54,6,31,366,7,6,1,12,23,59,59,999,
508 12*60*60*1000,1*60*60*1000};
509
510 /**
511 * Returns minimum value for the given field.
512 * e.g. for Gregorian DAY_OF_MONTH, 1
513 * Please see Calendar.getMinimum for descriptions on parameters and
514 * the return value.
515 */
516 public int getMinimum(int field)
517 {
518 throw new NoSuchElementException();
519 }
520
521 /**
522 * Returns maximum value for the given field.
523 * e.g. for Gregorian DAY_OF_MONTH, 31
524 * Please see Calendar.getMaximum for descriptions on parameters and
525 * the return value.
526 */
527 public int getMaximum(int field)
528 {
529 throw new NoSuchElementException();
530 }
531
532 /**
533 * Returns highest minimum value for the given field if varies.
534 * Otherwise same as getMinimum(). For Gregorian, no difference.
535 * Please see Calendar.getGreatestMinimum for descriptions on parameters
536 * and the return value.
537 */
538 public int getGreatestMinimum(int field)
539 {
540 throw new NoSuchElementException();
541 }
542
543 /**
544 * Returns lowest maximum value for the given field if varies.
545 * Otherwise same as getMaximum(). For Gregorian DAY_OF_MONTH, 28
546 * Please see Calendar.getLeastMaximum for descriptions on parameters and
547 * the return value.
548 */
549 public int getLeastMaximum(int field)
550 {
551 throw new NoSuchElementException();
552 }
553
554 private void readObject(ObjectInputStream s) {
555 throw new NoSuchElementException();
556 }
557}
java/pkg2/java/util/Hashtable.java+0−0

Empty file added.

java/pkg2/java/util/ListResourceBundle.java+169−0
@@ -0,0 +1,169 @@
1/*
2 * @(#)ListResourceBundle.java 1.6 97/01/29
3 *
4 * (C) Copyright Taligent, Inc. 1996 - All Rights Reserved
5 * (C) Copyright IBM Corp. 1996 - All Rights Reserved
6 *
7 * Portions copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
8 *
9 * The original version of this source code and documentation is copyrighted
10 * and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
11 * materials are provided under terms of a License Agreement between Taligent
12 * and Sun. This technology is protected by multiple US and International
13 * patents. This notice and attribution to Taligent may not be removed.
14 * Taligent is a registered trademark of Taligent, Inc.
15 *
16 * Permission to use, copy, modify, and distribute this software
17 * and its documentation for NON-COMMERCIAL purposes and without
18 * fee is hereby granted provided that this copyright notice
19 * appears in all copies. Please refer to the file "copyright.html"
20 * for further important copyright and licensing information.
21 *
22 * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
23 * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
24 * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
25 * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
26 * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
27 * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
28 *
29 */
30
31package java.util;
32import java.util.Hashtable;
33
34/**
35 * <code>ListResourceBundle</code> is a abstract subclass of
36 * <code>ResourceBundle</code> that manages resources for a locale
37 * in a convenient and easy to use list. See <code>ResourceBundle</code> for
38 * more information about resource bundles in general.
39 *
40 * <P>
41 * Subclasses must override <code>getContents</code> and provide an array,
42 * where each item in the array is a pair of objects.
43 * The first element of each pair is a <code>String</code> key, and the second
44 * is the value associated with that key.
45 *
46 * <p>
47 * In the following example, the keys are of the form "s1"... The actual
48 * keys are entirely up to your choice, so long as they are the same as
49 * the keys you use in your program to retrieve the objects from the bundle.
50 * Keys are case-sensitive. <code>MyResource</code> is the default version
51 * of the bundle family, and <code>MyResource_fr</code> is the french version:
52 * <blockquote>
53 * <pre>
54 * //====================
55 * class MyResource extends ListResourceBundle {
56 * public Object[][] getContents() {
57 * return contents;
58 * }
59 * static final Object[][] contents = {
60 * // LOCALIZE THIS
61 * {"s1", "3"}, // starting value in choice field
62 * {"s2", "MyDisk"}, // starting value in string field
63 * {"s3", "3 Mar 96"}, // starting value in date field
64 * {"s4", "The disk '{1}' contained {0} on {2}."}, // initial pattern
65 * {"s5", "0"}, // first choice number
66 * {"s6", "no files"}, // first choice value
67 * {"s7", "1"}, // second choice number
68 * {"s8", "one file"}, // second choice value
69 * {"s9", "2"}, // third choice number
70 * {"s10", "{0}|3 files"}, // third choice value
71 * {"s11", "format threw an exception: {0}"}, // generic exception message
72 * {"s12", "ERROR"}, // what to show in field in case of error
73 * {"s14", "Result"}, // label for formatted stuff
74 * {"s13", "Dialog"}, // standard font
75 * {"s15", "Pattern"}, // label for standard pattern
76 * {"s16", new Dimension(1,5)} // real object, not just string
77 * // END OF MATERIAL TO LOCALIZE
78 * };
79 * }
80 * //====================
81 * class MyResource_fr extends ListResourceBundle {
82 * public Object[][] getContents() {
83 * return contents;
84 }
85 * static final Object[][] contents = {
86 * // LOCALIZE THIS
87 * {"s1", "3"}, // starting value in choice field
88 * {"s2", "MonDisk"}, // starting value in string field
89 * {"s3", "3 Mar 96"}, // starting value in date field
90 * {"s4", "Le disk '{1}' a {0} a {2}."}, // initial pattern
91 * {"s5", "0"}, // first choice number
92 * {"s6", "pas de files"}, // first choice value
93 * {"s7", "1"}, // second choice number
94 * {"s8", "une file"}, // second choice value
95 * {"s9", "2"}, // third choice number
96 * {"s10", "{0}|3 files"}, // third choice value
97 * {"s11", "Le format a jete une exception: {0}"}, // generic exception message
98 * {"s12", "ERROR"}, // what to show in field in case of error
99 * {"s14", "Resulte"}, // label for formatted stuff
100 * {"s13", "Dialogue"}, // standard font
101 * {"s15", "Pattern"}, // label for standard pattern
102 * {"s16", new Dimension(1,3)} // real object, not just string
103 * // END OF MATERIAL TO LOCALIZE
104 * };
105 * }
106 * </pre>
107 * </blockquote>
108 * @see ResourceBundle
109 * @see PropertyResourceBundle
110 */
111public abstract class ListResourceBundle extends ResourceBundle {
112 /**
113 * Override of ResourceBundle, same semantics
114 */
115 public final Object handleGetObject(String key) {
116 // lazily load the lookup hashtable.
117 if (lookup == null) {
118 loadLookup();
119 }
120 return lookup.get(key); // this class ignores locales
121 }
122
123 /**
124 * Implementation of ResourceBundle.getKeys.
125 */
126 public Enumeration getKeys() {
127 // lazily load the lookup hashtable.
128 if (lookup == null) {
129 loadLookup();
130 }
131 Enumeration result = null;
132 if (parent != null) {
133 Hashtable temp = new Hashtable();
134 for (Enumeration parentKeys = parent.getKeys() ;
135 parentKeys.hasMoreElements() ; /* nothing */) {
136 temp.put(parentKeys.nextElement(), this);
137 }
138 for (Enumeration thisKeys = lookup.keys();
139 thisKeys.hasMoreElements() ; /* nothing */) {
140 temp.put(thisKeys.nextElement(), this);
141 }
142 result = temp.keys();
143 } else {
144 result = lookup.keys();
145 }
146 return result;
147 }
148
149 /**
150 * See class description.
151 */
152 abstract protected Object[][] getContents();
153
154 // ==================privates====================
155
156 /**
157 * We lazily load the lookup hashtable. This function does the
158 * loading.
159 */
160 private void loadLookup() {
161 Object[][] contents = getContents();
162 lookup = new Hashtable(contents.length);
163 for (int i = 0; i < contents.length; ++i) {
164 lookup.put(contents[i][0],contents[i][1]);
165 }
166 }
167
168 private Hashtable lookup = null;
169}
java/pkg2/java/util/Locale.java+631−0
@@ -0,0 +1,631 @@
1/*
2 * @(#)Locale.java 1.21 97/01/29
3 *
4 * (C) Copyright Taligent, Inc. 1996 - All Rights Reserved
5 * (C) Copyright IBM Corp. 1996 - All Rights Reserved
6 *
7 * Portions copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
8 *
9 * The original version of this source code and documentation is copyrighted
10 * and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
11 * materials are provided under terms of a License Agreement between Taligent
12 * and Sun. This technology is protected by multiple US and International
13 * patents. This notice and attribution to Taligent may not be removed.
14 * Taligent is a registered trademark of Taligent, Inc.
15 *
16 * Permission to use, copy, modify, and distribute this software
17 * and its documentation for NON-COMMERCIAL purposes and without
18 * fee is hereby granted provided that this copyright notice
19 * appears in all copies. Please refer to the file "copyright.html"
20 * for further important copyright and licensing information.
21 *
22 * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
23 * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
24 * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
25 * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
26 * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
27 * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
28 *
29 */
30
31package java.util;
32import java.io.Serializable;
33
34/**
35 *
36 * A <code>Locale</code> object represents a specific geographical, political,
37 * or cultural region. An operation that requires a <code>Locale</code> to perform
38 * its task is called <em>locale-sensitive</em> and uses the <code>Locale</code>
39 * to tailor information for the user. For example, displaying a number
40 * is a locale-sensitive operation--the number should be formatted
41 * according to the customs/conventions of the user's native country,
42 * region, or culture.
43 *
44 * <P>
45 * You create a <code>Locale</code> object using one of the two constructors in
46 * this class:
47 * <blockquote>
48 * <pre>
49 * Locale(String language, String country)
50 * Locale(String language, String country, String variant)
51 * </pre>
52 * </blockquote>
53 * The first argument to both constructors is a valid <STRONG>ISO
54 * Language Code.</STRONG> These codes are the lower-case two-letter
55 * codes as defined by ISO-639.
56 * You can find a full list of these codes at a number of sites, such as:
57 * <BR><a href ="http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt">
58 * <code>http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt</code></a>
59 *
60 * <P>
61 * The second argument to both constructors is a valid <STRONG>ISO Country
62 * Code.</STRONG> These codes are the upper-case two-letter codes
63 * as defined by ISO-3166.
64 * You can find a full list of these codes at a number of sites, such as:
65 * <BR><a href="http://www.chemie.fu-berlin.de/diverse/doc/ISO_3166.html">
66 * <code>http://www.chemie.fu-berlin.de/diverse/doc/ISO_3166.html</code></a>
67 *
68 * <P>
69 * The second constructor requires a third argument--the <STRONG>Variant.</STRONG>
70 * The Variant codes are vendor and browser-specific.
71 * For example, use WIN for Windows, MAC for Macintosh, and POSIX for POSIX.
72 * Where there are two variants, separate them with an underscore, and
73 * put the most important one first. For
74 * example, a Traditional Spanish collation might be referenced, with
75 * "ES", "ES", "Traditional_WIN".
76 *
77 * <P>
78 * Because a <code>Locale</code> object is just an identifier for a region,
79 * no validity check is performed when you construct a <code>Locale</code>.
80 * If you want to see whether particular resources are available for the
81 * <code>Locale</code> you construct, you must query those resources. For
82 * example, ask the <code>NumberFormat</code> for the locales it supports
83 * using its <code>getAvailableLocales</code> method.
84 * <BR><STRONG>Note:</STRONG> When you ask for a resource for a particular
85 * locale, you get back the best available match, not necessarily
86 * precisely what you asked for. For more information, look at
87 * <a href="java.util.ResourceBundle.html"><code>ResourceBundle</code></a>.
88 *
89 * <P>
90 * The <code>Locale</code> class provides a number of convenient constants
91 * that you can use to create <code>Locale</code> objects for commonly used
92 * locales. For example, the following creates a <code>Locale</code> object
93 * for the United States:
94 * <blockquote>
95 * <pre>
96 * Locale.US
97 * </pre>
98 * </blockquote>
99 *
100 * <P>
101 * Once you've created a <code>Locale</code> you can query it for information about
102 * itself. Use <code>getCountry</code> to get the ISO Country Code and
103 * <code>getLanguage</code> to get the ISO Language Code. You can
104 * use <code>getDisplayCountry</code> to get the
105 * name of the country suitable for displaying to the user. Similarly,
106 * you can use <code>getDisplayLanguage</code> to get the name of
107 * the language suitable for displaying to the user. Interestingly,
108 * the <code>getDisplayXXX</code> methods are themselves locale-sensitive
109 * and have two versions: one that uses the default locale and one
110 * that uses the locale specified as an argument.
111 *
112 * <P>
113 * The JDK provides a number of classes that perform locale-sensitive
114 * operations. For example, the <code>NumberFormat</code> class formats
115 * numbers, currency, or percentages in a locale-sensitive manner. Classes
116 * such as <code>NumberFormat</code> have a number of convenience methods
117 * for creating a default object of that type. For example, the
118 * <code>NumberFormat</code> class provides these three convenience methods
119 * for creating a default <code>NumberFormat</code> object:
120 * <blockquote>
121 * <pre>
122 * NumberFormat.getInstance()
123 * NumberFormat.getCurrencyInstance()
124 * NumberFormat.getPercentInstance()
125 * </pre>
126 * </blockquote>
127 * These methods have two variants; one with an explicit locale
128 * and one without; the latter using the default locale.
129 * <blockquote>
130 * <pre>
131 * NumberFormat.getInstance(myLocale)
132 * NumberFormat.getCurrencyInstance(myLocale)
133 * NumberFormat.getPercentInstance(myLocale)
134 * </pre>
135 * </blockquote>
136 * A <code>Locale</code> is the mechanism for identifying the kind of object
137 * (<code>NumberFormat</code>) that you would like to get. The locale is
138 * <STRONG>just</STRONG> a mechanism for identifying objects,
139 * <STRONG>not</STRONG> a container for the objects themselves.
140 *
141 * <P>
142 * Each class that performs locale-sensitive operations allows you
143 * to get all the available objects of that type. You can sift
144 * through these objects by language, country, or variant,
145 * and use the display names to present a menu to the user.
146 * For example, you can create a menu of all the collation objects
147 * suitable for a given language. Such classes must implement these
148 * three class methods:
149 * <blockquote>
150 * <pre>
151 * public static Locale[] getAvailableLocales()
152 * public static String getDisplayName(Locale objectLocale,
153 * Locale displayLocale)
154 * public static final String getDisplayName(Locale objectLocale)
155 * // getDisplayName will throw MissingResourceException if the locale
156 * // is not one of the available locales.
157 * </pre>
158 * </blockquote>
159 *
160 * @see ResourceBundle
161 * @see java.text.Format
162 * @see java.text.NumberFormat
163 * @see java.text.Collation
164 * @version 1.21 29 Jan 1997
165 * @author Mark Davis
166 */
167
168public final class Locale implements Cloneable, Serializable {
169
170 /** Useful constant for language.
171 */
172 static public final Locale ENGLISH = new Locale("en","","");
173
174 /** Useful constant for language.
175 */
176 static public final Locale FRENCH = new Locale("fr","","");
177
178 /** Useful constant for language.
179 */
180 static public final Locale GERMAN = new Locale("de","","");
181
182 /** Useful constant for language.
183 */
184 static public final Locale ITALIAN = new Locale("it","","");
185
186 /** Useful constant for language.
187 */
188 static public final Locale JAPANESE = new Locale("ja","","");
189
190 /** Useful constant for language.
191 */
192 static public final Locale KOREAN = new Locale("ko","","");
193
194 /** Useful constant for language.
195 */
196 static public final Locale CHINESE = new Locale("zh","","");
197
198 /** Useful constant for language.
199 */
200 static public final Locale SIMPLIFIED_CHINESE = new Locale("zh","CN","");
201
202 /** Useful constant for language.
203 */
204 static public final Locale TRADITIONAL_CHINESE = new Locale("zh","TW","");
205
206 /** Useful constant for country.
207 */
208 static public final Locale FRANCE = new Locale("fr","FR","");
209
210 /** Useful constant for country.
211 */
212 static public final Locale GERMANY = new Locale("de","DE","");
213
214 /** Useful constant for country.
215 */
216 static public final Locale ITALY = new Locale("it","IT","");
217
218 /** Useful constant for country.
219 */
220 static public final Locale JAPAN = new Locale("ja","JP","");
221
222 /** Useful constant for country.
223 */
224 static public final Locale KOREA = new Locale("ko","KR","");
225
226 /** Useful constant for country.
227 */
228 static public final Locale CHINA = new Locale("zh","CN","");
229
230 /** Useful constant for country.
231 */
232 static public final Locale PRC = new Locale("zh","CN","");
233
234 /** Useful constant for country.
235 */
236 static public final Locale TAIWAN = new Locale("zh","TW","");
237
238 /** Useful constant for country.
239 */
240 static public final Locale UK = new Locale("en","GB","");
241
242 /** Useful constant for country.
243 */
244 static public final Locale US = new Locale("en","US","");
245
246 /** Useful constant for country.
247 */
248 static public final Locale CANADA = new Locale("en","CA","");
249
250 /** Useful constant for country.
251 */
252 static public final Locale CANADA_FRENCH = new Locale("fr","CA","");
253
254 /**
255 * Construct a locale from language, country, variant.
256 * @param language lowercase two-letter ISO-639 code.
257 * @param country uppercase two-letter ISO-3166 code.
258 * @param variant vendor and browser specific code. See class description.
259 */
260 public Locale(String language, String country, String variant) {
261 this.language = toLowerCase(language);
262 this.country = toUpperCase(country);
263 this.variant = toUpperCase(variant);
264 }
265
266 /**
267 * Construct a locale from language, country.
268 * @param language lowercase two-letter ISO-639 code.
269 * @param country uppercase two-letter ISO-3166 code.
270 */
271 public Locale(String language, String country) {
272 this.language = toLowerCase(language);
273 this.country = toUpperCase(country);
274 this.variant = "";
275 }
276
277 /**
278 * Common method of getting the current default Locale.
279 * Used for the presentation: menus, dialogs, etc.
280 * Generally set once when your applet or application is initialized,
281 * then never reset. (If you do reset the default locale, you
282 * probably want to reload your GUI, so that the change is reflected
283 * in your interface.)
284 * <p>More advanced programs will allow users to use different locales
285 * for different fields, e.g. in a spreadsheet.
286 * <BR>Note that the initial setting will match the host system.
287 */
288 public static synchronized Locale getDefault() {
289 if (defaultLocale == null) {
290 String language = System.getProperty("user.language", "EN");
291 String region = System.getProperty("user.region", "");
292
293 defaultLocale = new Locale(language, region);
294 }
295 return defaultLocale;
296 }
297
298 /**
299 * Sets the default.
300 * Normally set once at the beginning of applet or application,
301 * then never reset. <code>setDefault</code> does not reset the host locale.
302 * @param newLocale Locale to set to.
303 */
304 public static synchronized void setDefault(Locale newLocale) {
305 SecurityManager security = System.getSecurityManager();
306 if (security != null) {
307 security.checkPropertyAccess("user.language");
308 }
309 defaultLocale = newLocale;
310 }
311
312 /**
313 * Getter for programmatic name of field,
314 * an lowercased two-letter ISO-639 code.
315 * @see #getDisplayLanguage
316 */
317 public String getLanguage() {
318 return language;
319 }
320
321 /**
322 * Getter for programmatic name of field,
323 * an uppercased two-letter ISO-3166 code.
324 * @see #getDisplayCountry
325 */
326 public String getCountry() {
327 return country;
328 }
329
330 /**
331 * Getter for programmatic name of field.
332 * @see #getDisplayVariant
333 */
334 public String getVariant() {
335 return variant;
336 }
337
338 /**
339 * Getter for the programmatic name of the entire locale,
340 * with the language, country and variant separated by underbars.
341 * If a field is missing, at most one underbar will occur.
342 * Example: "EN", "DE_DE", "EN_US_WIN", "DE_POSIX", "FR_MAC"
343 * @see #getDisplayName
344 */
345 public final String toString() {
346 StringBuffer result = new StringBuffer(language);
347 if (country.length() != 0) {
348 result.append('_');
349 result.append(country);
350 if (variant.length() != 0) {
351 result.append('_');
352 result.append(variant);
353 }
354 }
355 return result.toString();
356 }
357
358 /**
359 * Getter for the three-letter ISO language abbreviation
360 * of the locale.
361 * @exception MissingResourceException Throws MissingResourceException if the
362 * three-letter language abbreviation is not available for this locale.
363 */
364 public String getISO3Language() throws MissingResourceException {
365 ResourceBundle resource
366 = ResourceBundle.getBundle
367 ("java.text.resources.LocaleElements", this);
368 return resource.getString("ShortLanguage");
369 }
370
371 /**
372 * Getter for the three-letter ISO country abbreviation
373 * of the locale.
374 * @exception MissingResourceException Throws MissingResourceException if the
375 * three-letter language abbreviation is not available for this locale.
376 */
377 public String getISO3Country() throws MissingResourceException {
378 ResourceBundle resource =
379 ResourceBundle.getBundle
380 ("java.text.resources.LocaleElements", this);
381 return resource.getString("ShortCountry");
382 }
383
384 /**
385 * Getter for the Locale ID, as used in Windows.
386 * @exception MissingResourceException Throws MissingResourceException if there is
387 * no LCID associated with the locale.
388 */
389 // FIXME this should go away completely!
390 private int getLCID() throws MissingResourceException {
391 ResourceBundle resource =
392 ResourceBundle.getBundle
393 ("java.text.resources.LocaleElements", this);
394 String lcid = resource.getString("LocaleID");
395 return Integer.parseInt(lcid,16);
396 }
397
398 /**
399 * Getter for display of field to user.
400 * If the localized name is not found, returns the ISO code.
401 * The desired user language is from the default locale.
402 */
403 public final String getDisplayLanguage() {
404 return getDisplayLanguage(getDefault());
405 }
406
407 /**
408 * Getter for display of field to user.
409 * If the localized name is not found, returns the ISO codes.
410 * Example: "English (UK)", "Deutch", "Germany"
411 * @param inLocale specifies the desired user language.
412 */
413 public String getDisplayLanguage(Locale inLocale) {
414 try {
415 ResourceBundle resource =
416 ResourceBundle.getBundle
417 ("java.text.resources.LocaleElements", this);
418 return findStringMatch((String[][])resource.getObject("Languages"),
419 inLocale.language, language);
420 } catch (Exception e) {
421 return language;
422 }
423 }
424
425 /**
426 * Getter for display of field to user.
427 * If the localized name is not found, returns the ISO code.
428 * The default locale is used for the presentation language.
429 */
430 public final String getDisplayCountry() {
431 return getDisplayCountry(getDefault());
432 }
433
434 /**
435 * Getter for display of field to user.
436 * If the localized name is not found, returns the ISO code.
437 * @param inLocale specifies the desired user language.
438 */
439 public String getDisplayCountry(Locale inLocale) {
440 try {
441 ResourceBundle resource =
442 ResourceBundle.getBundle
443 ("java.text.resources.LocaleElements",this);
444 return findStringMatch((String[][])resource.getObject("Countries"),
445 inLocale.language, language);
446 } catch (Exception e) {
447 return country;
448 }
449 }
450
451 /**
452 * Getter for display of field to user.
453 * If the localized name is not found, returns the variant code.
454 * The default locale is used for the presentation language.
455 */
456 public final String getDisplayVariant() {
457 return getDisplayVariant(getDefault());
458 }
459
460 /**
461 * Getter for display of field to user
462 * If the localized name is not found, returns the variant code.
463 * @param inLocale specifies the desired user language.
464 */
465 public String getDisplayVariant(Locale inLocale) {
466 try {
467 ResourceBundle resource =
468 ResourceBundle.getBundle
469 ("java.text.resources.LocaleElements", inLocale);
470 String[][] pairedStrings = (String[][])resource.getObject("Variants");
471 if (pairedStrings == null)
472 return variant;
473 return findStringMatch(pairedStrings, inLocale.language, language);
474 } catch (Exception e) {
475 return variant;
476 }
477 }
478
479 /**
480 * Getter for display of the entire locale to user.
481 * If the localized name is not found, uses the ISO codes.
482 * The default locale is used for the presentation language.
483 */
484 public final String getDisplayName() {
485 return getDisplayName(getDefault());
486 }
487
488 /**
489 * Getter for display of the entire locale to user.
490 * If the localized name is not found, uses the ISO codes
491 * @param inLocale specifies the desired user language.
492 */
493 public String getDisplayName(Locale inLocale) {
494 // TODO: use pattern string from locale data
495 StringBuffer result = new StringBuffer (getDisplayLanguage(inLocale));
496 String aCountry = getDisplayCountry(inLocale);
497 String aVariant = getDisplayVariant(inLocale);
498 if (aCountry.length() != 0 || aVariant.length() != 0) {
499 result.append(" (");
500 result.append(getDisplayCountry(inLocale));
501 if (aCountry.length() != 0 && aVariant.length() != 0)
502 result.append(",");
503 result.append(getDisplayVariant(inLocale));
504 result.append(")");
505 }
506 return result.toString();
507 }
508
509 /**
510 * Overrides Cloneable
511 */
512 public Object clone()
513 {
514 try {
515 Locale that = (Locale)super.clone();
516 return that;
517 } catch (CloneNotSupportedException e) {
518 throw new InternalError();
519 }
520 }
521
522 /**
523 * Override hashCode.
524 * Since Locales are often used in hashtables, caches the value
525 * for speed.
526 */
527 // XXX Depending on performance of synchronized, may want to
528 // XXX just compute in constructor.
529 public synchronized int hashCode() {
530 if (hashcode == -1) {
531 hashcode =
532 language.hashCode() ^
533 country.hashCode() ^
534 variant.hashCode();
535 }
536 return hashcode;
537 }
538
539 // Overrides
540
541 public boolean equals(Object obj) {
542 if (this == obj) // quick check
543 return true;
544 if (!(obj instanceof Locale)) // (1) same object?
545 return false;
546 Locale other = (Locale) obj;
547 if (hashCode() != other.hashCode()) return false; // quick check
548 if (!language.equals(other.language)) return false;
549 if (!country.equals(other.country)) return false;
550 if (!variant.equals(other.variant)) return false;
551 return true; // we made it through the guantlet.
552 // (1) We don't check super.equals since it is Object.
553 // Since Locale is final, we don't have to check both directions.
554 }
555
556 // ================= privates =====================================
557
558 // XXX instance and class variables. For now keep these separate, since it is
559 // faster to match. Later, make into single string.
560
561 private String language = "";
562 private String country = "";
563 private String variant = "";
564
565 private /*FIXME(83) transient*/ int hashcode = -1; // lazy evaluated
566
567 private static Locale defaultLocale = null;
568
569 /*
570 * Locale needs its own, locale insenitive version of toLowerCase to
571 * avoid circularity problems between Locale and String.
572 * The most straightforward algorithm is used. Look at optimizations later.
573 */
574 private String toLowerCase(String str) {
575 char[] buf = str.toCharArray();
576 for (int i = 0; i < buf.length; i++) {
577 buf[i] = Character.toLowerCase( buf[i] );
578 }
579 return new String( buf );
580 }
581
582 /*
583 * Locale needs its own, locale insenitive version of toUpperCase to
584 * avoid circularity problems between Locale and String.
585 * The most straightforward algorithm is used. Look at optimizations later.
586 */
587 private String toUpperCase(String str) {
588 char[] buf = str.toCharArray();
589 for (int i = 0; i < buf.length; i++) {
590 buf[i] = Character.toUpperCase( buf[i] );
591 }
592 return new String( buf );
593 }
594
595 private String findStringMatch(String[][] languages,
596 String desiredLanguage, String fallbackLanguage)
597 {
598 for (int i = 0; i < languages.length; ++i)
599 if (desiredLanguage.equals(languages[i][0]))
600 return languages[i][1];
601 if (!fallbackLanguage.equals(desiredLanguage))
602 for (int i = 0; i < languages.length; ++i)
603 if (fallbackLanguage.equals(languages[i][0]))
604 return languages[i][1];
605 if (!"EN".equals(desiredLanguage) && "EN".equals(fallbackLanguage))
606 for (int i = 0; i < languages.length; ++i)
607 if ("EN".equals(languages[i][0]))
608 return languages[i][1];
609 return "";
610 }
611 /*
612 * Does an equals check, plus an empty field in this means a wildcard;
613 * matches any other field in other.
614 */
615 private boolean matches (Locale other) {
616 //System.out.println("language:" + language + "," + other.language);
617 if (language.length() != 0)
618 if (!language.equals(other.language))
619 return false;
620 //System.out.println("country:" + country + "," + other.country);
621 if (country.length() != 0)
622 if (!country.equals(other.country))
623 return false;
624 //System.out.println("variant:" + variant + "," + other.variant);
625 if (variant.length() != 0)
626 if (!variant.equals(other.variant))
627 return false;
628 return true; // whew, we made it through the guantlet.
629 }
630
631}
java/pkg2/java/util/MissingResourceException.java+73−0
@@ -0,0 +1,73 @@
1/*
2 * @(#)MissingResourceException.java 1.4 97/01/29
3 *
4 * (C) Copyright Taligent, Inc. 1996 - All Rights Reserved
5 * (C) Copyright IBM Corp. 1996 - All Rights Reserved
6 *
7 * Portions copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
8 *
9 * The original version of this source code and documentation is copyrighted
10 * and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
11 * materials are provided under terms of a License Agreement between Taligent
12 * and Sun. This technology is protected by multiple US and International
13 * patents. This notice and attribution to Taligent may not be removed.
14 * Taligent is a registered trademark of Taligent, Inc.
15 *
16 * Permission to use, copy, modify, and distribute this software
17 * and its documentation for NON-COMMERCIAL purposes and without
18 * fee is hereby granted provided that this copyright notice
19 * appears in all copies. Please refer to the file "copyright.html"
20 * for further important copyright and licensing information.
21 *
22 * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
23 * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
24 * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
25 * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
26 * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
27 * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
28 *
29 */
30
31package java.util;
32
33/**
34 * Signals that a resource is missing.
35 * @see java.io.Exception
36 * @see ResourceBundle
37 * @version 1.4, 01/29/97
38 * @author Mark Davis
39 */
40public
41class MissingResourceException extends RuntimeException {
42
43 /**
44 * Constructs a MissingResourceException with the specified information.
45 * A detail message is a String that describes this particular exception.
46 * @param s the detail message
47 * @param classname the name of the resource class
48 * @param key the key for the missing resource.
49 */
50 public MissingResourceException(String s, String className, String key) {
51 super(s);
52 this.className = className;
53 this.key = key;
54 }
55
56 /**
57 * Gets parameter passed by constructor.
58 */
59 public String getClassName() {
60 return className;
61 }
62
63 /**
64 * Gets parameter passed by constructor.
65 */
66 public String getKey() {
67 return key;
68 }
69
70 //============ privates ============
71 private String className;
72 private String key;
73}
java/pkg2/java/util/NoSuchElementException.java+0−0

Empty file added.

java/pkg2/java/util/Observable.java+0−0

Empty file added.

java/pkg2/java/util/Observer.java+0−0

Empty file added.

java/pkg2/java/util/Properties.java+0−0

Empty file added.

java/pkg2/java/util/PropertyResourceBundle.java+121−0
@@ -0,0 +1,121 @@
1/*
2 * @(#)PropertyResourceBundle.java 1.7 97/01/29
3 *
4 * (C) Copyright Taligent, Inc. 1996 - All Rights Reserved
5 * (C) Copyright IBM Corp. 1996 - All Rights Reserved
6 *
7 * Portions copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
8 *
9 * The original version of this source code and documentation is copyrighted
10 * and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
11 * materials are provided under terms of a License Agreement between Taligent
12 * and Sun. This technology is protected by multiple US and International
13 * patents. This notice and attribution to Taligent may not be removed.
14 * Taligent is a registered trademark of Taligent, Inc.
15 *
16 * Permission to use, copy, modify, and distribute this software
17 * and its documentation for NON-COMMERCIAL purposes and without
18 * fee is hereby granted provided that this copyright notice
19 * appears in all copies. Please refer to the file "copyright.html"
20 * for further important copyright and licensing information.
21 *
22 * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
23 * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
24 * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
25 * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
26 * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
27 * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
28 *
29 */
30package java.util;
31
32import java.util.Properties;
33import java.io.InputStream;
34import java.io.IOException;
35
36/**
37 * <code>PropertyResourceBundle</code> is an abstract subclass of
38 * <code>ResourceBundle</code> that manages resources for a locale
39 * using a set of static strings from a property file. See
40 * <code>ResourceBundle</code> for more information about resource
41 * bundles in general.
42 *
43 * <p>
44 * The property file contains the keys that you use in your source code
45 * in calls to <code>ResourceBundle.getString</code> and similar methods,
46 * and their corresponding values, etc.
47 * The name of the property file indicates the resource bundle's family
48 * and locale.
49 *
50 * <p>
51 * In the following example, the keys are of the form "s1"... The actual
52 * keys are entirely up to your choice, so long as they are the same as
53 * the keys you use in your program to retrieve the objects from the bundle.
54 * Keys are case-sensitive.
55 * <blockquote>
56 * <pre>
57 * s1=3
58 * s2=MeinDisk
59 * s3=3 Mar 96
60 * s4=Der disk '{1}' a {0} a {2}.
61 * s5=0
62 * s6=keine Datein
63 * s7=1
64 * s8=ein Datei
65 * s9=2
66 * s10={0}|3 Datein
67 * s11=Der Format worf ein Exception: {0}
68 * s12=ERROR
69 * s14=Resulte
70 * s13=Dialogue
71 * s15=Pattern
72 * s16=1,3
73 * </pre>
74 * </blockquote>
75 *
76 * @see ResourceBundle
77 * @see ListResourceBundle
78 */
79public class PropertyResourceBundle extends ResourceBundle {
80 /**
81 * Creates a property resource
82 * @param file property file to read from.
83 */
84 public PropertyResourceBundle (InputStream stream) throws IOException {
85 lookup.load(stream);
86 }
87
88 /**
89 * Override of ResourceBundle, same semantics
90 */
91 public Object handleGetObject(String key) {
92 Object obj = lookup.get(key);
93 return obj; // once serialization is in place, you can do non-strings
94 }
95
96 /**
97 * Implementation of ResourceBundle.getKeys.
98 */
99 public Enumeration getKeys() {
100 Enumeration result = null;
101 if (parent != null) {
102 Hashtable temp = new Hashtable();
103 for (Enumeration parentKeys = parent.getKeys() ;
104 parentKeys.hasMoreElements() ; /* nothing */) {
105 temp.put(parentKeys.nextElement(), this);
106 }
107 for (Enumeration thisKeys = lookup.keys();
108 thisKeys.hasMoreElements() ; /* nothing */) {
109 temp.put(thisKeys.nextElement(), this);
110 }
111 result = temp.keys();
112 } else {
113 result = lookup.keys();
114 }
115 return result;
116 }
117
118 // ==================privates====================
119
120 private Properties lookup = new Properties();
121}
java/pkg2/java/util/Random.java+0−0

Empty file added.

java/pkg2/java/util/ResourceBundle.java+536−0
@@ -0,0 +1,536 @@
1/*
2 * @(#)ResourceBundle.java 1.15 97/01/29
3 *
4 * (C) Copyright Taligent, Inc. 1996 - All Rights Reserved
5 * (C) Copyright IBM Corp. 1996 - All Rights Reserved
6 *
7 * Portions copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
8 *
9 * The original version of this source code and documentation is copyrighted
10 * and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
11 * materials are provided under terms of a License Agreement between Taligent
12 * and Sun. This technology is protected by multiple US and International
13 * patents. This notice and attribution to Taligent may not be removed.
14 * Taligent is a registered trademark of Taligent, Inc.
15 *
16 * Permission to use, copy, modify, and distribute this software
17 * and its documentation for NON-COMMERCIAL purposes and without
18 * fee is hereby granted provided that this copyright notice
19 * appears in all copies. Please refer to the file "copyright.html"
20 * for further important copyright and licensing information.
21 *
22 * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
23 * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
24 * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
25 * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
26 * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
27 * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
28 *
29 */
30package java.util;
31
32import java.io.InputStream;
33import java.io.FileInputStream;
34import java.util.Hashtable;
35
36/**
37 *
38 * Resource bundles contain locale-specific objects.
39 * When your program needs a locale-specific resource,
40 * a <code>String</code> for example, your program can load it
41 * from the resource bundle that is appropriate for the
42 * current user's locale. In this way, you can write
43 * program code that is largely independent of the user's
44 * locale isolating most, if not all, of the locale-specific
45 * information in resource bundles.
46 *
47 * <p>
48 * This allows you to write programs that can:
49 * <UL type=SQUARE>
50 * <LI> be easily localized, or translated, into different languages
51 * <LI> handle multiple locales at once
52 * <LI> be easily modified later to support even more locales
53 * </UL>
54 *
55 * <P>
56 * One resource bundle is, conceptually, a set of related classes that
57 * inherit from <code>ResourceBundle</code>. Each related subclass of
58 * <code>ResourceBundle</code> has the same base name plus an additional
59 * component that identifies its locale. For example, suppose your resource
60 * bundle is named <code>MyResources</code>. The first class you are likely
61 * to write is the default resource bundle which simply has the same name as
62 * its family--<code>MyResources</code>. You can also provide as
63 * many related locale-specific classes as you need: for example, perhaps
64 * you would provide a German one named <code>MyResources_de</code>.
65 *
66 * <P>
67 * Each related subclass of <code>ResourceBundle</code> contains the same
68 * items, but the items have been translated for the locale represented by that
69 * <code>ResourceBundle</code> subclass. For example, both <code>MyResources</code>
70 * and <code>MyResources_de</code> may have a <code>String</code> that's used
71 * on a button for confirming operations. In <code>MyResources</code> the
72 * <code>String</code> may contain <code>OK</code> and in
73 * <code>MyResources_de</code> it may contain <code>Gut</code>.
74 *
75 * <P>
76 * If there are different resources for different countries, you
77 * can make specializations: for example, <code>MyResources_de_CH</code>
78 * for Switzerland. If you want to only modify some of the resources
79 * in the specialization, you can do so.
80 *
81 * <P>
82 * When your program needs a locale-specific object, it loads
83 * the <code>ResourceBundle</code> class using the <code>getBundle</code>
84 * method:
85 * <blockquote>
86 * <pre>
87 * ResourceBundle myResources =
88 * ResourceBundle.getBundle("MyResources", currentLocale);
89 * </pre>
90 * </blockquote>
91 * The first argument specifies the family name of the resource
92 * bundle that contains the object in question. The second argument
93 * indicates the desired locale. <code>getBundle</code>
94 * uses these two arguments to construct the name of the
95 * <code>ResourceBundle</code> subclass it should load as follows.
96 *
97 * <P>
98 * The resource bundle lookup searches for classes with various suffixes
99 * on the basis of (1) the desired locale and (2) the default locale (baseclass),
100 * in the following order from lower-level (more specific) to parent-level
101 * (less specific):
102 * <p> baseclass + "_" + language1 + "_" + country1 + "_" + variant1
103 * <BR> baseclass + "_" + language1 + "_" + country1
104 * <BR> baseclass + "_" + language1
105 * <BR> baseclass
106 * <BR> baseclass + "_" + language2 + "_" + country2 + "_" + variant2
107 * <BR> baseclass + "_" + language2 + "_" + country2
108 * <BR> baseclass + "_" + language2
109 *
110 * <P>
111 * The result of the lookup is a class, but that class may be
112 * backed by a property file on disk. If a lookup fails,
113 * <code>getBundle()</code> throws a <code>MissingResourceException</code>.
114 *
115 * <P>
116 * The baseclass <strong>must</strong> be fully
117 * qualified (for example, <code>myPackage.MyResources</code>, not just
118 * <code>MyResources</code>). It must
119 * also be accessable by your code; it cannot be a class that is private
120 * to the package where <code>ResourceBundle.getBundle</code> is called.
121 *
122 * <P>
123 * Note: <code>ResourceBundle</code> are used internally in accessing
124 * <code>NumberFormat</code>s, <code>Collation</code>s, and so on.
125 * The lookup strategy is the same.
126 *
127 * <P>
128 * Resource bundles contain key/value pairs. The keys uniquely
129 * identify a locale-specific object in the bundle. Here's an
130 * example of a <code>ListResourceBundle</code> that contains
131 * two key/value pairs:
132 * <blockquote>
133 * <pre>
134 * class MyResource extends ListResourceBundle {
135 * public Object[][] getContents() {
136 * return contents;
137 * }
138 * static final Object[][] contents = {
139 * // LOCALIZE THIS
140 * {"OkKey", "OK"},
141 * {"CancelKey", "Cancel"},
142 * // END OF MATERIAL TO LOCALIZE
143 * };
144 * }
145 * </pre>
146 * </blockquote>
147 * Keys are always <code>String</code>s.
148 * In this example, the keys are <code>OkKey</code> and <code>CancelKey</code>.
149 * In the above example, the values
150 * are also <code>String</code>s--<code>OK</code> and <code>Cancel</code>--but
151 * they don't have to be. The values can be any type of object.
152 *
153 * <P>
154 * You retrieve an object from resource bundle using the appropriate
155 * getter method. Because <code>OkKey</code> and <code>CancelKey</code>
156 * are both strings, you would use <code>getString</code> to retrieve them:
157 * <blockquote>
158 * <pre>
159 * button1 = new Button(myResourceBundle.getString("OkKey"));
160 * button2 = new Button(myResourceBundle.getString("CancelKey"));
161 * </pre>
162 * </blockquote>
163 * The getter methods all require the key as an argument and return
164 * the object if found. If the object is not found, the getter method
165 * throws a <code>MissingResourceException</code>.
166 *
167 * <P>
168 * Besides <code>getString</code>; ResourceBundle supports a number
169 * of other methods for getting different types of objects such as
170 * <code>getStringArray</code>. If you don't have an object that
171 * matches one of these methods, you can use <code>getObject</code>
172 * and cast the result to the appropriate type. For example:
173 * <blockquote>
174 * <pre>
175 * int[] myIntegers = (int[]) myResources.getObject("intList");
176 * </pre>
177 * </blockquote>
178 *
179 * <P>
180 * <STRONG>NOTE:</STRONG> You should always supply a baseclass with
181 * no suffixes. This will be the class of "last resort", if a locale
182 * is requested that does not exist. For example, below we have a class
183 * <code>MyResources</code>. It happens to contain US strings,
184 * so we don't have to have an explicit <code>MyResource_en</code> or
185 * <code>MyResource_en_US</code>.
186 *
187 * <P>
188 * The JDK provides two subclasses of <code>ResourceBundle</code>,
189 * <code>ListResourceBundle</code> and <code>PropertyResourceBundle</code>,
190 * that provide a fairly simple way to create resources. (Once serialization
191 * is fully integrated, we will provide another
192 * way.) As you saw briefly in a prevous example, <code>ListResourceBundle</code>
193 * manages its resource as a List of key/value pairs.
194 * <code>PropertyResourceBundle</code> uses a properties file to manage
195 * its resources.
196 *
197 * <p>
198 * If <code>ListResourceBundle</code> or <code>PropertyResourceBundle</code>
199 * do not suit your needs, you can write your own <code>ResourceBundle</code>
200 * subclass. Your subclasses must overrde two methods: <code>handleGetObject</code>
201 * and <code>getKeys()</code>.
202 *
203 * <P>
204 * The following is a very simple example of a <code>ResourceBundle</code> subclass
205 * that manages only a few resources (for a larger number of resources
206 * you would probably use a <code>Hashtable</code>). Notice that if the key
207 * is not found, <code>handleGetObject</code> must return null. Notice also
208 * that you don't need to supply a value if a "parent-level"
209 * <code>ResourceBundle</code> handles the same
210 * key with the same value (look at uk below).
211 * <strong><p>Example:</strong>
212 * <blockquote>
213 * <pre>
214 * abstract class MyResources extends ResourceBundle {
215 * public Object handleGetObject(String key) {
216 * if (key.equals("okKey")) return "Ok";
217 * if (key.equals("cancelKey")) return "Cancel";
218 * return null;
219 * }
220 * }
221 *
222 * abstract class MyResources_de extends MyResources {
223 * public Object handleGetObject(String key) {
224 * if (key.equals("okKey")) return "Gut";
225 * if (key.equals("cancelKey")) return "Vernichten";
226 * return null;
227 * }
228 * }
229 *
230 * abstract class MyResources_uk extends MyResources {
231 * public Object handleGetObject(String key) {
232 * // don't need okKey, since parent level handles it.
233 * if (key.equals("cancelKey")) return "Dispose";
234 * return null;
235 * }
236 * }
237 * </pre>
238 * </blockquote>
239 * You do not have to restrict yourself to using a single family of
240 * <code>ResourceBundle</code>s. For example, you could have a set of bundles for
241 * exception messages, <code>ExceptionResources</code>
242 * (<code>ExceptionResources_fr</code>, <code>ExceptionResources_de</code>, ...),
243 * and one for widgets, <code>WidgetResource</code> (<code>WidgetResources_fr</code>,
244 * <code>WidgetResources_de</code>, ...); breaking up the resources however you like.
245 *
246 * @see ListResourceBundle
247 * @see PropertyResourceBundle
248 * @see MissingResourceException
249 */
250abstract public class ResourceBundle {
251
252 /**
253 * Get an object from a ResourceBundle.
254 * <BR>Convenience method to save casting.
255 * @param key see class description.
256 */
257 public final String getString(String key) throws MissingResourceException {
258 return (String) getObject(key);
259 }
260
261 /**
262 * Get an object from a ResourceBundle.
263 * <BR>Convenience method to save casting.
264 * @param key see class description.
265 */
266 public final String[] getStringArray(String key)
267 throws MissingResourceException {
268 return (String[]) getObject(key);
269 }
270
271 /**
272 * Get an object from a ResourceBundle.
273 * @param key see class description.
274 */
275 public final Object getObject(String key) throws MissingResourceException {
276 Object obj = handleGetObject(key);
277 if (obj == null) {
278 if (parent != null) {
279 obj = parent.getObject(key);
280 }
281 if (obj == null)
282 throw new MissingResourceException("Can't find resource",
283 this.getClass().getName(),
284 key);
285 }
286 return obj;
287 }
288
289
290 /**
291 * Get the appropriate ResourceBundle subclass.
292 * @param baseName see class description.
293 */
294 public static final ResourceBundle getBundle(String baseName)
295 throws MissingResourceException
296 {
297 return getBundle(baseName, Locale.getDefault(),
298 /* must determine loader here, else we break stack invariant */
299 getLoader());
300 }
301
302
303 /**
304 * Get the appropriate ResourceBundle subclass.
305 * @param baseName see class description.
306 * @param locale see class description.
307 */
308 public static final ResourceBundle getBundle(String baseName,
309 Locale locale)
310 {
311 return getBundle(baseName, locale, getLoader());
312 }
313
314 /*
315 * Automatic determination of the ClassLoader to be used to load
316 * resources on behalf of the client. N.B. The client is getLoader's
317 * caller's caller.
318 */
319 private static ClassLoader getLoader() {
320 Class[] stack = getClassContext();
321 /* Magic number 2 identifies our caller's caller */
322 Class c = stack[2];
323 ClassLoader cl = (c == null) ? null : c.getClassLoader();
324 return (cl == null) ? systemClassLoader : cl;
325 }
326 private static native Class[] getClassContext();
327 private static SystemClassLoader systemClassLoader =
328 new SystemClassLoader();
329
330 /**
331 * Get the appropriate ResourceBundle subclass.
332 * @param baseName see class description.
333 * @param locale see class description.
334 */
335 private static synchronized ResourceBundle
336 getBundle(String baseName, Locale locale, ClassLoader loader)
337 throws MissingResourceException
338 {
339 StringBuffer localeName
340 = new StringBuffer("_").append(locale.toString());
341
342 ResourceBundle lookup = findBundle(baseName,localeName,loader,false);
343 if(lookup == null) {
344 localeName.setLength(0);
345 localeName.append("_").append( Locale.getDefault().toString() );
346 lookup = findBundle(baseName, localeName, loader, true);
347 if( lookup == null ) {
348 throw new MissingResourceException("can't find resource for "
349 + baseName + "_" + locale,
350 baseName + "_" + locale,"");
351 }
352 }
353
354 // Setup lookup's ancestry. If we find an ancestor whose parent is null,
355 // we set up the ancestor's parent as well.
356 ResourceBundle child = lookup;
357 while( (child != null) && (child.parent == null) ) {
358 // Chop off the last component of the locale name and search for that
359 // as the parent locale. Use it to set the parent of current child.
360 int lastUnderbar = localeName.toString().lastIndexOf('_');
361 if( lastUnderbar != -1 ) {
362 localeName.setLength(lastUnderbar);
363 debug("Searching for parent " + baseName + localeName);
364 child.setParent( findBundle(baseName,localeName,loader,true) );
365 }
366 child = child.parent;
367 }
368
369 return lookup;
370 }
371
372
373 /**
374 * Set the parent bundle of this bundle. The parent bundle is
375 * searched by getObject when this bundle does not contain a
376 * particular resource.
377 * @param parent this bundle's parent bundle.
378 */
379 protected void setParent( ResourceBundle parent ) {
380 this.parent = parent;
381 }
382
383
384 /**
385 * The internal routine that does the real work of finding and loading
386 * the right ResourceBundle for a given name and locale.
387 */
388 private static ResourceBundle findBundle(String baseName,
389 StringBuffer localeName,
390 ClassLoader loader,
391 boolean includeBase)
392 {
393 String localeStr = localeName.toString();
394 String baseFileName = baseName.replace('.', '/');
395 Object lookup = null;
396 String searchName;
397 Vector cacheCandidates = new Vector();
398 int lastUnderbar;
399 InputStream stream;
400
401 searchLoop:
402 while (true) {
403 searchName = baseName + localeStr;
404 String cacheName =
405 "["+Integer.toString(loader.hashCode())+"]" + searchName;
406
407 // First, look in the cache. We may either find the bundle we're
408 // looking for or we may find that the bundle was not found by a
409 // previous search.
410 lookup = cacheList.get(cacheName);
411 if( lookup == NOTFOUND ) {
412 debug("Found " + searchName + " in cache as NOTFOUND");
413 localeName.setLength(0);
414 break searchLoop;
415 }
416 if( lookup != null ) {
417 debug("Found " + searchName + " in cache");
418 localeName.setLength(0);
419 break searchLoop;
420 }
421 cacheCandidates.addElement( cacheName );
422
423 // Next search for a class
424 debug("Searching for " + searchName );
425 try {
426 lookup = loader.loadClass(searchName).newInstance();
427 break searchLoop;
428 } catch( Exception e ){}
429
430 // Next search for a Properties file.
431 searchName = baseFileName + localeStr + ".properties";
432 debug("Searching for " + searchName );
433 stream = loader.getResourceAsStream(searchName);
434 if( stream != null ) {
435 // make sure it is buffered
436 stream = new java.io.BufferedInputStream(stream);
437 try {
438 lookup = (Object)new PropertyResourceBundle( stream );
439 break searchLoop;
440 } catch (Exception e) {}
441 }
442
443 //Chop off the last part of the locale name string and try again.
444 lastUnderbar = localeStr.lastIndexOf('_');
445 if( ((lastUnderbar==0)&&(!includeBase)) || (lastUnderbar == -1) ) {
446 break;
447 }
448 localeStr = localeStr.substring(0,lastUnderbar);
449 localeName.setLength(lastUnderbar);
450 }
451
452
453 if( lookup != null ) {
454 // Add a positive result to the cache. The result may include
455 // NOTFOUND
456 for( int i=0; i<cacheCandidates.size(); i++ ) {
457 cacheList.put(cacheCandidates.elementAt(i), lookup);
458 debug("Adding " + cacheCandidates.elementAt(i) + " to cache"
459 + ((lookup == NOTFOUND)?" as NOTFOUND.":"."));
460 }
461 }
462 else {
463 // If we searched all the way to the base, then we can add
464 // the NOTFOUND result to the cache. Otherwise we can say
465 // nothing.
466 if( includeBase == true ) {
467 for( int i=0; i<cacheCandidates.size(); i++ ) {
468 cacheList.put(cacheCandidates.elementAt(i), NOTFOUND);
469 debug("Adding " + cacheCandidates.elementAt(i)
470 + " to cache as NOTFOUND.");
471 }
472 }
473 }
474
475 if( (lookup == NOTFOUND) || (lookup == null) )
476 return null;
477 else
478 return (ResourceBundle)lookup;
479 }
480
481
482 /** Get an object from a ResourceBundle.
483 * <STRONG>NOTE: </STRONG>Subclasses must override.
484 * @param key see class description.
485 */
486 protected abstract Object handleGetObject(String key)
487 throws MissingResourceException;
488
489 /**
490 * Return an enumeration of the keys.
491 * <STRONG>NOTE: </STRONG>Subclasses must override.
492 */
493 public abstract Enumeration getKeys();
494
495 /**
496 * For printf debugging.
497 */
498 private static boolean debugFlag = false;
499 private static void debug(String str) {
500 if( debugFlag ) {
501 System.out.println("ResourceBundle: " + str);
502 }
503 }
504
505 /**
506 * The parent bundle is consulted by getObject when this bundle
507 * does not contain a particular resource.
508 */
509 protected ResourceBundle parent = null;
510
511 private static final Integer NOTFOUND = new Integer(-1);
512 private static Hashtable cacheList = new Hashtable();
513}
514
515
516/**
517 * The SystemClassLoader loads system classes (those in your classpath).
518 * This is an attempt to unify the handling of system classes and ClassLoader
519 * classes.
520 */
521class SystemClassLoader extends java.lang.ClassLoader {
522
523 protected Class loadClass( String name, boolean resolve )
524 throws ClassNotFoundException
525 {
526 return findSystemClass( name );
527 }
528
529 public InputStream getResourceAsStream(String name) {
530 return ClassLoader.getSystemResourceAsStream(name);
531 }
532
533 public java.net.URL getResource(String name) {
534 return ClassLoader.getSystemResource(name);
535 }
536}
java/pkg2/java/util/ResourceBundle_L.b+48−0
@@ -0,0 +1,48 @@
1implement ResourceBundle_L;
2
3# javal v1.3 generated file: edit with care
4
5include "jni.m";
6 jni : JNI;
7 ClassModule,
8 JString,
9 JArray,
10 JArrayI,
11 JArrayC,
12 JArrayB,
13 JArrayS,
14 JArrayJ,
15 JArrayF,
16 JArrayD,
17 JArrayZ,
18 JArrayJObject,
19 JArrayJClass,
20 JArrayJString,
21 JClass,
22 JThread,
23 JObject : import jni;
24
25#>> extra pre includes here
26
27#<<
28
29include "ResourceBundle_L.m";
30
31#>> extra post includes here
32
33#<<
34
35init( jni_p : JNI )
36{
37 # save java native inteface mod instance
38 jni = jni_p;
39 #>>extra initialization here
40 #<<
41}
42
43getClassContext_aClass( ) : JArrayJClass
44{#>>
45 jni->FatalError( "getClassContext() not implemented" );
46 return(nil);
47}#<<
48
java/pkg2/java/util/ResourceBundle_L.m+14−0
@@ -0,0 +1,14 @@
1# javal v1.3 generated file: edit with care
2
3ResourceBundle_L : module
4{
5 ResourceBundle_obj : adt
6 {
7 cl_mod : ClassModule;
8 parent : cyclic ref ResourceBundle_obj;
9 };
10
11 init : fn( jni_p : JNI );
12 getClassContext_aClass : fn( ) : JArrayJClass;
13
14};
java/pkg2/java/util/SimpleTimeZone.java+246−0
@@ -0,0 +1,246 @@
1/*
2 * @(#)SimpleTimeZone.java 1.12 97/03/05
3 *
4 * (C) Copyright Taligent, Inc. 1996 - All Rights Reserved
5 * (C) Copyright IBM Corp. 1996 - All Rights Reserved
6 *
7 * Portions copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
8 *
9 * The original version of this source code and documentation is copyrighted
10 * and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
11 * materials are provided under terms of a License Agreement between Taligent
12 * and Sun. This technology is protected by multiple US and International
13 * patents. This notice and attribution to Taligent may not be removed.
14 * Taligent is a registered trademark of Taligent, Inc.
15 *
16 * Permission to use, copy, modify, and distribute this software
17 * and its documentation for NON-COMMERCIAL purposes and without
18 * fee is hereby granted provided that this copyright notice
19 * appears in all copies. Please refer to the file "copyright.html"
20 * for further important copyright and licensing information.
21 *
22 * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
23 * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
24 * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
25 * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
26 * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
27 * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
28 *
29 */
30
31package java.util;
32
33import java.io.ObjectInputStream;
34
35/**
36 * <code>SimpleTimeZone</code> is a concrete subclass of <code>TimeZone</code>
37 * that represents a time zone for use with a Gregorian
38 * calendar. This simple class does not handle historical
39 * changes, and has limited rules.
40 *
41 * <P>
42 * Use a negative value for <code>dayOfWeekInMonth</code> to indicate that
43 * <code>SimpleTimeZone</code> should count from the end of the month backwards.
44 * For example, Daylight Savings Time ends at the last
45 * (dayOfWeekInMonth = -1) Sunday in October, at 2 AM in standard time.
46 *
47 * @see Calendar
48 * @see GregorianCalendar
49 * @see TimeZone
50 * @version 1.12 03/05/97
51 * @author David Goldsmith, Mark Davis, Chen-Lieh Huang
52 */
53public class SimpleTimeZone extends TimeZone {
54 /**
55 * Constructs a SimpleTimeZone with the given base time zone offset
56 * from GMT and time zone ID. Timezone IDs can be obtained from
57 * TimeZone.getAvailableIDs. Normally you should use TimeZone.getDefault
58 * to construct a TimeZone.
59 * @param rawOffset the given base time zone offset to GMT.
60 * @param ID the time zone ID which is obtained from
61 * TimeZone.getAvailableIDs.
62 */
63 public SimpleTimeZone(int rawOffset, String ID)
64 {
65 throw new NoSuchElementException();
66 }
67
68 /**
69 * Constructs a SimpleTimeZone with the given base time zone offset
70 * from GMT, time zone ID, time to start and end the daylight time.
71 * Timezone IDs can be obtained from TimeZone.getAvailableIDs.
72 * Normally you should use TimeZone.getDefault to create a TimeZone.
73 * For a time zone that does not use daylight saving time, do not
74 * use this constructor; instead you should use
75 * SimpleTimeZone(rawOffset, ID).
76 * @param rawOffset the given base time zone offset to GMT.
77 * @param ID the time zone ID which is obtained from
78 * TimeZone.getAvailableIDs.
79 * @param startMonth the daylight savings starting month. Month is 0-based.
80 * eg, 0 for January.
81 * @param startDayOfWeekInMonth the daylight savings starting
82 * day-of-week-in-month. Please see the member description for an example.
83 * @param startDayOfWeek the daylight savings starting day-of-week.
84 * Please see the member description for an example.
85 * @param startTime the daylight savings starting time. Please see the
86 * member description for an example.
87 * @param endMonth the daylight savings ending month. Month is 0-based.
88 * eg, 0 for January.
89 * @param endDayOfWeekInMonth the daylight savings ending
90 * day-of-week-in-month. Please see the member description for an example.
91 * @param endDayOfWeek the daylight savings ending day-of-week. Please see
92 * the member description for an example.
93 * @param endTime the daylight savings ending time. Please see the member
94 * description for an example.
95 */
96 public SimpleTimeZone(int rawOffset, String ID, int startMonth,
97 int startDayOfWeekInMonth, int startDayOfWeek, int startTime,
98 int endMonth, int endDayOfWeekInMonth, int endDayOfWeek, int endTime)
99 {
100 throw new NoSuchElementException();
101 }
102
103 /**
104 * Sets the daylight savings starting year.
105 * @param year the daylight savings starting year.
106 */
107 public void setStartYear(int year)
108 {
109 throw new NoSuchElementException();
110 }
111
112 /**
113 * Sets the daylight savings starting rule. For example, Daylight Savings
114 * Time starts at the first Sunday in April, at 2 AM in standard time.
115 * Therefore, you can set the start rule by calling:
116 * setStartRule(TimeFields.APRIL, 1, TimeFields.SUNDAY, 2*60*60*1000);
117 * @param month the daylight savings starting month. Month is 0-based.
118 * eg, 0 for January.
119 * @param dayOfWeekInMonth the daylight savings starting
120 * day-of-week-in-month. Please see the member description for an example.
121 * @param dayOfWeek the daylight savings starting day-of-week. Please see
122 * the member description for an example.
123 * @param time the daylight savings starting time. Please see the member
124 * description for an example.
125 */
126 public void setStartRule(int month, int dayOfWeekInMonth, int dayOfWeek,
127 int time)
128 {
129 throw new NoSuchElementException();
130 }
131
132 /**
133 * Sets the daylight savings ending rule. For example, Daylight Savings
134 * Time ends at the last (-1) Sunday in October, at 2 AM in standard time.
135 * Therefore, you can set the end rule by calling:
136 * setEndRule(TimeFields.OCTOBER, -1, TimeFields.SUNDAY, 2*60*60*1000);
137 * @param month the daylight savings ending month. Month is 0-based.
138 * eg, 0 for January.
139 * @param dayOfWeekInMonth the daylight savings ending
140 * day-of-week-in-month. Please see the member description for an example.
141 * @param dayOfWeek the daylight savings ending day-of-week. Please see
142 * the member description for an example.
143 * @param time the daylight savings ending time. Please see the member
144 * description for an example.
145 */
146 public void setEndRule(int month, int dayOfWeekInMonth, int dayOfWeek,
147 int time)
148 {
149 throw new NoSuchElementException();
150 }
151
152 /**
153 * Overrides TimeZone
154 * Gets offset, for current date, modified in case of daylight savings.
155 * This is the offset to add *to* UTC to get local time.
156 * Please see TimeZone.getOffset for descriptions on parameters.
157 */
158 public int getOffset(int era, int year, int month, int day, int dayOfWeek,
159 int millis)
160 {
161 throw new NoSuchElementException();
162 }
163
164 /**
165 * Overrides TimeZone
166 * Gets the GMT offset for this time zone.
167 */
168 public int getRawOffset()
169 {
170 throw new NoSuchElementException();
171 }
172
173 /**
174 * Overrides TimeZone
175 * Sets the base time zone offset to GMT.
176 * This is the offset to add *to* UTC to get local time.
177 * Please see TimeZone.setRawOffset for descriptions on the parameter.
178 */
179 public void setRawOffset(int offsetMillis)
180 {
181 throw new NoSuchElementException();
182 }
183
184 /**
185 * Overrides TimeZone
186 * Queries if this time zone uses Daylight Savings Time.
187 */
188 public boolean useDaylightTime()
189 {
190 throw new NoSuchElementException();
191 }
192
193 /**
194 * Overrides TimeZone
195 * Queries if the given date is in Daylight Savings Time.
196 */
197 public boolean inDaylightTime(Date date) {
198 throw new NoSuchElementException();
199 }
200
201 /**
202 * Overrides Cloneable
203 */
204 public Object clone()
205 {
206 throw new NoSuchElementException();
207 }
208
209 /**
210 * Override hashCode.
211 * Generates the hash code for the SimpleDateFormat object
212 */
213 public synchronized int hashCode()
214 {
215 throw new NoSuchElementException();
216 }
217
218 /**
219 * Compares the equality of two SimpleTimeZone objects.
220 * @param obj the SimpleTimeZone object to be compared with.
221 * @return true if the given obj is the same as this SimpleTimeZone
222 * object; false otherwise.
223 */
224 public boolean equals(Object obj)
225 {
226 throw new NoSuchElementException();
227 }
228
229 // =======================privates===============================
230
231 private int startMonth, startDay, startDayOfWeek, startTime;
232 private int endMonth, endDay, endDayOfWeek, endTime;
233 private int startYear;
234 private int rawOffset;
235 private boolean useDaylight=false; // indicate if this time zone uses DST
236 private static final int millisPerHour = 60*60*1000;
237 // WARNING: assumes that no rule is measured from the end of February,
238 // since we don't handle leap years. Could handle assuming always
239 // Gregorian, since we know they didn't have daylight time when
240 // Gregorian calendar started.
241 private final byte monthLength[] = {31,28,31,30,31,30,31,31,30,31,30,31};
242
243 private void readObject(ObjectInputStream s) {
244 throw new NoSuchElementException();
245 }
246}
java/pkg2/java/util/Stack.java+0−0

Empty file added.

java/pkg2/java/util/StringTokenizer.java+0−0

Empty file added.

java/pkg2/java/util/TimeZone.java+193−0
@@ -0,0 +1,193 @@
1/*
2 * @(#)TimeZone.java 1.17 97/01/29
3 *
4 * (C) Copyright Taligent, Inc. 1996 - All Rights Reserved
5 * (C) Copyright IBM Corp. 1996 - All Rights Reserved
6 *
7 * Portions copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
8 *
9 * The original version of this source code and documentation is copyrighted
10 * and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
11 * materials are provided under terms of a License Agreement between Taligent
12 * and Sun. This technology is protected by multiple US and International
13 * patents. This notice and attribution to Taligent may not be removed.
14 * Taligent is a registered trademark of Taligent, Inc.
15 *
16 * Permission to use, copy, modify, and distribute this software
17 * and its documentation for NON-COMMERCIAL purposes and without
18 * fee is hereby granted provided that this copyright notice
19 * appears in all copies. Please refer to the file "copyright.html"
20 * for further important copyright and licensing information.
21 *
22 * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
23 * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
24 * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
25 * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
26 * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
27 * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
28 *
29 */
30
31package java.util;
32
33import java.io.Serializable;
34import java.io.ObjectInputStream;
35
36/**
37 * <code>TimeZone</code> represents a time zone offset, and also figures out daylight
38 * savings.
39 *
40 * <p>
41 * Typically, you get a <code>TimeZone</code> using <code>getDefault</code>
42 * which creates a <code>TimeZone</code> based on the time zone where the program
43 * is running. For example, for a program running in Japan, <code>getDefault</code>
44 * creates a <code>TimeZone</code> object based on Japanese Standard Time.
45 *
46 * <p>
47 * You can also get a <code>TimeZone</code> using <code>getTimeZone</code> along
48 * with a time zone ID. For instance, the time zone ID for the Pacific
49 * Standard Time zone is "PST". So, you can get a PST <code>TimeZone</code> object
50 * with:
51 * <blockquote>
52 * <pre>
53 * TimeZone tz = TimeZone.getTimeZone("PST");
54 * </pre>
55 * </blockquote>
56 * You can use <code>getAvailableIDs</code> method to iterate through
57 * all the supported time zone IDs. You can then choose a
58 * supported ID to get a favorite <code>TimeZone</code>.
59 *
60 * @see Calendar
61 * @see GregorianCalendar
62 * @see SimpleTimeZone
63 * @version 1.17 01/29/97
64 * @author Mark Davis, David Goldsmith, Chen-Lieh Huang
65 */
66abstract public class TimeZone implements Serializable, Cloneable {
67
68 public TimeZone() {
69 throw new NoSuchElementException();
70 }
71
72 /**
73 * Gets the time zone offset, for current date, modified in case of
74 * daylight savings. This is the offset to add *to* UTC to get local time.
75 * @param era the era of the given date.
76 * @param year the year in the given date.
77 * @param month the month in the given date.
78 * Month is 0-based. e.g., 0 for January.
79 * @param day the day-in-month of the given date.
80 * @param dayOfWeek the day-of-week of the given date.
81 * @param milliseconds the millis in day.
82 * @return the offset to add *to* GMT to get local time.
83 */
84 abstract public int getOffset(int era, int year, int month, int day,
85 int dayOfWeek, int milliseconds);
86
87 /**
88 * Sets the base time zone offset to GMT.
89 * This is the offset to add *to* UTC to get local time.
90 * @param offsetMillis the given base time zone offset to GMT.
91 */
92 abstract public void setRawOffset(int offsetMillis);
93
94 /**
95 * Gets unmodified offset, NOT modified in case of daylight savings.
96 * This is the offset to add *to* UTC to get local time.
97 * @return the unmodified offset to add *to* UTC to get local time.
98 */
99 abstract public int getRawOffset();
100
101 /**
102 * Gets the ID of this time zone.
103 * @return the ID of this time zone.
104 */
105 public String getID()
106 {
107 throw new NoSuchElementException();
108 }
109
110 /**
111 * Sets the time zone ID. This does not change any other data in
112 * the time zone object.
113 * @param ID the new time zone ID.
114 */
115 public void setID(String ID)
116 {
117 throw new NoSuchElementException();
118 }
119
120 /**
121 * Queries if this time zone uses Daylight Savings Time.
122 * @return true if this time zone uses Daylight Savings Time,
123 * false, otherwise.
124 */
125 abstract public boolean useDaylightTime();
126
127 /**
128 * Queries if the given date is in Daylight Savings Time in
129 * this time zone.
130 * @param date the given Date.
131 * @return true if the given date is in Daylight Savings Time,
132 * false, otherwise.
133 */
134 abstract public boolean inDaylightTime(Date date);
135
136 /**
137 * Gets the TimeZone for the given ID.
138 * @param ID the given ID.
139 * @return a TimeZone.
140 */
141 public static synchronized TimeZone getTimeZone(String ID)
142 {
143 throw new NoSuchElementException();
144 }
145
146 /**
147 * Gets the available IDs according to the given time zone offset.
148 * @param rawOffset the given time zone GMT offset.
149 * @return an array of IDs, where the time zone for that ID has
150 * the specified GMT offset. For example, {"Phoenix", "Denver"},
151 * since both have GMT-07:00, but differ in daylight savings behavior.
152 */
153 public static synchronized String[] getAvailableIDs(int rawOffset) {
154 throw new NoSuchElementException();
155 }
156
157 /**
158 * Gets all the available IDs supported.
159 * @return an array of IDs.
160 */
161 public static synchronized String[] getAvailableIDs() {
162 throw new NoSuchElementException();
163 }
164
165 /**
166 * Gets the default TimeZone for this host.
167 * @return a default TimeZone.
168 */
169 public static synchronized TimeZone getDefault() {
170 throw new NoSuchElementException();
171 }
172
173 /**
174 * Sets time zone to using the given TimeZone.
175 * @param zone the given time zone.
176 */
177 public static synchronized void setDefault(TimeZone zone)
178 {
179 throw new NoSuchElementException();
180 }
181
182 /**
183 * Overrides Cloneable
184 */
185 public Object clone()
186 {
187 throw new NoSuchElementException();
188 }
189
190 private void readObject(ObjectInputStream s) {
191 throw new NoSuchElementException();
192 }
193}
java/pkg2/java/util/TooManyListenersException.java+65−0
@@ -0,0 +1,65 @@
1/*
2 * @(#)TooManyListenersException.java 1.1 96/10/10
3 *
4 * Copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
5 *
6 * Permission to use, copy, modify, and distribute this software
7 * and its documentation for NON-COMMERCIAL purposes and without
8 * fee is hereby granted provided that this copyright notice
9 * appears in all copies. Please refer to the file "copyright.html"
10 * for further important copyright and licensing information.
11 *
12 * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
13 * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
14 * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
15 * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
16 * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
17 * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
18 */
19
20package java.util;
21
22/**
23 * <p>
24 * The <code> TooManyListenersException </code> Exception is used as part of
25 * the Java Event model to annotate and implement a unicast special case of
26 * a multicast Event Source.
27 * </p>
28 * <p>
29 * The presence of a <code> throws TooManyListenersException </code> clause
30 * on any given concrete implementation of the normally multicast semantic
31 * <italic> void add &lt EventListenerType &gt () </italic> event listener
32 * registration pattern is used to annotate that interface as implementing
33 * a unicast Listener special case, that is, that one and only one Listener
34 * may be registered on the particular event listener source concurrently.
35 * </p>
36 *
37 * @see java.util.EventObject
38 * @see java.util.EventListener
39 *
40 * @version 1.1 96/10/10
41 * @author Laurence P. G. Cable
42 */
43
44public class TooManyListenersException extends Exception {
45
46 /**
47 * Constructs a TooManyListenersException with no detail message.
48 * A detail message is a String that describes this particular exception.
49 */
50
51 public TooManyListenersException() {
52 super();
53 }
54
55 /**
56 * Constructs a TooManyListenersException with the specified detail message.
57 * A detail message is a String that describes this particular exception.
58 * @param s the detail message
59 */
60
61 public TooManyListenersException(String s) {
62 super(s);
63 }
64}
65
java/pkg2/java/util/Vector.java+0−0

Empty file added.

java/pkg2/java/util/mkfile+88−0
@@ -0,0 +1,88 @@
1<../../../../mkconfig
2
3DIRS=\
4 zip\
5
6TARG=\
7 BitSet.dis\
8 Calendar.dis\
9 Date.dis\
10 Dictionary.dis\
11 EmptyStackException.dis\
12 Enumeration.dis\
13 EventListener.dis\
14 EventObject.dis\
15 GregorianCalendar.dis\
16 Hashtable.dis\
17 HashtableEntry.dis\
18 HashtableEnumerator.dis\
19 ListResourceBundle.dis\
20 Locale.dis\
21# for MissingResourceException.dis\
22 PyLHKaRk2knKuXdPtclNZ.dis\
23# for NoSuchElementException.dis\
24 FgHgFAyr+lOIx-Hx5tg1g.dis\
25 Observable.dis\
26 Observer.dis\
27 Properties.dis\
28# for PropertyResourceBundle.dis\
29 hXReUGvcTPP+3SdqzAFLN.dis\
30 Random.dis\
31 ResourceBundle.dis\
32 SimpleTimeZone.dis\
33 Stack.dis\
34 StringTokenizer.dis\
35 SystemClassLoader.dis\
36 TimeZone.dis\
37# for TooManyListenersException.dis\
38 ofB3vewCQyrpHPDk+jZyy.dis\
39 Vector.dis\
40 VectorEnumerator.dis\
41# Limbo code\
42 Date_L.dis\
43 ResourceBundle_L.dis\
44
45MODULES=\
46 $ROOT/java/module/classloader.m\
47 $ROOT/java/module/jni.m\
48 $ROOT/java/module/cast.m\
49 Date_L.m\
50 ResourceBundle_L.m\
51
52SYSMODULES=\
53 draw.m\
54 hash.m\
55 keyring.m\
56 loader.m\
57 math.m\
58 string.m\
59 sys.m\
60
61DISBIN=$ROOT/java/dis/java/java/util
62
63<$ROOT/mkfiles/mkjava
64<$ROOT/mkfiles/mksubdirs
65
66HashtableEntry.dis: Hashtable.class
67 j2d HashtableEntry.class
68
69HashtableEnumerator.dis: Hashtable.class
70 j2d HashtableEnumerator.class
71
72VectorEnumerator.dis: Vector.class
73 j2d VectorEnumerator.class
74
75PyLHKaRk2knKuXdPtclNZ.dis: MissingResourceException.class
76 j2d MissingResourceException.class
77
78FgHgFAyr+lOIx-Hx5tg1g.dis: NoSuchElementException.class
79 j2d NoSuchElementException.class
80
81SystemClassLoader.dis: ResourceBundle.class
82 j2d SystemClassLoader.class
83
84hXReUGvcTPP+3SdqzAFLN.dis: PropertyResourceBundle.class
85 j2d PropertyResourceBundle.class
86
87ofB3vewCQyrpHPDk+jZyy.dis: TooManyListenersException.class
88 j2d TooManyListenersException.class
java/pkg2/java/util/zip/CRC32.java+0−0

Empty file added.

java/pkg2/java/util/zip/CRC32_L.b+51−0
@@ -0,0 +1,51 @@
1implement CRC32_L;
2
3# javal v1.4 generated file: edit with care
4
5include "jni.m";
6 jni : JNI;
7 ClassModule,
8 JString,
9 JArray,
10 JArrayI,
11 JArrayC,
12 JArrayB,
13 JArrayS,
14 JArrayJ,
15 JArrayF,
16 JArrayD,
17 JArrayZ,
18 JArrayJObject,
19 JArrayJClass,
20 JArrayJString,
21 JClass,
22 JThread,
23 JObject : import jni;
24
25#>> extra pre includes here
26
27#<<
28
29include "CRC32_L.m";
30
31#>> extra post includes here
32
33#<<
34
35init( jni_p : JNI )
36{
37 # save java native inteface mod instance
38 jni = jni_p;
39 #>>extra initialization here
40 #<<
41}
42
43update_aB_I_I_V( this : ref CRC32_obj, p0 : JArrayB,p1 : int,p2 : int)
44{#>>
45}#<<
46
47update1_I_V( this : ref CRC32_obj, p0 : int)
48{#>>
49}#<<
50
51
java/pkg2/java/util/zip/CRC32_L.m+15−0
@@ -0,0 +1,15 @@
1# javal v1.4 generated file: edit with care
2
3CRC32_L : module
4{
5 CRC32_obj : adt
6 {
7 cl_mod : ClassModule;
8 crc : int;
9 };
10
11 init : fn( jni_p : JNI );
12 update_aB_I_I_V : fn( this : ref CRC32_obj, p0 : JArrayB,p1 : int,p2 : int);
13 update1_I_V : fn( this : ref CRC32_obj, p0 : int);
14
15};
java/pkg2/java/util/zip/CheckedInputStream.java+0−0

Empty file added.

java/pkg2/java/util/zip/CheckedOutputStream.java+0−0

Empty file added.

java/pkg2/java/util/zip/Checksum.java+0−0

Empty file added.

java/pkg2/java/util/zip/DataFormatException.java+0−0

Empty file added.

java/pkg2/java/util/zip/GZIPInputStream.java+0−0

Empty file added.

java/pkg2/java/util/zip/Inflater.java+0−0

Empty file added.

java/pkg2/java/util/zip/InflaterInputStream.java+0−0

Empty file added.

java/pkg2/java/util/zip/Inflater_L.b+77−0
@@ -0,0 +1,77 @@
1implement Inflater_L;
2
3# javal v1.4 generated file: edit with care
4
5include "jni.m";
6 jni : JNI;
7 ClassModule,
8 JString,
9 JArray,
10 JArrayI,
11 JArrayC,
12 JArrayB,
13 JArrayS,
14 JArrayJ,
15 JArrayF,
16 JArrayD,
17 JArrayZ,
18 JArrayJObject,
19 JArrayJClass,
20 JArrayJString,
21 JClass,
22 JThread,
23 JObject : import jni;
24
25#>> extra pre includes here
26
27#<<
28
29include "Inflater_L.m";
30
31#>> extra post includes here
32
33#<<
34
35init( jni_p : JNI )
36{
37 # save java native inteface mod instance
38 jni = jni_p;
39 #>>extra initialization here
40 #<<
41}
42
43inflate_aB_I_I_I( this : ref Inflater_obj, p0 : JArrayB,p1 : int,p2 : int) : int
44{#>>
45 junk1 := (this, p0);
46 junk2 := (p1, p2);
47 return 0;
48}#<<
49
50getTotalIn_I( this : ref Inflater_obj) : int
51{#>>
52 junk := this;
53 return 0;
54}#<<
55
56getTotalOut_I( this : ref Inflater_obj) : int
57{#>>
58 junk := this;
59 return 0;
60}#<<
61
62reset_V( this : ref Inflater_obj)
63{#>>
64 junk := this;
65}#<<
66
67end_V( this : ref Inflater_obj)
68{#>>
69 junk := this;
70}#<<
71
72init_Z_V( this : ref Inflater_obj, p0 : int)
73{#>>
74 junk := (this, p0);
75}#<<
76
77
java/pkg2/java/util/zip/Inflater_L.m+24−0
@@ -0,0 +1,24 @@
1# javal v1.6 generated file: edit with care
2
3Inflater_L : module
4{
5 Inflater_obj : adt
6 {
7 cl_mod : ClassModule;
8 strm : int;
9 buf : JArrayB;
10 off : int;
11 len_j : int;
12 finished : byte;
13 needsDictionary : byte;
14 };
15
16 init : fn( jni_p : JNI );
17 inflate_aB_I_I_I : fn( this : ref Inflater_obj, p0 : JArrayB,p1 : int,p2 : int) : int;
18 getTotalIn_I : fn( this : ref Inflater_obj) : int;
19 getTotalOut_I : fn( this : ref Inflater_obj) : int;
20 reset_V : fn( this : ref Inflater_obj);
21 end_V : fn( this : ref Inflater_obj);
22 init_Z_V : fn( this : ref Inflater_obj, p0 : int);
23
24};
java/pkg2/java/util/zip/ZipConstants.java+0−0

Empty file added.

java/pkg2/java/util/zip/ZipEntry.java+0−0

Empty file added.

java/pkg2/java/util/zip/ZipException.java+0−0

Empty file added.

java/pkg2/java/util/zip/ZipInputStream.java+0−0

Empty file added.

java/pkg2/java/util/zip/mkfile+38−0
@@ -0,0 +1,38 @@
1<../../../../../mkconfig
2
3TARG=\
4 CRC32.dis\
5 CheckedInputStream.dis\
6 CheckedOutputStream.dis\
7 Checksum.dis\
8 DataFormatException.dis\
9 GZIPInputStream.dis\
10 Inflater.dis\
11 InflaterInputStream.dis\
12 ZipConstants.dis\
13 ZipEntry.dis\
14 ZipException.dis\
15 ZipInputStream.dis\
16# Limbo code\
17 CRC32_L.dis\
18 Inflater_L.dis\
19
20MODULES=\
21 $ROOT/java/module/classloader.m\
22 $ROOT/java/module/jni.m\
23 $ROOT/java/module/cast.m\
24 CRC32_L.m\
25 Inflater_L.m\
26
27SYSMODULES=\
28 draw.m\
29 hash.m\
30 keyring.m\
31 loader.m\
32 math.m\
33 string.m\
34 sys.m\
35
36DISBIN=$ROOT/java/dis/java/java/util/zip
37
38<$ROOT/mkfiles/mkjava