示例#1
0
        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
            });
        }
示例#2
0
        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);
        }