module antlr.v4.runtime.atn.AltAndContextMap; import antlr.v4.runtime.atn.ATNConfig; import antlr.v4.runtime.misc.BitSet; import antlr.v4.runtime.atn.ContextMapObjectEqualityComparator; /** * A structure that ATN configurations maps to bit vectors */ struct AltAndContextMap { public BitSet[ATNConfig] altAndContextMap; public bool hasKey(ATNConfig aTNConfig) { aTNConfig.hashOfFp = &ContextMapObjectEqualityComparator.toHash; aTNConfig.opEqualsFp = &ContextMapObjectEqualityComparator.opEquals; if (aTNConfig in altAndContextMap) return true; return false; } public BitSet get(ATNConfig c) { return altAndContextMap[c]; } public void put(ATNConfig c, BitSet bitSet) { c.hashOfFp = &ContextMapObjectEqualityComparator.toHash; c.opEqualsFp = &ContextMapObjectEqualityComparator.opEquals; altAndContextMap[c] = bitSet; } public BitSet[] values() { BitSet[] res; foreach(el; altAndContextMap.values) { if(el.cardinality > 0) res ~= el; } return res; } }