home *** CD-ROM | disk | FTP | other *** search
- $Id: README,v 3.1 1995/02/17 18:21:38 mmann Exp $
-
- A C++ Source Code Browser
- Gerd Moellmann, mmann@ibm.net
-
- Overview
- --------
-
- I am myself working in C++ commercial software projects for several
- years now, and in these projects I always missed software support for
- two things:
-
- When a new class library is introduced or you have to work on some
- source code you haven't written yourself (or written sufficiently long
- ago) you need a tool letting you navigate through class hierarchies
- and investigate features of the software. Without such a tool you often
- end up grep'ing through dozens or even hundreds of files.
-
- Once you are productive, it would be nice to have a tool that knows your
- sources and can help you while you are editing source code. Imagine to
- be able to jump to the definition of an identifier while you are
- editing, or something that can complete long identifier names because it
- knows what identifiers are defined in your program...
-
- The design of the C++ class browser reflects these two needs;
- therefore the name class browser is really only half the truth.
-
- How does it work?
-
- A fast parser written in C is used to parse C++ source and header
- files. The parser generates a database containing information about
- identifiers---classes, members, global functions, types etc.
-
- The second part of the C++ browser is a Lisp program. This package
- reads the database generated by the parser; it displays its contents
- in various forms and allows you to perform operations on it, or with
- the help of the knowledge contained in it.
-
- The "navigational" use of the browser is centered around two main
- buffer types which define their own major modes:
-
- "Tree buffers" are used to view class hierarchies in tree form. They
- allow you to quickly find classes, find or view a class declaration,
- perform operations like query replace on sets of files containing
- classes, and finally they are used to produce the second buffer form:
- member displays.
-
- Members are displayed in "member buffers". The browser distinguishes
- between six different types of members; each type is displayed as a
- member list of its own:
-
- * Instance member variables,
- * Instance member functions,
- * Static member variables,
- * Static member functions,
- * Friends,
- * Types (enums, and typedefs defined with class scope.
-
- You can quickly switch member buffers from one list to another, or to
- another class, you can include inherited members in a display, you can
- set filters, and most important of all you can edit or view member
- declarations and definitions with a keystroke.
-
- These two buffer types and the commands they provide support the
- "navigational" use of the browser. The second form resembles the
- "tags" package for C and some other procedural languages that is part
- of the standard Emacs distribution; its commands are not bound to
- special buffer types but are most often used while you are editing
- your source code.
-
- To list just some of what you can use the @dfn{tags} part of the browser
- for:
-
- * Quickly jump to the definition or declaration of an
- identifier in your source code.
-
- * Complete identifiers in your source---just type in a few
- characters and let Emacs fill in the rest.
-
- * Perform search and query replace operations over some
- or all of your source files.
-
- * Show all identifiers matching a regular expression---and
- jump to one of them, if you like.
-
- The browser has already been used in projects containing hundreds of
- classes. The maximum project size that has been successfully tried so
- long was about 500,000 lines of code. With Emacs 18.55 it runs on an
- MS-DOS notebook with 4 Mb of RAM and has no problems to handle
- projects up to about 70,000 lines of code.
-
-
- Prereqisites
- ------------
-
- You must have Emacs 18.x or 19.x installed on your system. You must
- have a C compiler running on your system (GCC preferred).
-
-
- Operating Systems
- -----------------
-
- The system has been in use for more than 2 years on
-
- OS/2 >= 2.0 with Emacs 19.19 and greater
- MS-DOS with DJ Emacs 18.55
-
- Unix ports should be trivial (Emacs lisp sources are portable, use GCC
- to compile the rest).
-
- The system has been used in projects with more than 800 Kloc code
- (it's not a toy :-)).
-
-
- Installation
- ------------
-
- The standard distribution consists of a GZIP'ed tar archive. To unpack
- this archive use the following commands:
-
- gzip -d C++-browser.tar.gz
- tar xvf C++-browser.tar
-
- This will create a directory named `browser' under the current
- directory containing all files in the distrubution:
-
- README The file you are currently reading.
- INSTALL Installation description.
- LICENSE The GNU General Public License.
- *.el Emacs Lisp source files.
- *.c C source files compilable with GNU C.
- and other compilers.
- *.h C include files.
- makefile Makefile for DMAKE v3.8.
- browser.texi Hypertext helo source file for Emacs.
-
- Follow the instructions in `INSTALL' to install the package.
-
-
-
- Legal Stuff
- -----------
-
- The C++ source code browser is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2, or (at
- your option) any later version.
-
- The C++ source code browser is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with the C++ source code browser; see the file COPYING. if not,
- write to the Free Software Foundation, 675 Mass Ave, Cambridge, MA
- 02139, USA.
-
- See the files COPYING.GEM and COPYING for details.
-
- Instead of a list: All the trademarks used in this document and the
- other documents in the C++ source code browser package are registered
- to whoever it is that owns them.
-
- --- end of file ---