WTM_Node LoadNode(BinaryReader Input, WTM_Inner parent)
{
// Console.WriteLine ("xxxxxxxxx LoadNode");
var isInner = Input.ReadBoolean ();
if (isInner) {
var arity = Input.ReadInt32 ();
var node = new WTM_Inner (arity, parent, false);
node.SEQ = GenericIO<Sequence>.Load(Input);
node.CHILDREN = new WTM_Node[arity];
for (int i = 0; i < arity; ++i) {
if (Input.ReadBoolean()) {
node.CHILDREN[i] = this.LoadNode(Input, node);
}
}
return node;
} else {
// var count = Input.ReadInt32 ();
var symbol = Input.ReadInt32 ();
// Console.WriteLine ("--leaf> count: {0}, symbol: {1}", count, symbol);
//var leaf = new WTM_Leaf (parent, symbol, count);
var leaf = new WTM_Leaf (parent, symbol);
this.Alphabet[symbol] = leaf;
return leaf;
}
}