1use std::os::raw::c_char;
2
3use zsh_sys as zsys;
4
5use crate::to_cstr;
6
7pub struct HashTable {
9 raw: zsys::HashTable,
10}
11
12impl HashTable {
13 pub(crate) unsafe fn from_raw(raw: zsys::HashTable) -> Self {
14 Self { raw }
15 }
16 pub(crate) fn get(&self, name: &str) -> zsys::HashNode {
17 let name = to_cstr(name);
18 unsafe { self.raw_get(name.as_ptr()) }
19 }
20 pub(crate) fn remove(&self, name: &str) -> zsys::HashNode {
21 let name = to_cstr(name);
22 unsafe { self.raw_remove(name.as_ptr()) }
23 }
24 pub(crate) unsafe fn raw_get(&self, name: *const c_char) -> zsys::HashNode {
25 zsys::gethashnode(self.raw, name)
26 }
27 pub(crate) unsafe fn raw_remove(&self, name: *const c_char) -> zsys::HashNode {
28 zsys::removehashnode(self.raw, name)
29 }
30}