************************* MASTER CODE ***************************************

The name of the first file in this disk's directory identifies the volume,
issue number and revision of the disk. The format of this filename is:

    !CDmvvii.rrr

where

    ! = the '!' character
    m =   C for C Users Journal, W for Windows/DOS Developer's Journal
    vv =  volume
    ii =  issue
    rrr = revision (001 for initial release, 002 for next update, etc.)

The file UPDATE.DOC contains information about any additions or
corrections to material on the disk since the original magazine
publication.

If you have obtained this code from a floppy diskette or from CompuServe, the 
headings under the column "FILENAME" represent the names of .ZIP files.  All 
files listed under the filename are archived in the .ZIP file.

If you have obtained this code from UUNET, the headings under the column 
"FILENAME" represent the names of subdirectories.  All files listed under the
"filename" are included in a subdirectory of that name.

Keywords: Nov94 C C++ IOCTL C9X image Boolean ostream dynamic container

The code listings for the November 1994 issue of C/C++ Users Journal
include source code for Tom Nelson's classes to encapsulate DOS IOCTL,
Dwayne Phillips' Boolean and overlay image processing functions, plus
sample listings from P.J. Plauger's column Standard C/C++:Implementing
<ostream>, Chuck Allison's column, Code Capsules: Dynamic Memory
Management, Part 2, Dan Saks' column, Stepping Up to C++: Generic
Container Classes, Part 5.
*************************  FILE DESCRIPTION **********************************

The following files are included in the disk:

FILENAME		AUTHOR-NAME	TITLE			       PAGE
(Zip archive/
subdirectory name)
-------------------------------------------------------------------------------
plauger 		P.J. Plauger	Standard C/C++:	Implementing	10
					<ostream>

    ostream	 - listing 1, ostream standard header
    ostream.c	 - listing 2, ostream basic members
    oispoint.c	 - listing 3, Implements ostream::operator<<(void *)
    osprint.c	 - listing 4, Implements
                              ostream::_Print(const char *, ...)
    ospad.c	 - listing 5, ostream padding members
    osput.c	 - listing 6, Implements ostream::put(char)
    osistrin.c	 - listing 7, Implements 
                              ostream::operator<<(const char *)
    osistrea.c	 - listing 8, Implements
                              ostream::operator<<(streambuf&)
    osflush.c	 - listing 9, Implements ostream::flush()
    oswrite.c	 - listing 10, Implements ostream::write(const char *,
                                                         int)
    endl.c	 - listing 11, Implements function endl(ostream&)
    ends.c	 - listing 12, Implements function ends(ostream&)
    flush.c	 - listing 13, Implements function flush(ostream&)


nelson			Tom Nelson	Encapsulating the DOS IOCTL	27
					Interface

    iobase.h	 - listing 1, IOCTL base class definition
    iobase.cpp	 - listing 2, IOCTL base class implementation
    iohandle.h	 - listing 3, Base class for handle-based IOCTL for
			      character devices and files
    iohandle.cpp - listing 4, Base class implementation for IOCTL for
			      character devices and files
    chandle.h	 - listing 5, Adds character-device specific
			      capability to class IoctlHandle
    chandle.cpp  - listing 6, Adds character-device specific
			      capability to class IoctlHandle
    fhandle.h	 - listing 7, Adds file-specific capability to class
			      IoctlHandle
    fhandle.cpp	 - listing 8, Adds file-specific capability to class
			      IoctlHandle
    demo.cpp	 - listing 9, Background print utility for testing
			      IOCTL handle functions
    iostruct.h	 - not listed in magazine
    block.h	 - not listed in magazine
    block.cpp	 - not listed in magazine

phillips		Dwayne Phillips	Image Processing Part 12:	53
			                Boolean and Overlay Operations
    boole.c	 - listing 1, Subroutines to perform Boolean image
			      operations, some comments removed
    ilabel.c	 - listing 2, A portion of the ilabel program
    average.c	 - listing 3, A subroutine to average two images,
                              listing extracted from overlay.c (found
			      zip file/directory phillips2)

    boolean.c	 - listing 4, The stand-alone Boolean program
    
phillips2		Dwayne Phillips Image Processing Part 12:
					Boolean and Overlay Operations

    Contains source text that was not listed, or was only partially
    listed in the magazine, including:

    boole.c	 - Subroutines to perform Boolean image operations
    invert.c	 - Inverts gray-scale values of an image file
    ilabel.c	 - Full listing of ilabel program
    overlay.c	 - Functions to overlay one image on top of another
    pattern.c	 - A program to create simple patterns in images
    boolean.c	 - The stand-alone Boolean program
    mainover.c	 - Main calling program to call overlay operations
    cips.h	 - Structure definition for TIFF header, required to
		   use new TIFF 6.0 file I/O functions
    tiffs.c	 - Includes new TIFF 6.0 file I/O functions
    
allison			Chuck Allison	Code Capsules:Dynamic Memory	71
					Management, Part 2

    str.h	 - listing 1, A simple string class
    str.cpp	 - listing 2, The rest of the string class
			      implementation
    tstr.cpp	 - listing 3, Exposes the string class's shallow copy
    str2.h	 - listing 4, String class with a copy constructor and
			      assignment operator
    str2.cpp	 - listing 5, Adds implementation of assignment
			      operator to the string class
    tstr2.cpp	 - listing 6, Tests string class with deep copy
    virt.cpp	 - listing 7, Illustrates virtual functions
    field.h	 - listing 8, The Field abstract class
    cell.h	 - listing 9, The Cell class
    column.h	 - listing 10, The Column class
    popmenu.h	 - listing 11, The Popmenu class
    table.h	 - listing 12, The Table class
    form.h	 - listing 13, The Form class
    form.cpp	 - listing 14, More Form member functions
    tform.cpp	 - listing 15, Shows the effect of virtual destructors
    output.15	 - listing 16, Output of tform.cpp after removing the
			       virtual keyword from field.h
    exhaust1.cpp - listing 17, Illustrates set_new_handler
    exhaust2.cpp - listing 18, Restores traditional "return-null"
			       behavior
    exhaust3.cpp - listing 19, Leaves a bad_alloc exception uncaught to
			       force terminate()
    exhaust4.cpp - listing 20, Implements a xalloc handler
    override.cpp - listing 21, Replaces global operator new and
			       operator delete
    opnew.cpp	 - listing 22, Typical implementation of ::operator new
			       and ::operator delete
    t.h		 - listing 23, A class with its own versions of new and
			       delete
    class.cpp	 - listing 24, Illustrates the behavior of class-specific
			       new and delete (see t.h)
    output.24	 - listing 25, Output from class.cpp
    overload.cpp - listing 26, A placement operator new with two arguments
    vector.cpp	 - listing 27, A Vector class template that manages its
			       own heap
    tvector.cpp	 - listing 28, Tests the Vector class
    output.28	 - listing 29, Output from tvector.cpp
    pool.h	 - listing 30, C Interface from a generic memory pool
			       manager (answer to last month's puzzle)
    pool.c	 - listing 31, Generic pool manager implementation
			       (answer to last month's puzzle)
    

saks			Dan Saks	Stepping Up to C++: Designing	91
					Generic Container Classes,
					Part 5

    generic.h	 - listing 1, A simple version of generic.h
    strtst7.cpp	 - listing 2, A test program for generic queues based
			      on the generic.h macros
    strq7.cpp	 - listing 3, Instantiate an implementation for queue
			      of str
    queue7.h	 - listing 4, Macro definitions for instantiating a
			      type-specific wrapper around a generic
			      queue of void *
    queue8.h	 - listing 5, Macro definitions for instantiating a
			      queue of T (not a wrapper)

******************************************************************************

If you have questions regarding to the disk, please call or write us.

-----------------------------------------------------------------------------
                           R&D Publications, Inc.
                        1601 W. 23rd St. Suite 200
                            Lawrence, KS 66046
                              (913) 841-1631
-----------------------------------------------------------------------------
    


