/*
 * Copyright (c) 1997
 * Silicon Graphics Computer Systems, Inc.
 *
 * Permission to use, copy, modify, distribute and sell this software
 * and its documentation for any purpose is hereby granted without fee,
 * provided that the above copyright notice appear in all copies and
 * that both that copyright notice and this permission notice appear
 * in supporting documentation.  Silicon Graphics makes no
 * representations about the suitability of this software for any
 * purpose.  It is provided "as is" without express or implied warranty.
 *
 */

#ifndef _STLP_SLIST
#define _STLP_SLIST

#ifndef _STLP_OUTERMOST_HEADER_ID
#  define _STLP_OUTERMOST_HEADER_ID 0x58
#  include <stl/_prolog.h>
#endif

#ifdef _STLP_PRAGMA_ONCE
#  pragma once
#endif

#if defined (_STLP_NO_EXTENSIONS)
/* Comment following if you want to use the slist constainer even if you ask for
 * no extension.
 */
#  error The slist class is an STLport extension.
#endif

#ifndef _STLP_INTERNAL_SLIST_H
#  include <stl/_slist.h>
#endif

#if defined (_STLP_IMPORT_VENDOR_STD)
//This is not a Standard header, it might failed for most of
//the compilers so we comment it for the moment. Should be uncommented
//on a compiler basis.
//#  include _STLP_NATIVE_HEADER(slist)
#endif

#if (_STLP_OUTERMOST_HEADER_ID == 0x58)
#  include <stl/_epilog.h>
#  undef _STLP_OUTERMOST_HEADER_ID
#endif

#endif /* _STLP_SLIST */

// Local Variables:
// mode:C++
// End:
