|
1 | 1 | use alloc::{boxed::Box, vec::Vec}; |
2 | 2 |
|
3 | | -use crate::{Result, class_definition::ClassDefinition, class_instance::ClassInstance, field::Field, value::JavaValue}; |
| 3 | +use crate::{Result, class_instance::ClassInstance, value::JavaValue}; |
4 | 4 |
|
5 | | -#[async_trait::async_trait] |
6 | 5 | pub trait ArrayClassInstance: ClassInstance { |
7 | | - fn class_definition(&self) -> Box<dyn ClassDefinition>; |
8 | | - fn destroy(self: Box<Self>); |
9 | | - fn identity(&self) -> usize; |
10 | | - fn shallow_clone(&self) -> Result<Box<dyn ClassInstance>>; |
11 | | - fn equals(&self, other: &dyn ClassInstance) -> Result<bool>; |
12 | 6 | fn store(&mut self, offset: usize, values: Box<[JavaValue]>) -> Result<()>; |
13 | 7 | fn load(&self, offset: usize, count: usize) -> Result<Vec<JavaValue>>; |
14 | 8 | fn raw_buffer(&self) -> Result<Box<dyn ArrayRawBuffer>>; |
15 | 9 | fn raw_buffer_mut(&mut self) -> Result<Box<dyn ArrayRawBufferMut>>; |
16 | 10 | fn length(&self) -> usize; |
17 | 11 | } |
18 | 12 |
|
19 | | -#[async_trait::async_trait] |
20 | | -impl<T: ArrayClassInstance> ClassInstance for T { |
21 | | - fn destroy(self: Box<Self>) { |
22 | | - ArrayClassInstance::destroy(self) |
23 | | - } |
24 | | - |
25 | | - fn identity(&self) -> usize { |
26 | | - ArrayClassInstance::identity(self) |
27 | | - } |
28 | | - |
29 | | - fn shallow_clone(&self) -> Result<Box<dyn ClassInstance>> { |
30 | | - ArrayClassInstance::shallow_clone(self) |
31 | | - } |
32 | | - |
33 | | - fn class_definition(&self) -> Box<dyn ClassDefinition> { |
34 | | - ArrayClassInstance::class_definition(self) |
35 | | - } |
36 | | - |
37 | | - fn equals(&self, other: &dyn ClassInstance) -> Result<bool> { |
38 | | - ArrayClassInstance::equals(self, other) |
39 | | - } |
40 | | - fn as_array_instance(&self) -> Option<&dyn ArrayClassInstance> { |
41 | | - Some(self) |
42 | | - } |
43 | | - |
44 | | - fn as_array_instance_mut(&mut self) -> Option<&mut dyn ArrayClassInstance> { |
45 | | - Some(self) |
46 | | - } |
47 | | - |
48 | | - fn get_field(&self, _field: &dyn Field) -> Result<JavaValue> { |
49 | | - panic!("Array classes do not have fields") |
50 | | - } |
51 | | - |
52 | | - fn put_field(&mut self, _field: &dyn Field, _value: JavaValue) -> Result<()> { |
53 | | - panic!("Array classes do not have fields") |
54 | | - } |
55 | | -} |
56 | | - |
57 | 13 | pub trait ArrayRawBuffer: Send { |
58 | 14 | fn read(&self, offset: usize, buffer: &mut [u8]) -> Result<()>; |
59 | 15 | } |
|
0 commit comments