/*
 * RWTValDlist<T> example, from the manual.
 *
 * $Id: tvdlist.cpp,v 7.8 1995/09/07 01:13:00 jims Exp $
 *
 * (c) Copyright 1989 - 1996 Rogue Wave Software, Inc.
 * ALL RIGHTS RESERVED
 *
 * The software and information contained herein are proprietary to, and
 * comprise valuable trade secrets of, Rogue Wave Software, Inc., which
 * intends to preserve as trade secrets such software and information.
 * This software is furnished pursuant to a written license agreement and
 * may be used, copied, transmitted, and stored only in accordance with
 * the terms of such license and with the inclusion of the above copyright
 * notice.  This software and information or any other copies thereof may
 * not be provided or otherwise made available to any other person.
 *
 * Notwithstanding any other lease or license that may pertain to, or
 * accompany the delivery of, this computer software and information, the
 * rights of the Government regarding its use, reproduction and disclosure
 * are as set forth in Section 52.227-19 of the FARS Computer
 * Software-Restricted Rights clause.
 * 
 * Use, duplication, or disclosure by the Government is subject to
 * restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in
 * Technical Data and Computer Software clause at DFARS 252.227-7013.
 * Contractor/Manufacturer is Rogue Wave Software, Inc.,
 * P.O. Box 2328, Corvallis, Oregon 97339.
 *
 * This computer software and information is distributed with "restricted
 * rights."  Use, duplication or disclosure is subject to restrictions as
 * set forth in NASA FAR SUP 18-52.227-79 (April 1985) "Commercial
 * Computer Software-Restricted Rights (April 1985)."  If the Clause at
 * 18-52.227-74 "Rights in Data General" is specified in the contract,
 * then the "Alternate III" clause applies.
 *
 ***************************************************************************
 *
 * $Log: tvdlist.cpp,v $
 * Revision 7.8  1995/09/07 01:13:00  jims
 * Use new copyright macro
 *
 * Revision 7.7  1995/08/29  14:39:05  pearson
 * Separate out definition of Dog for xlC
 *
 * Revision 7.6  1995/06/29  14:54:11  pearson
 * compilers.h to compiler.h
 *
 * Revision 7.5  95/06/28  14:32:20  14:32:20  pearson (Thomas Pearson)
 * *** empty log message ***
 * 
 * Revision 7.4  95/06/28  09:34:05  09:34:05  pearson (Thomas Pearson)
 * Added comment to #endif
 * 
 * Revision 7.3  95/06/28  08:39:05  08:39:05  pearson (Thomas Pearson)
 * Example wrapped in an #ifdef to check whether the user's compiler supports
 * templates.
 * 
 * Revision 7.2  94/12/14  18:30:09  18:30:09  foote
 * changed include <rw/...> to "rw/..."
 * 
 * Revision 7.1  1994/10/16  04:15:40  josh
 * Merged 6.1 and 7.0 development trees
 *
 * Revision 6.2  1994/07/12  20:40:30  vriezen
 * Updated Copyright
 *
 * Revision 6.1  1994/04/15  19:08:51  vriezen
 * Move all files to 6.1
 *
 * Revision 2.3  1993/06/16  01:11:04  keffer
 * Added RCS keywords.
 *
 *
 */

#include "rw/compiler.h"
#ifdef RW_NO_TEMPLATES
#error "Your compiler does not support templates."
#error "You cannot compile this example. "
#else

#include "rw/tvdlist.h"
#include "rw/rstream.h"
#include "dog.h"

main()
{
  RWTValDlist<Dog> terriers;
  terriers.insert("Cairn Terrier");	// NB: type conversion occurs
  terriers.insert("Irish Terrier");
  terriers.insert("Schnauzer");

  cout << "The list " <<
    (terriers.contains("Schnauzer") ? "does " : "does not ") <<
    "contain a Schnauzer\n";

  terriers.insertAt(
      terriers.index("Irish Terrier"),
      "Fox Terrier"
    );

  while (!terriers.isEmpty())
    cout << terriers.get() << endl;

  return 0;
}

#endif  /* RW_NO_TEMPLATES */

