#
# Licensed to the Apache Software  Foundation (ASF) under one or more
# contributor  license agreements.  See  the NOTICE  file distributed
# with  this  work  for  additional information  regarding  copyright
# ownership.   The ASF  licenses this  file to  you under  the Apache
# License, Version  2.0 (the  License); you may  not use  this file
# except in  compliance with the License.   You may obtain  a copy of
# the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the  License is distributed on an  "AS IS" BASIS,
# WITHOUT  WARRANTIES OR CONDITIONS  OF ANY  KIND, either  express or
# implied.   See  the License  for  the  specific language  governing
# permissions and limitations under the License.
#
# Copyright 1999-2008 Rogue Wave Software, Inc.
#

# TODO: Remove config.old.h once all Autoconf macros are working.
#
nobase_include_HEADERS = \
	algorithm \
	algorithm.c \
	algorithm.cc \
	ansi/_cassert.h \
	ansi/_cctype.h \
	ansi/_cerrno.h \
	ansi/_cfloat.h \
	ansi/_clocale.h \
	ansi/_cmath.h \
	ansi/_csetjmp.h \
	ansi/_csignal.h \
	ansi/_cstdarg.h \
	ansi/_cstddef.h \
	ansi/_cstdio.h \
	ansi/_cstdlib.h \
	ansi/_cstring.h \
	ansi/_ctime.h \
	ansi/_cwchar.h \
	ansi/_cwctype.h \
	ansi/assert.h \
	ansi/cassert \
	ansi/cctype \
	ansi/cerrno \
	ansi/cfloat \
	ansi/ciso646 \
	ansi/climits \
	ansi/clocale \
	ansi/cmath \
	ansi/csetjmp \
	ansi/csignal \
	ansi/cstdarg \
	ansi/cstddef \
	ansi/cstdio \
	ansi/cstdlib \
	ansi/cstring \
	ansi/ctime \
	ansi/ctype.h \
	ansi/cwchar \
	ansi/cwctype \
	ansi/errno.h \
	ansi/float.h \
	ansi/limits.h \
	ansi/locale.h \
	ansi/math.h \
	ansi/setjmp.h \
	ansi/signal.h \
	ansi/stdarg.h \
	ansi/stddef.h \
	ansi/stdio.h \
	ansi/stdlib.h \
	ansi/string.h \
	ansi/time.h \
	ansi/wchar.h \
	ansi/wctype.h \
	bitset \
	bitset.c \
	bitset.cc \
	complex \
	complex.c \
	complex.cc \
	config.h \
config.old.h \
	deque \
	deque.c \
	deque.cc \
	deque_spec.h \
	exception \
	fstream \
	fstream.c \
	fstream.cc \
	functional \
	iomanip \
	ios \
	iosfwd \
	iostream \
	istream \
	istream.c \
	istream.cc \
	iterator \
	limits \
	limits.c \
	limits.cc \
	list \
	list.c \
	list.cc \
	list_spec.h \
	loc/_codecvt.c \
	loc/_codecvt.cc \
	loc/_codecvt.h \
	loc/_collate.c \
	loc/_collate.cc \
	loc/_collate.h \
	loc/_convenience.h \
	loc/_ctype.c \
	loc/_ctype.cc \
	loc/_ctype.h \
	loc/_facet.h \
	loc/_locale.h \
	loc/_localedef.h \
	loc/_messages.c \
	loc/_messages.cc \
	loc/_messages.h \
	loc/_money_get.c \
	loc/_money_get.cc \
	loc/_money_get.h \
	loc/_money_put.c \
	loc/_money_put.cc \
	loc/_money_put.h \
	loc/_moneypunct.c \
	loc/_moneypunct.cc \
	loc/_moneypunct.h \
	loc/_num_get.c \
	loc/_num_get.cc \
	loc/_num_get.h \
	loc/_num_put.c \
	loc/_num_put.cc \
	loc/_num_put.h \
	loc/_numpunct.c \
	loc/_numpunct.cc \
	loc/_numpunct.h \
	loc/_punct.c \
	loc/_punct.cc \
	loc/_punct.h \
	loc/_time_get.c \
	loc/_time_get.cc \
	loc/_time_get.h \
	loc/_time_put.c \
	loc/_time_put.cc \
	loc/_time_put.h \
	locale \
	map \
	memory \
	new \
	numeric \
	ostream \
	ostream.c \
	ostream.cc \
	queue \
	rw/_algobase.c \
	rw/_algobase.cc \
	rw/_algobase.h \
	rw/_allocator.h \
	rw/_array.h \
	rw/_autoptr.h \
	rw/_basic_ios.c \
	rw/_basic_ios.cc \
	rw/_basic_ios.h \
	rw/_bitmask.h \
	rw/_config-acc.h \
	rw/_config-deccxx.h \
	rw/_config-eccp.h \
	rw/_config-gcc.h \
	rw/_config-icc.h \
	rw/_config-mipspro.h \
	rw/_config-msvc.h \
	rw/_config-msvcrt.h \
	rw/_config-sunpro.h \
	rw/_config-xlc.h \
	rw/_config.h \
	rw/_defs.h \
	rw/_error.h \
	rw/_exception.h \
	rw/_file.h \
	rw/_funcbase.h \
	rw/_heap.c \
	rw/_heap.cc \
	rw/_heap.h \
	rw/_ioinsert.c \
	rw/_ioinsert.cc \
	rw/_ioinsert.h \
	rw/_ioiter.h \
	rw/_iosbase.h \
	rw/_iosfailure.h \
	rw/_iosfwd.h \
	rw/_iterator.h \
	rw/_iterbase.h \
	rw/_math.h \
	rw/_mbstate.h \
	rw/_mutex.h \
	rw/_new.h \
	rw/_pair.h \
	rw/_rawiter.h \
	rw/_relops.h \
	rw/_select.h \
	rw/_specialized.h \
	rw/_streamiter.h \
	rw/_strref.h \
	rw/_traits.h \
	rw/_tree.c \
	rw/_tree.cc \
	rw/_tree.h \
	set \
	sstream \
	sstream.c \
	sstream.cc \
	stack \
	stdexcept \
	streambuf \
	streambuf.c \
	streambuf.cc \
	string \
	string.c \
	string.cc \
	strstream \
	tr1/_smartptr.h \
	tr1/array \
	tr1/cstdint \
	tr1/stdint.h \
	typeinfo \
	utility \
	valarray \
	valarray.c \
	valarray.cc \
	vector \
	vector.c \
	vector.cc \
	vector_spec.h

MAINTAINERCLEANFILES = \
        Makefile.in \
	config.h.in

