54 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
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.
 | 
						|
 
 |