MCPcopy Create free account
hub / github.com/argumentcomputer/ix / from_id_classes

Method from_id_classes

crates/kernel/src/canonical_check.rs:100–118  ·  view source on GitHub ↗

Build from grouped equivalence classes carrying `(KId, &KConst)` pairs. Mirrors `MutConst::ctx` (`src/ix/mutual.rs:177-192`): - All members of class `j` get index `j`. - Ctor offsets start at `classes.len()` and advance by `max_ctors` per class so ctor addresses across classes don't collide.

(
    classes: &[Vec<(KId<M>, &KConst<M>)>],
  )

Source from the content-addressed store, hash-verified

98 /// - Ctor offsets start at `classes.len()` and advance by `max_ctors`
99 /// per class so ctor addresses across classes don't collide.
100 pub fn from_id_classes<M: KernelMode>(
101 classes: &[Vec<(KId<M>, &KConst<M>)>],
102 ) -> Self {
103 let mut map: FxHashMap<Address, usize> = FxHashMap::default();
104 let mut i = classes.len();
105 for (j, class) in classes.iter().enumerate() {
106 let mut max_ctors = 0usize;
107 for (id, cnst) in class {
108 map.insert(id.addr.clone(), j);
109 let ctor_ids = cnst_ctors::<M>(cnst);
110 max_ctors = max_ctors.max(ctor_ids.len());
111 for (cidx, cid) in ctor_ids.iter().enumerate() {
112 map.insert(cid.addr.clone(), i + cidx);
113 }
114 }
115 i += max_ctors;
116 }
117 KMutCtx { map }
118 }
119}
120
121// ===========================================================================

Callers

nothing calls this directly

Calls 5

lenMethod · 0.45
iterMethod · 0.45
insertMethod · 0.45
cloneMethod · 0.45
maxMethod · 0.45

Tested by

no test coverage detected