file_utils/
write.rs

1
2use std::io;
3
4use conversions::u::*;
5use conversions::i::*;
6use conversions::f::*;
7
8pub trait Write
9{
10	// Conditional
11	fn write_usize(&mut self, val: usize)-> io::Result<()>;
12	fn write_isize(&mut self, val: isize)-> io::Result<()>;
13
14	// 8-bit
15	fn write_u8(&mut self, val: u8)-> io::Result<()>;
16	fn write_i8(&mut self, val: i8)-> io::Result<()>;
17
18	// 16-bit
19	fn write_u16(&mut self, val: u16)-> io::Result<()>;
20	fn write_i16(&mut self, val: i16)-> io::Result<()>;
21
22	// 32-bit
23	fn write_u32(&mut self, val: u32)-> io::Result<()>;
24	fn write_i32(&mut self, val: i32)-> io::Result<()>;
25	fn write_f32(&mut self, val: f32)-> io::Result<()>;
26
27	// 64-bit
28	fn write_u64(&mut self, val: u64)-> io::Result<()>;
29	fn write_i64(&mut self, val: i64)-> io::Result<()>;
30	fn write_f64(&mut self, val: f64)-> io::Result<()>;
31}
32
33impl<T> Write for T 
34	where T: io::Write
35{
36	/*
37		Based on architecture
38	*/
39	#[cfg(target_pointer_width = "64")]
40	fn write_usize(&mut self, val: usize)-> io::Result<()>
41	{
42		self.write_u64(val as u64)
43	}
44
45	#[cfg(target_pointer_width = "32")]
46	fn write_usize(&mut self, val: usize)-> io::Result<()>
47	{
48		self.write_u32(val as u32)
49	}
50
51	#[cfg(target_pointer_width = "64")]
52	fn write_isize(&mut self, val: isize)-> io::Result<()>
53	{
54		self.write_i64(val as i64)
55	}
56
57	#[cfg(target_pointer_width = "32")]
58	fn write_isize(&mut self, val: isize)-> io::Result<()>
59	{
60		self.write_i32(val as i32)
61	}
62
63	/*
64		8-bit
65	*/
66	fn write_u8(&mut self, val: u8)-> io::Result<()>
67	{
68		self.write_all(&[val])
69	}
70
71	fn write_i8(&mut self, val: i8)-> io::Result<()>
72	{
73		self.write_all(&[val as u8])
74	}
75
76	/*
77		16-bit
78	*/
79	fn write_u16(&mut self, val: u16)-> io::Result<()>
80	{
81		self.write_all(&u16_to_bytes(val))
82	}
83
84	fn write_i16(&mut self, val: i16)-> io::Result<()>
85	{
86		self.write_all(&i16_to_bytes(val))
87	}
88
89	/*
90		32-bit
91	*/
92	fn write_u32(&mut self, val: u32)-> io::Result<()>
93	{
94		self.write_all(&u32_to_bytes(val))
95	}
96
97	fn write_i32(&mut self, val: i32)-> io::Result<()>
98	{
99		self.write_all(&i32_to_bytes(val))
100	}
101	
102	fn write_f32(&mut self, val: f32)-> io::Result<()>
103	{
104		self.write_all(&f32_to_bytes(val))
105	}
106
107	/*
108		64-bit
109	*/
110	fn write_u64(&mut self, val: u64)-> io::Result<()>
111	{
112		self.write_all(&u64_to_bytes(val))
113	}
114
115	fn write_i64(&mut self, val: i64)-> io::Result<()>
116	{
117		self.write_all(&i64_to_bytes(val))
118	}
119	
120	fn write_f64(&mut self, val: f64)-> io::Result<()>
121	{
122		self.write_all(&f64_to_bytes(val))
123	}
124}