def _iter_channels(framefile):
from LDAStools import frameCPP<EOL>if not isinstance(framefile, frameCPP.IFrameFStream):<EOL><INDENT>framefile = open_gwf(framefile, '<STR_LIT:r>')<EOL><DEDENT>toc = framefile.GetTOC()<EOL>for typename in ('<STR_LIT>', '<STR_LIT>', '<STR_LIT>'):<EOL><INDENT>typen = typename.lower()<EOL>for name in getattr(toc, '<STR_LIT>'.format(typename))():<EOL><INDENT>yield name, typen<EOL><DEDENT><DEDENT>
Yields the name and type of each channel in a GWF file TOC

    **Requires:** |LDAStools.frameCPP|_

    Parameters
    ----------
    framefile : `str`, `LDAStools.frameCPP.IFrameFStream`
        path of GWF file, or open file stream, to read