Skip to content

Commit 0350eda

Browse files
committed
Add DataInput, DataOutput interface
1 parent 4ca9301 commit 0350eda

File tree

7 files changed

+80
-9
lines changed

7 files changed

+80
-9
lines changed

java_runtime/src/classes/java/io.rs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
mod buffered_reader;
22
mod byte_array_input_stream;
33
mod byte_array_output_stream;
4+
mod data_input;
45
mod data_input_stream;
6+
mod data_output;
57
mod data_output_stream;
68
mod eof_exception;
79
mod file;
@@ -24,10 +26,10 @@ mod writer;
2426

2527
pub use self::{
2628
buffered_reader::BufferedReader, byte_array_input_stream::ByteArrayInputStream, byte_array_output_stream::ByteArrayOutputStream,
27-
data_input_stream::DataInputStream, data_output_stream::DataOutputStream, eof_exception::EOFException, file::File,
28-
file_descriptor::FileDescriptor, file_input_stream::FileInputStream, file_not_found_exception::FileNotFoundException,
29-
file_output_stream::FileOutputStream, filter_input_stream::FilterInputStream, filter_output_stream::FilterOutputStream,
30-
input_stream::InputStream, input_stream_reader::InputStreamReader, io_exception::IOException, output_stream::OutputStream,
31-
print_stream::PrintStream, print_writer::PrintWriter, random_access_file::RandomAccessFile, reader::Reader, string_writer::StringWriter,
32-
writer::Writer,
29+
data_input::DataInput, data_input_stream::DataInputStream, data_output::DataOutput, data_output_stream::DataOutputStream,
30+
eof_exception::EOFException, file::File, file_descriptor::FileDescriptor, file_input_stream::FileInputStream,
31+
file_not_found_exception::FileNotFoundException, file_output_stream::FileOutputStream, filter_input_stream::FilterInputStream,
32+
filter_output_stream::FilterOutputStream, input_stream::InputStream, input_stream_reader::InputStreamReader, io_exception::IOException,
33+
output_stream::OutputStream, print_stream::PrintStream, print_writer::PrintWriter, random_access_file::RandomAccessFile, reader::Reader,
34+
string_writer::StringWriter, writer::Writer,
3335
};
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
use alloc::vec;
2+
3+
use java_class_proto::JavaMethodProto;
4+
use java_constants::ClassAccessFlags;
5+
6+
use crate::RuntimeClassProto;
7+
// interface java.io.DataInput
8+
pub struct DataInput;
9+
10+
impl DataInput {
11+
pub fn as_proto() -> RuntimeClassProto {
12+
RuntimeClassProto {
13+
name: "java/io/DataInput",
14+
parent_class: None,
15+
interfaces: vec![],
16+
methods: vec![
17+
JavaMethodProto::new_abstract("readBoolean", "()Z", Default::default()),
18+
JavaMethodProto::new_abstract("readByte", "()B", Default::default()),
19+
JavaMethodProto::new_abstract("readChar", "()C", Default::default()),
20+
JavaMethodProto::new_abstract("readDouble", "()D", Default::default()),
21+
JavaMethodProto::new_abstract("readFloat", "()F", Default::default()),
22+
JavaMethodProto::new_abstract("readFully", "([B)V", Default::default()),
23+
JavaMethodProto::new_abstract("readFully", "([BII)V", Default::default()),
24+
JavaMethodProto::new_abstract("readInt", "()I", Default::default()),
25+
JavaMethodProto::new_abstract("readLong", "()J", Default::default()),
26+
JavaMethodProto::new_abstract("readShort", "()S", Default::default()),
27+
JavaMethodProto::new_abstract("readUnsignedShort", "()I", Default::default()),
28+
JavaMethodProto::new_abstract("readUTF", "()Ljava/lang/String;", Default::default()),
29+
],
30+
fields: vec![],
31+
access_flags: ClassAccessFlags::INTERFACE,
32+
}
33+
}
34+
}

java_runtime/src/classes/java/io/data_input_stream.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ impl DataInputStream {
1616
RuntimeClassProto {
1717
name: "java/io/DataInputStream",
1818
parent_class: Some("java/io/FilterInputStream"),
19-
interfaces: vec![],
19+
interfaces: vec!["java/io/DataInput"],
2020
methods: vec![
2121
JavaMethodProto::new("<init>", "(Ljava/io/InputStream;)V", Self::init, Default::default()),
2222
JavaMethodProto::new("readBoolean", "()Z", Self::read_boolean, Default::default()),
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
use alloc::vec;
2+
3+
use java_class_proto::JavaMethodProto;
4+
use java_constants::ClassAccessFlags;
5+
6+
use crate::RuntimeClassProto;
7+
8+
// interface java.io.DataOutput
9+
pub struct DataOutput;
10+
11+
impl DataOutput {
12+
pub fn as_proto() -> RuntimeClassProto {
13+
RuntimeClassProto {
14+
name: "java/io/DataOutput",
15+
parent_class: None,
16+
interfaces: vec![],
17+
methods: vec![
18+
JavaMethodProto::new_abstract("write", "(I)V", Default::default()),
19+
JavaMethodProto::new_abstract("writeByte", "(I)V", Default::default()),
20+
JavaMethodProto::new_abstract("writeBoolean", "(Z)V", Default::default()),
21+
JavaMethodProto::new_abstract("writeInt", "(I)V", Default::default()),
22+
JavaMethodProto::new_abstract("writeShort", "(I)V", Default::default()),
23+
JavaMethodProto::new_abstract("writeLong", "(J)V", Default::default()),
24+
JavaMethodProto::new_abstract("writeChars", "(Ljava/lang/String;)V", Default::default()),
25+
JavaMethodProto::new_abstract("writeUTF", "(Ljava/lang/String;)V", Default::default()),
26+
JavaMethodProto::new_abstract("close", "()V", Default::default()),
27+
JavaMethodProto::new_abstract("flush", "()V", Default::default()),
28+
],
29+
fields: vec![],
30+
access_flags: ClassAccessFlags::INTERFACE,
31+
}
32+
}
33+
}

java_runtime/src/classes/java/io/data_output_stream.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ impl DataOutputStream {
1515
RuntimeClassProto {
1616
name: "java/io/DataOutputStream",
1717
parent_class: Some("java/io/FilterOutputStream"),
18-
interfaces: vec![],
18+
interfaces: vec!["java/io/DataOutput"],
1919
methods: vec![
2020
JavaMethodProto::new("<init>", "(Ljava/io/OutputStream;)V", Self::init, Default::default()),
2121
JavaMethodProto::new("write", "(I)V", Self::write, Default::default()),

java_runtime/src/classes/java/io/random_access_file.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ impl RandomAccessFile {
2121
RuntimeClassProto {
2222
name: "java/io/RandomAccessFile",
2323
parent_class: Some("java/lang/Object"),
24-
interfaces: vec![],
24+
interfaces: vec!["java/io/DataInput", "java/io/DataOutput"],
2525
methods: vec![
2626
JavaMethodProto::new("<init>", "(Ljava/lang/String;Ljava/lang/String;)V", Self::init, Default::default()),
2727
JavaMethodProto::new("<init>", "(Ljava/io/File;Ljava/lang/String;)V", Self::init_with_file, Default::default()),

java_runtime/src/loader.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ pub fn get_runtime_class_proto(name: &str) -> Option<RuntimeClassProto> {
99
crate::classes::java::io::BufferedReader::as_proto(),
1010
crate::classes::java::io::ByteArrayInputStream::as_proto(),
1111
crate::classes::java::io::ByteArrayOutputStream::as_proto(),
12+
crate::classes::java::io::DataInput::as_proto(),
1213
crate::classes::java::io::DataInputStream::as_proto(),
14+
crate::classes::java::io::DataOutput::as_proto(),
1315
crate::classes::java::io::DataOutputStream::as_proto(),
1416
crate::classes::java::io::EOFException::as_proto(),
1517
crate::classes::java::io::File::as_proto(),

0 commit comments

Comments
 (0)