public InterleaveMap() { _highMap = new HighMap[256]; _allMiddle = new MiddleMap[256 * 16]; for (int i = 0; i < _highMap.Length; i++) { var m = _highMap[i] = new HighMap(); Array.Copy(m.Map, 0, _allMiddle, i * 16, 16); } }
public bool Equals(HighMap other) { for (int i = 0; i < Map.Length; i++) { if (other.Map[i] != Map[i]) { return(false); } } return(true); }
private MiddleMap SetSlot(char wch, int diff) { if (diff > _maxOffset) { _maxOffset = diff; } if (diff < _minOffset) { _minOffset = diff; } HighMap high = _highMap[wch >> 8]; MiddleMap mid = high.Map[(wch >> 4) & 0xf]; mid.Map[wch & 0xf] = diff; return(mid); }