Features
========
Shows the list of features in the currently selected class. Which
routines are visible will depend on the choices made in the View menu.
Private routines are prefaced by a (pri). Routines are sorted in
alphabetical order. Clicking on a particular routine will take you to
that routine in the text window.


Implementation
-------------
	The implementation may be found in the file browserFeatureList.tcl
Globals
-------
gFeatureListElements, which is obtained from getClassInfo from sather.
	featureListInit is called with this list. It is of the form of a
	list of elements, each of which is a list: 
	 { <routine name> <file name> <line number> <feature type>}
       		0             1             2             3

 <feature type> is of the form:
 Field  : iter private attr_writer att_reader, sh_writer sh_reader const
 Index       0    1       2           3           4         5         6
 When true:  i    p       w           r           w         r         c
 when false: n    n       n           n           n         n         n

Get an element that describes the first feature:
	set el [lindex ${gFeatureListElements}  1]

Access the fields describing the first feature by:
	set routineName [lindex ${el} 0]
	set fileName [lindex ${el} 1]
	set fileOffset [lindex ${el} 2]
	set featureType [lindex ${el} 3]
	set isPrivate [string index ${featureType} 1]
	set isAttrWriter [string index ${featureType} 2]  etc...

	I have not written access routines for these since it  would
make things slower to go through a procedure call for each access.

Public
-------
featureListCreate
	Creates the main feature frame with its main window (.l)
featureListInit
	Load the feature list pane with the features for the current
	class (none for a module)

Private
-------
featureListSelectBind
	Select a certain feature - update other panes
	

Future
------
Note that concrete classes show a "flattened" version of the class
routines while abstract classes show only the routines in that class -
please see the bugs section.
