History

Added File[Input/Output]Stream native modules

Dmitry Kabak (userdima committed 13 years ago

Commit 8cec9441 parent 617fe394 files · +299 −0Browse files

Showing the changes to java (4 of 4 files). Show all

Unified · Split

4 files
  1. java/pkg/java/io/FileInputStream_L.b +140 −0
  2. java/pkg/java/io/FileInputStream_L.m +20 −0
  3. java/pkg/java/io/FileOutputStream_L.b +120 −0
  4. java/pkg/java/io/FileOutputStream_L.m +19 −0
java/pkg/java/io/FileInputStream_L.b+140−0
@@ -0,0 +1,140 @@
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, big 0, sys->SEEKRELA);
112 end := sys->seek(this.fd.fd, 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, big 0, Sys->SEEKRELA);
121 end := sys->seek(this.fd.fd, big 0, Sys->SEEKEND);
122 sys->seek(this.fd.fd, cur, Sys->SEEKSTART);
123
124 return int (end - cur);
125}#<<
126
127close0_V( this : ref FileInputStream_obj)
128{#>>
129 if (this.fd != nil)
130 this.fd.fd = nil;
131}#<<
132
133initIDs_V( )
134{#>>
135 # No-op
136}#<<
137
138
139
140
java/pkg/java/io/FileInputStream_L.m+20−0
@@ -0,0 +1,20 @@
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 close0_V : fn( this : ref FileInputStream_obj);
18 initIDs_V: fn( );
19
20};
java/pkg/java/io/FileOutputStream_L.b+120−0
@@ -0,0 +1,120 @@
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, big 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
111close0_V( this : ref FileOutputStream_obj)
112{#>>
113 if (this.fd != nil)
114 this.fd.fd = nil;
115}#<<
116
117initIDs_V( )
118{#>>
119 # No-op
120}#<<
java/pkg/java/io/FileOutputStream_L.m+19−0
@@ -0,0 +1,19 @@
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 close0_V : fn( this : ref FileOutputStream_obj);
17 initIDs_V: fn( );
18
19};