Exemple #1
0
        private static Offset <Sentence> BuildSingleFlatSent(FlatBufferBuilder builder, SentenceMap sentence, int order)
        {
            // Чтение слов
            var words = new Offset <Lexema> [sentence.Capasity];

            for (int i = 0; i < sentence.Capasity; i++)
            {
                var word      = sentence.GetWordByOrder(i);
                var EntryName = builder.CreateString(word.EntryName);
                var RealWord  = builder.CreateString(word.RealWord);

                // Чтение граммем
                var pairs    = word.GetPairs();
                var grammems = new Offset <Grammema> [pairs.Count];
                int j        = 0;
                foreach (var pair in pairs)
                {
                    grammems[j] = Grammema.CreateGrammema(builder, pair.Key, pair.Value);
                    j++;
                }
                var gramsCol = Lexema.CreateGrammemsVector(builder, grammems);
                words[i] = Lexema.CreateLexema(builder, i, EntryName, word.ID_Entry, word.ID_PartOfSpeech, gramsCol,
                                               0, RealWord, word.rcind);
            }
            var wordsCol = Sentence.CreateWordsVector(builder, words);

            // Чтение узлов
            var treelist = sentence.GetTreeList();
            var nodes    = new Offset <Node> [treelist.Count];

            for (int i = 0; i < treelist.Count; i++)
            {
                nodes[i] = Node.CreateNode(builder, treelist[i].ID, treelist[i].Level,
                                           treelist[i].index, treelist[i].linktype, treelist[i].parentind);
            }
            var nodesCol = Sentence.CreateNodesVector(builder, nodes);

            var sentVal = builder.CreateString("");

            return(Sentence.CreateSentence(builder, order, nodesCol, wordsCol, sentVal));
        }