Blame doc/README.cords

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