cjaggerx/string/debug/
raw.rs1pub mod include {
2 pub use cjaggerx_sys::jstring::*;
3}
4
5pub struct RawString {
6 pub inner: *mut include::JaggerString,
7}
8
9impl RawString {
10
11 pub fn new(value: *const ::std::os::raw::c_char) -> Self {
12 let origin: *mut include::JaggerString = unsafe {include::JaggerString_create() };
13 unsafe {
14 include::JaggerString_push(origin, value);
15 }
16 Self {
17 inner: origin.clone(),
18 }
19 }
20
21 pub fn push(&mut self, value: *const ::std::os::raw::c_char) -> Result<(), Box<dyn std::error::Error>> {
22 Ok(unsafe {
23 include::JaggerString_push(self.inner, value);
24 })
25 }
26
27 pub fn remove(&mut self, value: *const ::std::os::raw::c_char) -> Result<(), Box<dyn std::error::Error>> {
28 Ok(unsafe {
29 include::JaggerString_remove(self.inner, value);
30 })
31 }
32
33 pub fn get_index(&self, index: usize) -> Result<*const ::std::os::raw::c_char, Box<dyn std::error::Error>> {
34 Ok(unsafe {
35 include::JaggerString_get_index(self.inner, index)
36 })
37 }
38
39 pub fn get_exact(&self, start: usize, end: usize) -> Result<*const ::std::os::raw::c_char, Box<dyn std::error::Error>> {
40 Ok(unsafe {
41 include::JaggerString_get_exact(self.inner, start, end)
42 })
43 }
44
45 pub fn get(&self) -> Result<*const ::std::os::raw::c_char, Box<dyn std::error::Error>> {
46 Ok(unsafe {
47 include::JaggerString_get(self.inner)
48 })
49 }
50
51 pub fn replace(&mut self, old: usize, new: usize) -> Result<(), Box<dyn std::error::Error>> {
52 Ok(unsafe {
53 include::JaggerString_replace(self.inner, old, new)
54 })
55 }
56
57 pub fn size_from(&self, index: usize) -> Result<usize, Box<dyn std::error::Error>> {
58 Ok(unsafe {
59 include::JaggerString_get_size(self.inner, index)
60 })
61 }
62
63 pub fn size(&self) -> Result<usize, Box<dyn std::error::Error>> {
64 Ok(unsafe {
65 include::JaggerString_get_size_full(self.inner)
66 })
67 }
68
69 pub fn len(&self) -> Result<usize, Box<dyn std::error::Error>> {
70 Ok(unsafe {
71 include::JaggerString_get_len(self.inner)
72 })
73 }
74
75 pub fn status(&self) -> Result<usize, Box<dyn std::error::Error>> {
76 Ok(unsafe {
77 include::JaggerString_get_status(self.inner)
78 })
79 }
80
81 pub fn destroy(&mut self) -> Result<(), Box<dyn std::error::Error>> {
82 Ok(unsafe {
83 include::JaggerString_destroy(self.inner);
84 })
85 }
86
87 pub fn instance(&self) -> Result<RawString, Box<dyn std::error::Error>> {
88 let inst: *mut include::JaggerString = unsafe {include::JaggerString_create()};
89 Ok(RawString {
90 inner: inst.clone(),
91 })
92 }
93
94}
95
96impl Default for RawString {
97 fn default() -> Self {
98 Self {
99 inner: ::std::ptr::null_mut() as *mut include::JaggerString,
100 }
101 }
102}
103
104impl Clone for RawString {
105 fn clone(&self) -> Self {
106 let origin: *mut include::JaggerString = self.inner.clone();
107 Self {
108 inner: origin,
109 }
110 }
111 fn clone_from(&mut self, source: &Self) {
112 let origin: *mut include::JaggerString = source.inner.clone();
113 self.inner = origin;
114 }
115}
116
117impl Copy for RawString {}
118unsafe impl Send for RawString {}
119unsafe impl Sync for RawString {}