[comp.lang.c++] C++ Packages

lomow@calgary.UUCP (Greg Lomow) (05/04/87)

Could somebody e-mail me a really good linked list package
written in C++ (something like Simula's SIMSET would be fine
but if you have anything you think is better then send it too).

While we're on the subject, does anyone have a really good package
and base classes for manipulating trees?

    Greg Lomow

	lomow@cpsc.calgary.cdn
    or
	....![ubc-vision,ihnp4]!alberta!calgary!lomow

lomow@calgary.UUCP (05/08/87)

In article <903@vaxb.calgary.UUCP>, lomow@calgary.UUCP (Greg Lomow) writes:
> 
> Could somebody e-mail me a really good linked list package
> written in C++ (something like Simula's SIMSET would be fine
> but if you have anything you think is better then send it too).
> 
> While we're on the subject, does anyone have a really good package
> and base classes for manipulating trees?
> 

After I posted the above request a friend of mine at this site
read the request and pointed out to me that it sounds like I
want the readers of comp.lang.c++ to do my work for me. This
wasn't my intention. I have written quite alot of C++ code but I
have not found a completely satisfactory way of writing a linked
list package that is easy to extend but which still permits
tight data checking of the elements placed on the list and which
requires a minimum of casting when using the elements on the
list (virtual functions do not always fit the bill). My
intention was (and still is) to solicit examples of C++ packages
from net readers so I could see what kind of solutions other
people have adopted.

Greg Lomow
-- 

	lomow@cpsc.calgary.cdn
      or
	....![ubc-vision,ihnp4]!alberta!calgary!lomow

gore@nucsrl.UUCP (Jacob Gore) (05/11/87)

>/ nucsrl:comp.lang.c++ / lomow@calgary.UUCP (Greg Lomow) /
>In article <903@vaxb.calgary.UUCP>, lomow@calgary.UUCP (Greg Lomow) writes:
>> 
>> Could somebody e-mail me a really good linked list package
>> written in C++ [...]
>> [...] does anyone have a really good package
>> and base classes for manipulating trees?
>
>After I posted the above request a friend of mine at this site
>read the request and pointed out to me that it sounds like I
>want the readers of comp.lang.c++ to do my work for me. This
>wasn't my intention.

Why on earth are you apologizing for wanting to reuse software?  

Jacob Gore
Northwestern University, Computer Science Research Lab
{gargoyle,ihnp4,chinet}!nucsrl!gore
gore@EECS.NWU.Edu (for now, only from ARPA)

keith@nih-csl.UUCP (05/11/87)

> Could somebody e-mail me a really good linked list package
> written in C++ (something like Simula's SIMSET would be fine
> but if you have anything you think is better then send it too).
> 
> While we're on the subject, does anyone have a really good package
> and base classes for manipulating trees?
> 

The Object-Oriented Program Support (OOPS) class library is a portable
collection of classes similar to those of Smalltalk-80 that has been
developed using the C++ programming language under the UNIX operating
system.  The OOPS library includes generally useful data types such as
String, Date, and Time, and most of the Smalltalk-80 collection
classes such as OrderedCltn (indexed arrays), LinkedList
(singly-linked lists), Set (hash tables), and Dictionary (associative
arrays).  Arbitrarily complex data structures comprised of OOPS and
user-defined objects can be stored on disk files or moved between UNIX
processes by means of an Object I/O facility.  Classes Process,
Scheduler, Semaphore, and SharedQueue provide multiprogramming with
coroutines.

Here's the hierarchy of the OOPS classes implemented in Version 1, Release 2:

Object -- Root of the OOPS Class Inheritance Tree
	Bitset -- Set of Small Integers (something like Pascal's type SET)
	Class -- Class Descriptor
	Collection -- Abstract Class for Collection Functions
		Arraychar -- Byte Array
			String -- Character String
		Arrayobid -- Array of Object Pointers
		Bag -- Unordered Collection of Objects
		Set -- Unordered Collection of Non-Duplicate Objects
			Dictionary -- Set of Associations
				IdentDict -- Dictionary Keyed by Object ID
		SeqCltn -- Abstract Class for Ordered, Indexed Collections
			LinkedList -- Singly-Linked List
			OrderedCltn -- Ordered Collection of Object Pointers
				SortedCltn -- Sorted Collection of Objects
			Stack -- Stack of Object Pointers
	Date -- Calendar Date
	Float -- Floating Point Number Object
	Fraction -- (Toy) Rational Arithmetic
	Link -- Abstract Class for LinkedList Links
		Linkobid -- Link Containing Object Pointer
		Process -- Co-routine Process Object
	LookupKey -- Abstract Class for Dictionary Associations
		Assoc -- Association of Object Pointers
		AssocInt -- Association of Object Pointer with Integer
	Integer -- Integer Number Object
	Nil -- The Nil Object
	Point -- X-Y Coordinate Pair
	Random -- Uniform Random Number Generator
	Rectangle -- Rectangle
	Scheduler -- Co-routine Process Scheduler
	Semaphore -- Process Synchronization Class
	SharedQueue -- Shared Queue of Objects
	Time -- Time of Day
	Vector -- Abstract Class for Math Vector Functions
		BitVec
		ByteVec
		ComplexVec
		DoubleVec
		FloatVec
		IntVec
		LongVec
		ShortVec

Current Status:

The Vector classes are still experimental and are not being
distributed at this time.  OOPS has been ported to MASSCOMP's
Real-Time UNIX, Sun-3, 4.2 BSD on the VAX, and ACIS 4.2 on the IBM
RT-PC.

To get a copy of the "guru-only" version of OOPS, just send me a
letter on your company or university letterhead requesting the
"Object-Oriented Program Support (OOPS) class library for C++" and a
reel of 1/2" mag tape (a small reel will suffice).  I'll return the
tape with a copy of OOPS recorded on it in tar format at 1600 bpi, and
I'll include a copy of the (incomplete) OOPS reference manual.
-- 
	Keith Gorlen			phone: (301) 496-5363
	Building 12A, Room 2017		uucp: seismo!elsie!nih-csl!keith
	National Institutes of Health
	Bethesda, MD 20892

phm@stl.UUCP (05/13/87)

I noticed that the OOPS class library described in article 167 has
classes which provide multiprogramming with coroutines.
Are there any other packages around useful for handling concurrency?

-- 

Regards,

Peter Mabey  (phm@stl  ...!mcvax!ukc!stl!phm +44-279-29531 x3596)