The recent article about how to [investigate object code] got me thinking about the various methods I use to find out about an object/class.

The code in the article, for the example of an object of class `IDLgrColorBar`, prints:

IDL> ab_obj_info, 'idlgrcolorbar'
Class: IDLGRCOLORBAR
Superclass: IDLGRMODEL
Superclass: IDLGRCONTAINER
Superclass: IDL_CONTAINER
Superclass: IDLGRCOMPONENT
Superclass: IDLITCOMPONENT

as well as some HTML [information] listing the methods of the objects.

One of the most useful techniques for me is one of my [library] routines to find the class hierarchy of an object:

IDL> mg_class_hierarchy, idlgrcolorbar()
IDLGRCOLORBAR
IDLGRMODEL
IDLGRCONTAINER
IDL_CONTAINER
IDLGRCOMPONENT
IDLITCOMPONENT

This gives the same top-level information with a bit more detail (`IDLgrContainer` inherits from both `IDL_Container` and `IDLitComponent`), but does not provide any listing of the methods. If you know the name of the method, you can use another of my library routines to find out about it's arguments:

IDL> man, 'idlgrcolorbar::computedimensions'
Filename: /Applications/exelis/idl85/lib/idlgrcolorbar__define.pro
result = idlgrcolorbar::computedimensions(self, osrcdest, PATH=path)

So I added a `METHODS` keyword to print out the methods of each class:

IDL> mg_class_hierarchy, 'idlgrcolorbar', /methods
IDLGRCOLORBAR
result = idlgrcolorbar::computedimensions()
result = idlgrcolorbar::init()
idlgrcolorbar::calcsize
idlgrcolorbar::cleanup
idlgrcolorbar::getproperty
idlgrcolorbar::setproperty
IDLGRMODEL
result = idlgrmodel::getctm()
result = idlgrmodel::getxyzrange()
result = idlgrmodel::init()
idlgrmodel::add
...

[IDLdoc] produces these [docs], which list the methods of `IDLgrColorBar` and the hierarchy of superclasses along with a lot of other information including comments that might be in the code headers, but not the methods inherited from those superclasses.

[investigate object code]: http://www.harrisgeospatial.com/Company/PressRoom/Blogs/IDLDataPointDetail/TabId/902/ArtMID/2926/ArticleID/14798/How-to-investigate-IDL-object-code.aspx "How to investigate IDL object code"
[library]: https://github.com/mgalloy/mglib "mglib GitHub repo"
[IDLdoc]: https://github.com/mgalloy/idldoc "IDLdoc GitHub repo"
[docs]: http://michaelgalloy.com/wp-content/uploads/2016/03/object_info-docs/idlgrcolorbar__define.html "IDLgrColorBar IDLdoc info"
[information]: http://michaelgalloy.com/wp-content/uploads/2016/03/idlgrcolorbar.html "IDLgrColorBar info"