MCPcopy Create free account
hub / github.com/LibertyOS-Development/kernel / dec

Function dec

src/data/ucs2/mod.rs:29–79  ·  view source on GitHub ↗

Decode UCS-2 into UTF-8

(input: &[u16], output: &mut [u8])

Source from the content-addressed store, hash-verified

27
28// Decode UCS-2 into UTF-8
29pub fn dec(input: &[u16], output: &mut [u8]) -> Result<usize>
30{
31 let bsize = output.len();
32 let mut i = 0;
33
34 dec_w(input, |bytes|
35 {
36 if bytes.len() == 1
37 {
38 if i >= bsize
39 {
40 return Err(Err::BOverflow);
41 }
42
43 output[i] = bytes[0];
44
45 i += 1;
46 }
47 else if bytes.len() == 2
48 {
49 if i + 1 >= bsize
50 {
51 return Err(Err::BOverflow);
52 }
53
54 output[i] = bytes[0];
55 output[i + 1] = bytes[1];
56
57 i += 2;
58 }
59 else if bytes.len() == 3
60 {
61 if i + 2 >= bsize
62 {
63 return Err(Err::BOverflow);
64 }
65
66 output[i] = bytes[0];
67 output[i + 1] = bytes[1];
68 output[i + 2] = bytes[2];
69
70 i += 3;
71 }
72 else
73 {
74 unreachable!("[ERR] > 3 BYTES SPECIFIED FOR UCS-2 CHARACTER");
75 }
76
77 Ok(())
78 })
79}
80
81
82// Use a custom callback to encode UCS-2 into UTF-8

Callers

nothing calls this directly

Calls 3

dec_wFunction · 0.85
ErrEnum · 0.70
lenMethod · 0.45

Tested by

no test coverage detected