import { TreeIndex } from './TreeIndex';
/**
* A node in a Gedcom file.
*/
export interface TreeNode {
/**
* The Gedcom tag of this node. Usually in uppercase, possibly starting with an underscore.
* The root is the only node for which the tag is null.
*/
tag: string | null;
/**
* An optional pointer, used to reference this node elsewhere. Starts and ends with the @ symbol and contains an uppercase identifier.
*/
pointer: string | null;
/**
* An optional string value. Can be any string.
*/
value: string | null;
/**
* Absolute node index in source file, namely the line number minus one.
* The CONT and CONC pseudo-tags are included in the count, hence possibly introducing gaps in the indices.
*/
indexSource: number;
/**
* Node index in the output tree, relative to the parent.
*/
indexRelative: number;
/**
* This node's children nodes.
*/
children: TreeNode[];
/**
* The index for this node, if computed.
* It can be safely serialized as it does not contain any reference, but rather indices (represented as integers).
*/
_index?: TreeIndex;
}