define type in environment

main
Ziyang Hu 2 years ago
parent 5635aa4ff2
commit a01ffbc5af

@ -25,6 +25,20 @@ impl<'a> Session<'a> {
tuple.push_int(depth_code);
tuple
}
fn define_data(&mut self, name: &str, data: Tuple<Vec<u8>>, in_root: bool) -> Result<()> {
let key = self.encode_definable_key(name, in_root);
if in_root {
self.txn.put(true, &self.perm_cf, key, data)?;
} else {
let mut ikey = Tuple::with_null_prefix();
ikey.push_int(self.stack_depth as i64);
ikey.push_str(name);
self.txn.put(false, &self.temp_cf, key, data)?;
self.txn.put(false, &self.temp_cf, ikey, "")?;
}
Ok(())
}
}
@ -62,23 +76,15 @@ impl<'a> Environment<SlicePtr> for Session<'a> {
}
fn define_variable(&mut self, name: &str, val: &Value, in_root: bool) -> Result<()> {
let key = self.encode_definable_key(name, in_root);
let mut data = Tuple::with_data_prefix(DataKind::Value);
data.push_value(val);
if in_root {
self.txn.put(true, &self.perm_cf, key, data)?;
} else {
let mut ikey = Tuple::with_null_prefix();
ikey.push_int(self.stack_depth as i64);
ikey.push_str(name);
self.txn.put(false, &self.temp_cf, key, data)?;
self.txn.put(false, &self.temp_cf, ikey, "")?;
}
Ok(())
self.define_data(name, data, in_root)
}
fn define_type_alias(&mut self, name: &str, typ: &Typing, in_root: bool) -> Result<()> {
todo!()
let mut data = Tuple::with_data_prefix(DataKind::TypeAlias);
data.push_str(typ.to_string());
self.define_data(name, data, in_root)
}
fn define_table(&mut self, table: &Table, in_root: bool) -> Result<()> {

Loading…
Cancel
Save