Skip to content

Commit

Permalink
Simplify
Browse files Browse the repository at this point in the history
  • Loading branch information
ryuichiueda committed Jan 11, 2025
1 parent d14c4d6 commit f36df20
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 47 deletions.
8 changes: 5 additions & 3 deletions src/core/database.rs
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ impl DataBase {
match self.params[layer].get_mut(name) {
Some(d) => d.set_as_array(&pos.to_string(), val),
None => {
setter::array(self, name, vec![], layer)?;
ArrayData::set(&mut self.params[layer], name, vec![])?;
self.set_layer_array_elem(name, val, layer, pos)
},
}
Expand All @@ -237,13 +237,15 @@ impl DataBase {
}

pub fn set_array(&mut self, name: &str, v: Vec<String>, layer: Option<usize>) -> Result<(), String> {
self.write_check(name)?;
let layer = self.get_target_layer(name, layer);
setter::array(self, name, v, layer)
ArrayData::set(&mut self.params[layer], name, v)
}

pub fn set_assoc(&mut self, name: &str, layer: Option<usize>) -> Result<(), String> {
self.write_check(name)?;
let layer = self.get_target_layer(name, layer);
setter::assoc(self, name, layer)
AssocData::set(&mut self.params[layer], name)
}

pub fn push_local(&mut self) {
Expand Down
17 changes: 9 additions & 8 deletions src/core/database/data/array.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,15 @@ pub struct ArrayData {
impl From<Vec<String>> for ArrayData {
fn from(v: Vec<String>) -> Self {
let mut ans = Self { body: HashMap::new() };

for i in 0..v.len() {
ans.body.insert(i, v[i].clone());
}

v.into_iter()
.enumerate()
.for_each(|(i, e)| {ans.body.insert(i, e);});
ans
}
}

impl Data for ArrayData {
fn boxed_clone(&self) -> Box<dyn Data> {
Box::new(self.clone())
}
fn boxed_clone(&self) -> Box<dyn Data> { Box::new(self.clone()) }

fn print_body(&self) -> String {
let mut formatted = String::new();
Expand Down Expand Up @@ -69,6 +65,11 @@ impl Data for ArrayData {
}

impl ArrayData {
pub fn set(db_layer: &mut HashMap<String, Box<dyn Data>>, name: &str, v: Vec<String>) -> Result<(), String> {
db_layer.insert(name.to_string(), Box::new(ArrayData::from(v)));
Ok(())
}

pub fn values(&self) -> Vec<String> {
let mut keys: Vec<usize> = self.body.iter().map(|e| e.0.clone()).collect();
keys.sort();
Expand Down
26 changes: 5 additions & 21 deletions src/core/database/data/assoc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,11 @@ impl Data for AssocData {
}

impl AssocData {
pub fn set(db_layer: &mut HashMap<String, Box<dyn Data>>, name: &str) -> Result<(), String> {
db_layer.insert(name.to_string(), Box::new(AssocData::default()));
Ok(())
}

pub fn get(&self, key: &str) -> Option<String> {
self.body.get(key).cloned()
}
Expand All @@ -70,25 +75,4 @@ impl AssocData {
pub fn values(&self) -> Vec<String> {
self.body.iter().map(|e| e.1.clone()).collect()
}

/*
pub fn set(&mut self, key: &String, val: &String) -> bool {
self.body.insert(key.to_string(), val.to_string());
true
}
pub fn print(&self, k: &str) {
let mut formatted = String::new();
formatted += "(";
for k in self.keys() {
let v = self.get(&k).unwrap_or("".to_string());
formatted += &format!("[{}]=\"{}\" ", k, v);
}
if formatted.ends_with(" ") {
formatted.pop();
}
formatted += ")";
println!("{}={}", k.to_string(), formatted);
}
*/
}
14 changes: 0 additions & 14 deletions src/core/database/setter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
//SPDXLicense-Identifier: BSD-3-Clause

use crate::core::DataBase;
use crate::core::database::{ArrayData, AssocData};
use crate::utils::{random, clock};
use std::{env, process};
use super::getter;
Expand Down Expand Up @@ -35,16 +34,3 @@ pub fn flag(db: &mut DataBase, name: &str, flag: char) {
None => {rf.insert(name.to_string(), flag.to_string()); },
}
}

pub fn array(db: &mut DataBase, name: &str, v: Vec<String>, layer: usize) -> Result<(), String> {
db.write_check(name)?;
db.params[layer].insert(name.to_string(), Box::new(ArrayData::from(v)));
Ok(())
}


pub fn assoc(db: &mut DataBase, name: &str, layer: usize) -> Result<(), String> {
db.write_check(name)?;
db.params[layer].insert(name.to_string(), Box::new(AssocData::default()));
Ok(())
}
2 changes: 1 addition & 1 deletion test/ok
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@
./test_builtins.bash
./test_others.bash
./test_calculation.bash
./test_compound.bash
./test_parameters.bash
./test_compound.bash
./test_job.bash

0 comments on commit f36df20

Please sign in to comment.