remove unused AGCContext

This commit is contained in:
Jacob Lifshay 2024-10-07 20:27:39 -07:00
parent 30b9a5e48d
commit 44ca1a607a
Signed by: programmerjake
SSH key fingerprint: SHA256:B1iRVvUJkvd7upMIiMqn6OyxvD2SgJkAH3ZnUOj6z+c

View file

@ -198,7 +198,6 @@ impl<T: ?Sized + Sync + Send + 'static> LazyInterned<T> {
pub trait InternedCompare { pub trait InternedCompare {
type InternedCompareKey: Ord + Hash; type InternedCompareKey: Ord + Hash;
fn interned_compare_key_ref(this: &Self) -> Self::InternedCompareKey; fn interned_compare_key_ref(this: &Self) -> Self::InternedCompareKey;
fn interned_compare_key_weak(this: &std::sync::Weak<Self>) -> Self::InternedCompareKey;
} }
/// Warning: doesn't do what you want with `T = dyn Trait`, /// Warning: doesn't do what you want with `T = dyn Trait`,
@ -272,9 +271,6 @@ impl<T> InternedCompare for T {
fn interned_compare_key_ref(this: &Self) -> Self::InternedCompareKey { fn interned_compare_key_ref(this: &Self) -> Self::InternedCompareKey {
PtrEqWithMetadata(this) PtrEqWithMetadata(this)
} }
fn interned_compare_key_weak(this: &std::sync::Weak<Self>) -> Self::InternedCompareKey {
PtrEqWithMetadata(this.as_ptr())
}
} }
impl<T> InternedCompare for [T] { impl<T> InternedCompare for [T] {
@ -282,9 +278,6 @@ impl<T> InternedCompare for [T] {
fn interned_compare_key_ref(this: &Self) -> Self::InternedCompareKey { fn interned_compare_key_ref(this: &Self) -> Self::InternedCompareKey {
PtrEqWithMetadata(this) PtrEqWithMetadata(this)
} }
fn interned_compare_key_weak(this: &std::sync::Weak<Self>) -> Self::InternedCompareKey {
PtrEqWithMetadata(this.as_ptr())
}
} }
#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
@ -295,9 +288,6 @@ impl InternedCompare for BitSlice {
fn interned_compare_key_ref(this: &Self) -> Self::InternedCompareKey { fn interned_compare_key_ref(this: &Self) -> Self::InternedCompareKey {
BitSlicePtrEq(this.as_bitptr(), this.len()) BitSlicePtrEq(this.as_bitptr(), this.len())
} }
fn interned_compare_key_weak(_this: &std::sync::Weak<Self>) -> Self::InternedCompareKey {
unreachable!("not currently implementable since Weak<BitSlice> can't be constructed")
}
} }
impl InternedCompare for str { impl InternedCompare for str {
@ -305,9 +295,6 @@ impl InternedCompare for str {
fn interned_compare_key_ref(this: &Self) -> Self::InternedCompareKey { fn interned_compare_key_ref(this: &Self) -> Self::InternedCompareKey {
PtrEqWithMetadata(this) PtrEqWithMetadata(this)
} }
fn interned_compare_key_weak(this: &std::sync::Weak<Self>) -> Self::InternedCompareKey {
PtrEqWithMetadata(this.as_ptr())
}
} }
pub trait InternContext: 'static + Send + Sync + Hash + Ord + fmt::Debug + Clone { pub trait InternContext: 'static + Send + Sync + Hash + Ord + fmt::Debug + Clone {
@ -408,121 +395,6 @@ impl BitSliceInternContext for GlobalContext {
} }
} }
#[derive(Clone)]
pub struct AGCContext(std::sync::Arc<TypeIdMap>);
impl AGCContext {
pub fn new() -> Self {
Self(std::sync::Arc::new(TypeIdMap::new()))
}
}
impl Default for AGCContext {
fn default() -> Self {
Self::new()
}
}
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct AGCContextId(*const ());
impl fmt::Debug for AGCContextId {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
self.0.fmt(f)
}
}
impl AGCContext {
pub fn id(&self) -> AGCContextId {
AGCContextId(std::sync::Arc::as_ptr(&self.0).cast())
}
}
impl Hash for AGCContext {
fn hash<H: Hasher>(&self, state: &mut H) {
self.id().hash(state);
}
}
impl Ord for AGCContext {
fn cmp(&self, other: &Self) -> Ordering {
self.id().cmp(&other.id())
}
}
impl PartialOrd for AGCContext {
fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
Some(self.cmp(other))
}
}
impl Eq for AGCContext {}
impl PartialEq for AGCContext {
fn eq(&self, other: &Self) -> bool {
self.id().eq(&other.id())
}
}
impl fmt::Debug for AGCContext {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("AGCContext")
.field("id", &self.id())
.finish_non_exhaustive()
}
}
impl InternContext for AGCContext {
type InternedImpl<T: ?Sized + 'static + Send + Sync> = std::sync::Weak<T>;
type InternedGuardImpl<T: ?Sized + 'static + Send + Sync> = std::sync::Arc<T>;
type AllContextsAreIdentical = ConstBool<false>;
fn interned_compare_key<T: InternedCompare + ?Sized + 'static + Send + Sync>(
v: &Self::InternedImpl<T>,
) -> T::InternedCompareKey {
T::interned_compare_key_weak(v)
}
fn guard<T: ?Sized + 'static + Send + Sync>(
v: &Self::InternedImpl<T>,
) -> Self::InternedGuardImpl<T> {
v.upgrade().expect("expired")
}
fn try_guard<T: ?Sized + 'static + Send + Sync>(
v: &Self::InternedImpl<T>,
) -> Option<Self::InternedGuardImpl<T>> {
v.upgrade()
}
fn unguard<T: ?Sized + 'static + Send + Sync>(
v: &Self::InternedGuardImpl<T>,
) -> Self::InternedImpl<T> {
std::sync::Arc::downgrade(v)
}
fn alloc_str(&self, value: Cow<'_, str>) -> Self::InternedGuardImpl<str> {
match value {
Cow::Borrowed(value) => value.into(),
Cow::Owned(value) => value.into(),
}
}
fn alloc_slice<T: Clone + Send + Sync + 'static>(
&self,
value: Cow<'_, [T]>,
) -> Self::InternedGuardImpl<[T]> {
match value {
Cow::Borrowed(value) => value.into(),
Cow::Owned(value) => value.into(),
}
}
fn alloc_sized<T: Clone + Send + Sync + 'static>(
&self,
value: Cow<'_, T>,
) -> Self::InternedGuardImpl<T> {
std::sync::Arc::new(value.into_owned())
}
fn interner<T: ?Sized + Send + Sync + 'static>(&self) -> &Interner<T, Self> {
self.0.get_or_insert_default()
}
}
pub trait Intern<C: InternContext = GlobalContext>: Any + Send + Sync { pub trait Intern<C: InternContext = GlobalContext>: Any + Send + Sync {
fn intern_with_ctx(&self, context: &C) -> Interned<Self, C>; fn intern_with_ctx(&self, context: &C) -> Interned<Self, C>;
fn intern_sized_with_ctx(self, context: &C) -> Interned<Self, C> fn intern_sized_with_ctx(self, context: &C) -> Interned<Self, C>