public Entry GetEntry(WordStrByBookName word) { Dict dict = connection.Table <Dict>().Where(p => p.BookName == word.BookName).FirstOrDefault(); byte[] wordStrByteArray = DataConversion.GetBytes(word.WordStr + '\0'); int offsetwordStr; if (dict.idxOffsetBits == Dict.idxOffsetBitsEnum.Uint64) { offsetwordStr = arrayOfAllQueriedIdxByteArray[dict.DictID].LocateWordStr64(wordStrByteArray); } else { offsetwordStr = arrayOfAllQueriedIdxByteArray[dict.DictID].LocateWordStr32(wordStrByteArray); } // fix this quickhack later int wordStrLength = wordStrByteArray.Length - 1; int offsetOffset = offsetwordStr + wordStrLength + 1; int offsetLength = 4; string wordDataOffset; uint wordDataSize; if (dict.idxOffsetBits == Dict.idxOffsetBitsEnum.Uint64) { offsetLength = 8; int lengthOffset = offsetOffset + offsetLength; int lengthLength = 4; wordDataOffset = DataConversion.GetUInt64(arrayOfAllQueriedIdxByteArray[dict.DictID] .SubsByteArray(offsetOffset, offsetLength)).ToString(); wordDataSize = DataConversion.GetUInt32(arrayOfAllQueriedIdxByteArray[dict.DictID] .SubsByteArray(lengthOffset, lengthLength)); } else { int lengthOffset = offsetOffset + offsetLength; int lengthLength = 4; wordDataOffset = DataConversion.GetUInt32(arrayOfAllQueriedIdxByteArray[dict.DictID] .SubsByteArray(offsetOffset, offsetLength)).ToString(); wordDataSize = DataConversion.GetUInt32(arrayOfAllQueriedIdxByteArray[dict.DictID] .SubsByteArray(lengthOffset, lengthLength)); } return(new Entry() { DictId = dict.DictID, WordStr = word.WordStr, wordDataOffset = wordDataOffset, wordDataSize = wordDataSize }); }
static public WordStrByBookName[] GetWordStrsByBookName(this WordStrsIndex self, string bookName) { WordStrByBookName[] arrayOfWordStrsByBookName = new WordStrByBookName[self.WordStrs.Count()]; for (int i = 0; i < self.WordStrs.Count(); i++) { arrayOfWordStrsByBookName[i] = new WordStrByBookName() { WordStr = self.WordStrs[i], BookName = bookName }; } return(arrayOfWordStrsByBookName); }