## CongTraversalNode

CongTraversalNode —

## Synopsis

    #define     DEBUG_TRAVERSAL_NODE_LIFETIMES
    struct      CongTraversalNode;
    #define     CONG_TRAVERSAL_NODE             (obj)
    #define     CONG_TRAVERSAL_NODE_CLASS       (klass)
    #define     IS_CONG_TRAVERSAL_NODE          (obj)
    GType       cong_traversal_node_get_type    (void);
    CongTraversalNode* cong_traversal_node_construct
                                                (CongTraversalNode *area,
                                                 CongDocumentTraversal *doc_traversal,
                                                 CongNodePtr xml_node,
                                                 CongTraversalNode *traversal_parent);
    CongTraversalNode* cong_traversal_node_new  (CongDocumentTraversal *doc_traversal,
                                                 CongNodePtr xml_node,
                                                 CongTraversalNode *traversal_parent);
    CongDocumentTraversal* cong_traversal_node_get_document_traversal
                                                (CongTraversalNode *traversal_node);
    CongDocument* cong_traversal_node_get_document
                                                (CongTraversalNode *traversal_node);
    CongNodePtr cong_traversal_node_get_node    (CongTraversalNode *traversal_node);
    CongTraversalNode* cong_traversal_node_get_parent
                                                (CongTraversalNode *traversal_node);
    void        (*CongTraversalNodeCallback)    (CongTraversalNode *traversal_node,
                                                 gpointer user_data);
    void        cong_traversal_node_for_each_child
                                                (CongTraversalNode *traversal_node,
                                                 CongTraversalNodeCallback callback,
                                                 gpointer user_data);
    CongTraversalNode* cong_traversal_node_get_first_child
                                                (CongTraversalNode *traversal_node);
    CongTraversalNode* cong_traversal_node_get_prev
                                                (CongTraversalNode *traversal_node);
    CongTraversalNode* cong_traversal_node_get_next
                                                (CongTraversalNode *traversal_node);
    gboolean    cong_traversal_node_is_referenced_entity_decl
                                                (CongTraversalNode *traversal_node);

## Object Hierarchy

      GObject
       +----CongTraversalNode

## Description

## Details

### DEBUG_TRAVERSAL_NODE_LIFETIMES

    #define DEBUG_TRAVERSAL_NODE_LIFETIMES 0

### struct CongTraversalNode

    struct CongTraversalNode;

A GObject subclass, managed by CongDocument. There is a single CongTraversalNode for each time an xml node is reached in a depth first traversal of the document tree, with the proviso that only the "correct" child of an entity ref node is reached (the correct entity declaration, rather than that decl, plus all following siblings, as is reached in a naive implementation).

Since they are GObjects, you can listen to signals, etc.

The CongDocument manages these, and destroys them when they are no longer needed. If an xml node changes position, its old traversal nodes are destroyed, and new ones are created, rather than trying to move the traversal node somehow.

### CONG_TRAVERSAL_NODE()

    #define CONG_TRAVERSAL_NODE(obj)         G_TYPE_CHECK_INSTANCE_CAST (obj, CONG_TRAVERSAL_NODE_TYPE, CongTraversalNode)

`obj` : |

### CONG_TRAVERSAL_NODE_CLASS()

    #define CONG_TRAVERSAL_NODE_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, CONG_TRAVERSAL_NODE_TYPE, CongTraversalNodeClass)

`klass` : |

### IS_CONG_TRAVERSAL_NODE()

    #define IS_CONG_TRAVERSAL_NODE(obj)      G_TYPE_CHECK_INSTANCE_TYPE (obj, CONG_TRAVERSAL_NODE_TYPE)

`obj` : |

### cong_traversal_node_get_type ()

    GType       cong_traversal_node_get_type    (void);

Returns : |

### cong_traversal_node_construct ()

    CongTraversalNode* cong_traversal_node_construct
                                                (CongTraversalNode *area,
                                                 CongDocumentTraversal *doc_traversal,
                                                 CongNodePtr xml_node,
                                                 CongTraversalNode *traversal_parent);

TODO: Write me

`area` : |
`doc_traversal` : |
`xml_node` : |
`traversal_parent` : |
Returns : |

### cong_traversal_node_new ()

    CongTraversalNode* cong_traversal_node_new  (CongDocumentTraversal *doc_traversal,
                                                 CongNodePtr xml_node,
                                                 CongTraversalNode *traversal_parent);

TODO: Write me

`doc_traversal` : |
`xml_node` : |
`traversal_parent` : |
Returns : |

### cong_traversal_node_get_document_traversal ()

    CongDocumentTraversal* cong_traversal_node_get_document_traversal
                                                (CongTraversalNode *traversal_node);

TODO: Write me

`traversal_node` : |
Returns : |

### cong_traversal_node_get_document ()

    CongDocument* cong_traversal_node_get_document
                                                (CongTraversalNode *traversal_node);

TODO: Write me

`traversal_node` : |
Returns : |

### cong_traversal_node_get_node ()

    CongNodePtr cong_traversal_node_get_node    (CongTraversalNode *traversal_node);

TODO: Write me

`traversal_node` : |
Returns : |

### cong_traversal_node_get_parent ()

    CongTraversalNode* cong_traversal_node_get_parent
                                                (CongTraversalNode *traversal_node);

TODO: Write me

`traversal_node` : |
Returns : |

### CongTraversalNodeCallback ()

    void        (*CongTraversalNodeCallback)    (CongTraversalNode *traversal_node,
                                                 gpointer user_data);

`traversal_node` : |
`user_data` : |

### cong_traversal_node_for_each_child ()

    void        cong_traversal_node_for_each_child
                                                (CongTraversalNode *traversal_node,
                                                 CongTraversalNodeCallback callback,
                                                 gpointer user_data);

`traversal_node` : |
`callback` : |
`user_data` : |

### cong_traversal_node_get_first_child ()

    CongTraversalNode* cong_traversal_node_get_first_child
                                                (CongTraversalNode *traversal_node);

TODO: Write me

`traversal_node` : |
Returns : |

### cong_traversal_node_get_prev ()

    CongTraversalNode* cong_traversal_node_get_prev
                                                (CongTraversalNode *traversal_node);

TODO: Write me

`traversal_node` : |
Returns : |

### cong_traversal_node_get_next ()

    CongTraversalNode* cong_traversal_node_get_next
                                                (CongTraversalNode *traversal_node);

TODO: Write me

`traversal_node` : |
Returns : |

### cong_traversal_node_is_referenced_entity_decl ()

    gboolean    cong_traversal_node_is_referenced_entity_decl
                                                (CongTraversalNode *traversal_node);

TODO: Write me

`traversal_node` : |
Returns : |