1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213
|
#
# SUMMARY: Summary of the OO-Browser features
#
# AUTHOR: Bob Weiner
#
# ORIG-DATE: 15-Oct-90
# LAST-MOD: 3-Jan-02 at 17:54:35 by Bob Weiner
#
# This file is part of the OO-Browser.
Bob Weiner designed and implemented the OO-Browser.
<bwcto@users.sf.net>
Copyright (C) 1989-2002 Bob Weiner, BeOpen.com and the Free Software
Foundation, Inc.
Distributed under terms described in the BR-COPY file within the
OO-Browser distribution.
With thanks to Motorola, Inc. for helping fund initial development, to
Torgeir Veimo, Mark Stern, Steve Baur and Martin Buchholz for helping
with the X OO-Browser core, to Jeff Sparkes for help with Java language
support, to Harri Pasanen for contributing the initial Python
language support (derived from the C++ support code) and to Kirill
Katsnelson for adapting the graphical OO-Browser for use with Windows.
------------------
OO-Browser Features
*******************
* The OO-Browser is a multi-windowed, interactive object-oriented class
browser similar in use to the well-known Smalltalk browsers. It is unique
in a number of respects foremost of which is that it works well with a
multiplicity of object-oriented languages. It provides both textual views
within an editor and graphical views under the X window system and Windows.
* Support for all popular OO Languages on UNIX
----------------------------------------------
** Support for C, C++, Common Lisp and its Object System (CLOS), Eiffel,
Java, Objective-C, Python and Smalltalk class browsing is included.
Additionally, support for browsing large amounts of material in Info
format by node name (a popular online documentation format with cross
references and hierarchical structure) is included. All languages
provide class browsing via either a textual or a graphical interface.
** Method and typically attribute browsing is supported for all languages
except Smalltalk. CLOS supports browsing all elements defined with
(def* constructs. In-source feature browsing is also supported for all
of these languages. One simply selects a feature name to jump to its
corresponding source. Method name overloading in C++ and inherited
feature renaming in Eiffel are fully supported.
** Under C++, one can click on a method call, function call or attribute
reference to jump to its associated definition. If multiple definitions
are possible, a structured dynamic list of possible method signatures
are shown and can be clicked upon to jump to any selected definition.
** Under C++, friend classes and functions may be browsed easily.
** C code browsing is supported for C++, Objective-C and C source code.
** Objective-C category and formal protocol browsing is supported.
** C++ parameterized template classes and methods are supported.
** Java abstract and native (externally defined) method browsing is
supported.
** All classes that implement a particular feature name, protocol (or
interface) name, or class category name may be listed and then browsed.
** Immediate switching among languages is allowed. One can switch
from Eiffel browsing to C++ browsing in an instant, if so desired.
Or simply run two OO-Browsers side by side.
** Multiple inheritance support is built-in, where applicable.
** Statistics on classes and Environments may be displayed.
** Language-specific class information may be shown. Presently this
feature is supported under Python and Eiffel, where a listing of class
parents, attributes, routines and best guess (highly accurate) list of
routine calls may be displayed. Outputs from the Eiffel `short' and
`flat' commands may also be shown.
* For Serious Use
----------------------
** Library (stable) and System (in development) classes may be
maintained and listed separately or together. Any number of
Libraries and Systems may be combined for listing in a single
Environment. There are no fixed limits on the number of classes per
Environment nor on the number of Environments that may be browsed.
** All source code is included and is heavily documented.
* Ease of Use
-------------
** Machine-independent mouse support is included along with an extremely
intuitive point and click interface that uses just two mouse keys. The
OO-Browser is pre-configured for use unser the X window system or
Windows when using InfoDock, GNU Emacs or XEmacs. Online mouse
usage help is always one key away.
** Popup and pulldown command menus are available under InfoDock, Emacs V19
(or higher) and XEmacs.
** The OO-Browser help display gives short descriptions of all of
the commands and key bindings available in the browser. By clicking
on any such selection, the corresponding command is executed.
** One may also click on class names to see ancestors, descendants
or the class itself. Just select a class name and the OO-Browser
immediately will display or edit the class source. Once a class
file has been loaded, one can quickly switch to it by selection
from a menu of such files.
** For a number of languages, one may also select a feature
(method) name or declaration and move directly to the definition
of the feature. The browser accounts for the complexities of member name
overloading in C++ and unlimited feature renaming in Eiffel so that you
need not. Just click on a declaration and watch the browser display jump
to the proper definition.
** In C++, one can jump to the declaration of a listing entry or be
prompted within any buffer for a class and feature name whose
declaration one wants to browse. One can jump back and forth between
declarations and their associated definitions (between header and code
files) with a single command.
** Jump back to a previously visited class or feature by selecting from a
list of recently visited buffers.
** OO-Browser commands may also be invoked from the keyboard, allowing
unrestricted use via standard terminal interfaces.
* Speed
-------
** Building Environments is fast compared to many other tools and browser
startup, once an Environment has been built, is very fast. Response
times on workstations are excellent; for example, in one test case, less
than two real seconds were required to display a set of complex
inheritance graphs involving over 400 classes.
* Flexibility
-------------
** An X-specific or Windows-specific hierarchy display browser is included.
It provides views of class inheritance structure and lexically included
elements, which allows for quick random access to entire Environments.
A click on a class or element name immediately jumps to it in the
editor, providing rapid, visual browsing. One can pop up several
graphical browsers to gain different views of classes in the same or in
multiple environments. All graphical browser sessions can communicate
with a single textual browser, so one can quickly display and edit
classes from different environments (even different languages).
Multiple inheritance is handled through repetition of nodes throughout
the tree; repeated nodes are followed by ellipses to indicate multiple
inheritance.
** The OO-Browser uses class source code only, hence no compiler is
necessary for proper browser operation. This allows one to explore
class libraries without the need for additional tools.
** Class inheritance networks may be displayed. Either a single
inheritance level (parents or children) or the entire inheritance
network (ancestors or descendants) for a set of classes may be shown.
** Class files may be added as a group by specifying a root directory below
which all class files are found, including those in subdirectories.
** A menu of class files can be displayed for random access to specific
code modules.
** On startup, the OO-Browser lists all currently known classes within a
particular Environment. Any desired classes may be found by searching
or by matching a regular expression or string to the set of class names.
This may be done repeatedly to achieve an "and"-type relational query
effect.
** The number of listing windows is limited only by the screen width and
the width setting used for listing windows.
** The OO-Browser is adaptable to any class-based object-oriented language.
* Editor Integration
--------------------
** The OO-Browser works with the powerful, freely distributable, GNU
Emacs editor; it works on any UNIX system display supported by Emacs.
It is included as part of the InfoDock integrated development
environment and is also compatible with XEmacs.
** All OO-Browser outputs are text which may be edited as desired or
saved to files.
** OO-Browser functions may be used standalone within the editor
without using the multi-windowed browser interface. One useful
example is to point to a class name such as a parent class in the
text of another class and have the parent's source appear in an
editable fashion.
** The user need not know the location of class source; the browser will
display or edit a class based solely upon its class name.
|