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