123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- Copyright (c) 1993-1994 by Xerox Corporation. All rights reserved.
- THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED
- OR IMPLIED. ANY USE IS AT YOUR OWN RISK.
- Permission is hereby granted to use or copy this program
- for any purpose, provided the above notices are retained on all copies.
- Permission to modify the code and to distribute modified code is granted,
- provided the above notices are retained, and a notice that the code was
- modified is included with the above copyright notice.
- Please send bug reports to Hans-J. Boehm (Hans_Boehm@hp.com or
- boehm@acm.org).
- This is a string packages that uses a tree-based representation.
- See cord.h for a description of the functions provided. Ec.h describes
- "extensible cords", which are essentially output streams that write
- to a cord. These allow for efficient construction of cords without
- requiring a bound on the size of a cord.
- More details on the data structure can be found in
- Boehm, Atkinson, and Plass, "Ropes: An Alternative to Strings",
- Software Practice and Experience 25, 12, December 1995, pp. 1315-1330.
- A fundamentally similar "rope" data structure is also part of SGI's standard
- template library implementation, and its descendents, which include the
- GNU C++ library. That uses reference counting by default.
- There is a short description of that data structure at
- http://reality.sgi.com/boehm/ropeimpl.html . (The more official location
- http://www.sgi.com/tech/stl/ropeimpl.html is missing a figure.)
- All of these are descendents of the "ropes" in Xerox Cedar.
- de.c is a very dumb text editor that illustrates the use of cords.
- It maintains a list of file versions. Each version is simply a
- cord representing the file contents. Nonetheless, standard
- editing operations are efficient, even on very large files.
- (Its 3 line "user manual" can be obtained by invoking it without
- arguments. Note that ^R^N and ^R^P move the cursor by
- almost a screen. It does not understand tabs, which will show
- up as highlighred "I"s. Use the UNIX "expand" program first.)
- To build the editor, type "make cord/de" in the gc directory.
- This package assumes an ANSI C compiler such as gcc. It will
- not compile with an old-style K&R compiler.
- Note that CORD_printf iand friends use C functions with variable numbers
- of arguments in non-standard-conforming ways. This code is known to
- break on some platforms, notably PowerPC. It should be possible to
- build the remainder of the library (everything but cordprnt.c) on
- any platform that supports the collector.
-
|