mirror of
https://github.com/widberg/bff
synced 2026-08-23 14:26:03 -04:00
Default name
This commit is contained in:
parent
2c6697250c
commit
efebea055f
2 changed files with 20 additions and 6 deletions
|
|
@ -52,17 +52,24 @@ pub(super) fn current_name_type() -> Option<NameType> {
|
|||
with_name_context(|name_context| name_context.map(NameContext::name_type))
|
||||
}
|
||||
|
||||
pub(super) fn current_default_name() -> Option<Name> {
|
||||
with_name_context(|name_context| name_context.map(NameContext::default_name))
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub(super) struct Names {
|
||||
name_type: NameType,
|
||||
names: HashMap<Name, String>,
|
||||
default_name: Name,
|
||||
}
|
||||
|
||||
impl Names {
|
||||
pub(super) fn new(name_type: NameType) -> Self {
|
||||
let default_name = hash_string_for_type(name_type, "");
|
||||
let mut names = Self {
|
||||
name_type,
|
||||
names: Default::default(),
|
||||
default_name,
|
||||
};
|
||||
|
||||
for class_name in class_base_names() {
|
||||
|
|
@ -70,7 +77,7 @@ impl Names {
|
|||
names.insert(canonical.as_str());
|
||||
}
|
||||
|
||||
names.insert("");
|
||||
names.names.insert(default_name, String::new());
|
||||
|
||||
names
|
||||
}
|
||||
|
|
@ -81,6 +88,7 @@ impl Names {
|
|||
}
|
||||
|
||||
self.name_type = name_type;
|
||||
self.default_name = hash_string_for_type(self.name_type, "");
|
||||
let old_names = std::mem::take(&mut self.names);
|
||||
for string in old_names.into_values() {
|
||||
self.names
|
||||
|
|
@ -94,6 +102,10 @@ impl Names {
|
|||
self.name_type
|
||||
}
|
||||
|
||||
pub(super) fn default_name(&self) -> Name {
|
||||
self.default_name
|
||||
}
|
||||
|
||||
fn name_from_i32(&self, value: i32) -> Name {
|
||||
self.name_type.name_from_i32(value)
|
||||
}
|
||||
|
|
@ -246,6 +258,10 @@ impl NameContext {
|
|||
self.names.lock().unwrap().name_type()
|
||||
}
|
||||
|
||||
pub fn default_name(&self) -> Name {
|
||||
self.names.lock().unwrap().default_name()
|
||||
}
|
||||
|
||||
pub fn name_from_i32(&self, value: i32) -> Name {
|
||||
self.names.lock().unwrap().name_from_i32(value)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ use num_traits::AsPrimitive;
|
|||
|
||||
use crate::traits::NameHashFunction;
|
||||
|
||||
use super::context::{current_name_type, with_name_context};
|
||||
use super::context::{current_default_name, current_name_type, with_name_context};
|
||||
use super::{NameContext, NameType};
|
||||
|
||||
const FORCED_NAME_STRING_CHAR: char = '$';
|
||||
|
|
@ -98,7 +98,7 @@ impl Name {
|
|||
}
|
||||
|
||||
pub fn is_default(&self) -> bool {
|
||||
current_name_type().is_some_and(|name_type| *self == hash_string_for_type(name_type, ""))
|
||||
current_name_type().is_some() && *self == Default::default()
|
||||
}
|
||||
|
||||
pub fn get_wordlist_encoded_string<const N: usize>(&self, wordlist: [&str; N]) -> String
|
||||
|
|
@ -281,9 +281,7 @@ impl BinWrite for Name {
|
|||
|
||||
impl Default for Name {
|
||||
fn default() -> Self {
|
||||
current_name_type()
|
||||
.map(|name_type| hash_string_for_type(name_type, ""))
|
||||
.unwrap_or(Self(0))
|
||||
current_default_name().unwrap_or(Self(0))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue