public void Populate(TextBuffer textInput, ParseDictionary dictionary) { var count = 0; var index = 1; foreach (var token in textInput.Tokens) { var dictionaryAddress = 0; var searchTerm = token.Value; if (searchTerm.Length > 6) { searchTerm = searchTerm.Remove(6); } if (dictionary.Words.ContainsKey(searchTerm)) { dictionaryAddress = dictionary.Words[searchTerm].Address; } var(msb, lsb) = Bits.BreakWord(dictionaryAddress); memory.Bytes.Span[index] = msb; memory.Bytes.Span[index + 1] = lsb; memory.Bytes.Span[index + 2] = (byte)searchTerm.Length; memory.Bytes.Span[index + 3] = (byte)token.Key; count += 1; index += 4; if (index >= MaxLength) { break; } } memory.Bytes.Span[0] = (byte)count; }
public void BreakWordTests() { Assert.Equal((0xFF, 0x00), Bits.BreakWord(0xFF00)); Assert.Equal((0x00, 0xFF), Bits.BreakWord(0x00FF)); Assert.Equal((0x0F, 0xF0), Bits.BreakWord(0x0FF0)); Assert.Equal((0x12, 0x34), Bits.BreakWord(0x1234)); }