# 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.
#
helpersincdir = $(includedir)/log4cxx/helpers
helpersinc_HEADERS= \
    absolutetimedateformat.h \
    appenderattachableimpl.h \
    aprinitializer.h \
    bufferedoutputstream.h \
    bufferedwriter.h \
    bytearrayinputstream.h \
    bytearrayoutputstream.h \
    bytebuffer.h \
    cacheddateformat.h \
    charsetdecoder.h \
    charsetencoder.h \
    class.h \
    classregistration.h \
    condition.h \
    cyclicbuffer.h \
    datagrampacket.h \
    datagramsocket.h \
    dateformat.h \
    date.h \
    datelayout.h \
    datetimedateformat.h \
    exception.h \
    fileinputstream.h \
    fileoutputstream.h \
    filewatchdog.h \
    inetaddress.h \
    inputstream.h \
    inputstreamreader.h \
    integer.h \
    iso8601dateformat.h \
    loader.h \
    locale.h \
    loglog.h \
    messagebuffer.h \
    mutex.h \
    object.h \
    objectimpl.h \
    objectoutputstream.h \
    objectptr.h \
    onlyonceerrorhandler.h \
    optionconverter.h \
    outputstream.h \
    outputstreamwriter.h \
    pool.h \
    properties.h \
    propertyresourcebundle.h \
    reader.h \
    relativetimedateformat.h \
    resourcebundle.h \
    serversocket.h \
    simpledateformat.h \
    socket.h \
    socketoutputstream.h \
    strftimedateformat.h \
    strictmath.h \
    stringhelper.h \
    stringtokenizer.h \
    synchronized.h \
    syslogwriter.h \
    systemerrwriter.h \
    system.h \
    systemoutwriter.h \
    tchar.h \
    thread.h \
    threadlocal.h \
    threadspecificdata.h \
    timezone.h \
    transcoder.h \
    transform.h \
    writer.h \
    xml.h
