Terminal Op Delegates
=====================

*Terminal Op Delegates* are a method of appending an arbitrary Op Chain to the
end of the Op Tree that is generated from a node in the node graph.

A Terminal Op Delegate class should implement the
:class:`TerminalOpDelegate<Nodes3DAPI.TerminalOpDelegates.TerminalOpDelegate.TerminalOpDelegate>`
interface, then an instance can be registered with
:meth:`RegisterTerminalOpDelegate<Nodes3DAPI.RegisterTerminalOpDelegate>`

Terminal Op Delegates are responsible for caching their Ops. It is strongly
encouraged for performance and memory management reasons that a Terminal Op
Delegate should retain references to Ops it creates, then re-use/update them
where possible, rather than creating new Ops on every evaluation.

API Reference
-------------

.. module:: Nodes3DAPI
    :noindex:
.. autofunction:: RegisterTerminalOpDelegate
.. autofunction:: UnregisterTerminalOpDelegate
.. autofunction:: GetRegisteredTerminalOpDelegateNames
.. autofunction:: GetRegisteredTerminalOpDelegate

.. module:: Nodes3DAPI.TerminalOpDelegates.TerminalOpDelegate
.. autoclass:: TerminalOpDelegate