# Copyright (C) 2016 and later: Unicode, Inc. and others.
# License & terms of use: http://www.unicode.org/copyright.html
# Copyright (c) 2001-2016 International Business Machines
# Corporation and others. All Rights Reserved.
# Begin temporary addition.
# These are very bad "C" APIs that do not work with a C compiler and
# violate many ICU coding guidelines. These were added with ticket #5996.
# Temporarily marked as C++ for the hdrtst to pass.
# These are gone in ICU 50.1, remove
#vzone.h
#zrule.h
#ztrans.h
# End temporary addition.
# common & i18n
alphaindex.h
appendable.h
bidi.h
basictz.h
bmsearch.h
brkiter.h
bytestream.h
bytestrie.h
bytestriebuilder.h
calendar.h
caniter.h
chariter.h
choicfmt.h
coleitr.h
coll.h
colldata.h
convert.h
cpdtrans.h
curramt.h
currunit.h
currpinf.h
datefmt.h
dbbi.h
dcfmtsym.h
decimfmt.h
dtintrv.h
dtitvinf.h
dtitvfmt.h
dtfmtsym.h
dtptngen.h
dtrule.h
enumset.h
errorcode.h
fieldpos.h
filteredbrk.h
fmtable.h
format.h
fpositer.h
gender.h
gregocal.h
idna.h
listformatter.h
locdspnm.h
locid.h
measfmt.h
measunit.h
measure.h
messagepattern.h
msgfmt.h
normalizer2.h
normlzr.h
numfmt.h
numsys.h
parsepos.h
plurfmt.h
plurrule.h
rbbi.h
rbnf.h
rbtz.h
regex.h
region.h
rep.h
resbund.h
schriter.h
scientificformathelper.h
scientificnumberformatter.h
search.h
selfmt.h
simpleformatter.h
simpletz.h
smpdtfmt.h
sortkey.h
std_string.h
strenum.h
stringtriebuilder.h
stringpiece.h
stsearch.h
symtable.h
tblcoll.h
timezone.h
tmunit.h
tmutamt.h
tmutfmt.h
translit.h
tzfmt.h
tznames.h
tzrule.h
tztrans.h
ucharstrie.h
ucharstriebuilder.h
uchriter.h
unifilt.h
unifunct.h
unimatch.h
unirepl.h
uniset.h
unistr.h
uobject.h
usetiter.h
vtzone.h
# io library
ustream.h
# layout & layoutex
LayoutEngine.h
LEFontInstance.h
LEGlyphFilter.h
LEGlyphStorage.h
LELanguages.h
LEScripts.h
LESwaps.h
# LETypes.h -- C header
# loengine.h -- C header
ParagraphLayout.h
RunArrays.h
