/**
 * 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.
 */
#undef hdfsFileIsOpenForRead
#undef hdfsFileIsOpenForWrite
#undef hdfsFileGetReadStatistics
#undef hdfsReadStatisticsGetRemoteBytesRead
#undef hdfsFileClearReadStatistics
#undef hdfsFileFreeReadStatistics
#undef hdfsConnectAsUser
#undef hdfsConnect
#undef hdfsConnectAsUserNewInstance
#undef hdfsConnectNewInstance
#undef hdfsBuilderConnect
#undef hdfsNewBuilder
#undef hdfsBuilderSetForceNewInstance
#undef hdfsBuilderSetNameNode
#undef hdfsBuilderSetNameNodePort
#undef hdfsBuilderSetUserName
#undef hdfsBuilderSetKerbTicketCachePath
#undef hdfsFreeBuilder
#undef hdfsBuilderConfSetStr
#undef hdfsConfGetStr
#undef hdfsConfGetInt
#undef hdfsConfStrFree
#undef hdfsDisconnect
#undef hdfsOpenFile
#undef hdfsTruncateFile
#undef hdfsUnbufferFile
#undef hdfsCloseFile
#undef hdfsExists
#undef hdfsSeek
#undef hdfsTell
#undef hdfsRead
#undef hdfsPread
#undef hdfsWrite
#undef hdfsFlush
#undef hdfsHFlush
#undef hdfsHSync
#undef hdfsAvailable
#undef hdfsCopy
#undef hdfsMove
#undef hdfsDelete
#undef hdfsRename
#undef hdfsGetWorkingDirectory
#undef hdfsSetWorkingDirectory
#undef hdfsCreateDirectory
#undef hdfsSetReplication
#undef hdfsListDirectory
#undef hdfsGetPathInfo
#undef hdfsFreeFileInfo
#undef hdfsFileIsEncrypted
#undef hdfsGetHosts
#undef hdfsFreeHosts
#undef hdfsGetDefaultBlockSize
#undef hdfsGetDefaultBlockSizeAtPath
#undef hdfsGetCapacity
#undef hdfsGetUsed
#undef hdfsChown
#undef hdfsChmod
#undef hdfsUtime
#undef hadoopRzOptionsAlloc
#undef hadoopRzOptionsSetSkipChecksum
#undef hadoopRzOptionsSetByteBufferPool
#undef hadoopRzOptionsFree
#undef hadoopReadZero
#undef hadoopRzBufferLength
#undef hadoopRzBufferGet
#undef hadoopRzBufferFree
#undef hdfs_internal
#undef hdfsFS
#undef hdfsFile_internal
#undef hdfsFile
#undef tObjectKind
#undef kObjectKindFile
#undef kObjectKindDirectory
#undef hdfsReadStatistics
#undef hdfsFileInfo
#undef hdfsGetLastError
#undef hdfsCancel
#undef hdfsGetBlockLocations
#undef hdfsFreeBlockLocations
#undef hdfsFind
#undef hdfsCreateSnapshot
#undef hdfsDeleteSnapshot
#undef hdfsRenameSnapshot
#undef hdfsAllowSnapshot
#undef hdfsDisallowSnapshot
#undef hdfsHedgedReadMetrics
#undef hdfsGetHedgedReadMetrics
#undef hdfsFreeHedgedReadMetrics
#undef hdfsStreamBuilderAlloc
#undef hdfsStreamBuilderBuild
