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); }
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 }); }