emote_psb\types/
reference.rs1use std::io::{Read, Write};
8
9use crate::PsbError;
10
11use super::number::PsbNumber;
12
13#[cfg(feature = "serde")]
14use serde::{Serialize, Deserialize};
15
16#[derive(Debug, Clone, PartialEq, Eq, Hash)]
17#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
18pub struct PsbResourceRef {
19
20 pub resource_ref: u64
21
22}
23
24impl PsbResourceRef {
25
26 pub fn get_n(&self) -> u8 {
27 PsbNumber::get_uint_n(self.resource_ref)
28 }
29
30 pub fn from_bytes(n: u8, stream: &mut impl Read) -> Result<(u64, Self), PsbError> {
31 let (ref_read, refernece) = PsbNumber::read_uint(n, stream)?;
32
33 Ok((ref_read, Self { resource_ref: refernece as u64 }))
34 }
35
36 pub fn write_bytes(&self, stream: &mut impl Write) -> Result<u64, PsbError> {
37 Ok(PsbNumber::write_uint(self.get_n(), self.resource_ref, stream)? as u64)
38 }
39
40}
41
42#[derive(Debug, Clone, PartialEq, Eq, Hash)]
43#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
44pub struct PsbExtraRef {
45
46 pub extra_resource_ref: u64
47
48}
49
50impl PsbExtraRef {
51
52 pub fn get_n(&self) -> u8 {
53 PsbNumber::get_uint_n(self.extra_resource_ref)
54 }
55
56 pub fn from_bytes(n: u8, stream: &mut impl Read) -> Result<(u64, Self), PsbError> {
57 let (ref_read, refernece) = PsbNumber::read_uint(n, stream)?;
58
59 Ok((ref_read, Self { extra_resource_ref : refernece as u64 }))
60 }
61
62 pub fn write_bytes(&self, stream: &mut impl Write) -> Result<u64, PsbError> {
63 Ok(PsbNumber::write_uint(self.get_n(), self.extra_resource_ref, stream)? as u64)
64 }
65
66}
67
68#[derive(Debug, Clone, PartialEq, Eq, Hash)]
69pub struct PsbStringRef {
70
71 pub string_ref: u64
72
73}
74
75impl PsbStringRef {
76
77 pub fn get_n(&self) -> u8 {
78 PsbNumber::get_uint_n(self.string_ref)
79 }
80
81 pub fn from_bytes(n: u8, stream: &mut impl Read) -> Result<(u64, Self), PsbError> {
82 let (ref_read, refernece) = PsbNumber::read_uint(n, stream)?;
83
84 Ok((ref_read, Self { string_ref : refernece as u64 }))
85 }
86
87 pub fn write_bytes(&self, stream: &mut impl Write) -> Result<u64, PsbError> {
88 Ok(PsbNumber::write_uint(self.get_n(), self.string_ref, stream)? as u64)
89 }
90
91}