Beispiel #1
0
        private CompiledNode CompileNode(UnCompiledNode <T> nodeIn, int tailLength)
        {
            long node;

            if (dedupHash != null && (doShareNonSingletonNodes || nodeIn.NumArcs <= 1) && tailLength <= shareMaxTailLength)
            {
                if (nodeIn.NumArcs == 0)
                {
                    node = fst.AddNode(nodeIn);
                }
                else
                {
                    node = dedupHash.Add(nodeIn);
                }
            }
            else
            {
                node = fst.AddNode(nodeIn);
            }
            Debug.Assert(node != -2);

            nodeIn.Clear();

            CompiledNode fn = new CompiledNode();

            fn.Node = node;
            return(fn);
        }
Beispiel #2
0
        private CompiledNode CompileNode(UnCompiledNode <T> nodeIn, int tailLength)
        {
            long node;

            if (dedupHash != null && (doShareNonSingletonNodes || nodeIn.NumArcs <= 1) && tailLength <= shareMaxTailLength)
            {
                if (nodeIn.NumArcs == 0)
                {
                    node = fst.AddNode(nodeIn);
                }
                else
                {
                    node = dedupHash.Add(nodeIn);
                }
            }
            else
            {
                node = fst.AddNode(nodeIn);
            }
            if (Debugging.AssertsEnabled)
            {
                Debugging.Assert(node != -2);
            }

            nodeIn.Clear();

            return(new CompiledNode {
                Node = node
            });
        }