/**
 * 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.
 */
#define hdfsFileIsOpenForRead libhdfspp_hdfsFileIsOpenForRead
#define hdfsFileIsOpenForWrite libhdfspp_hdfsFileIsOpenForWrite
#define hdfsFileGetReadStatistics libhdfspp_hdfsFileGetReadStatistics
#define hdfsReadStatisticsGetRemoteBytesRead libhdfspp_hdfsReadStatisticsGetRemoteBytesRead
#define hdfsFileClearReadStatistics libhdfspp_hdfsFileClearReadStatistics
#define hdfsFileFreeReadStatistics libhdfspp_hdfsFileFreeReadStatistics
#define hdfsConnectAsUser libhdfspp_hdfsConnectAsUser
#define hdfsConnect libhdfspp_hdfsConnect
#define hdfsConnectAsUserNewInstance libhdfspp_hdfsConnectAsUserNewInstance
#define hdfsConnectNewInstance libhdfspp_hdfsConnectNewInstance
#define hdfsBuilderConnect libhdfspp_hdfsBuilderConnect
#define hdfsNewBuilder libhdfspp_hdfsNewBuilder
#define hdfsBuilderSetForceNewInstance libhdfspp_hdfsBuilderSetForceNewInstance
#define hdfsBuilderSetNameNode libhdfspp_hdfsBuilderSetNameNode
#define hdfsBuilderSetNameNodePort libhdfspp_hdfsBuilderSetNameNodePort
#define hdfsBuilderSetUserName libhdfspp_hdfsBuilderSetUserName
#define hdfsBuilderSetKerbTicketCachePath libhdfspp_hdfsBuilderSetKerbTicketCachePath
#define hdfsFreeBuilder libhdfspp_hdfsFreeBuilder
#define hdfsBuilderConfSetStr libhdfspp_hdfsBuilderConfSetStr
#define hdfsConfGetStr libhdfspp_hdfsConfGetStr
#define hdfsConfGetInt libhdfspp_hdfsConfGetInt
#define hdfsConfStrFree libhdfspp_hdfsConfStrFree
#define hdfsDisconnect libhdfspp_hdfsDisconnect
#define hdfsOpenFile libhdfspp_hdfsOpenFile
#define hdfsTruncateFile libhdfspp_hdfsTruncateFile
#define hdfsUnbufferFile libhdfspp_hdfsUnbufferFile
#define hdfsCloseFile libhdfspp_hdfsCloseFile
#define hdfsExists libhdfspp_hdfsExists
#define hdfsSeek libhdfspp_hdfsSeek
#define hdfsTell libhdfspp_hdfsTell
#define hdfsRead libhdfspp_hdfsRead
#define hdfsPread libhdfspp_hdfsPread
#define hdfsWrite libhdfspp_hdfsWrite
#define hdfsFlush libhdfspp_hdfsFlush
#define hdfsHFlush libhdfspp_hdfsHFlush
#define hdfsHSync libhdfspp_hdfsHSync
#define hdfsAvailable libhdfspp_hdfsAvailable
#define hdfsCopy libhdfspp_hdfsCopy
#define hdfsMove libhdfspp_hdfsMove
#define hdfsDelete libhdfspp_hdfsDelete
#define hdfsRename libhdfspp_hdfsRename
#define hdfsGetWorkingDirectory libhdfspp_hdfsGetWorkingDirectory
#define hdfsSetWorkingDirectory libhdfspp_hdfsSetWorkingDirectory
#define hdfsCreateDirectory libhdfspp_hdfsCreateDirectory
#define hdfsSetReplication libhdfspp_hdfsSetReplication
#define hdfsListDirectory libhdfspp_hdfsListDirectory
#define hdfsGetPathInfo libhdfspp_hdfsGetPathInfo
#define hdfsFreeFileInfo libhdfspp_hdfsFreeFileInfo
#define hdfsFileIsEncrypted libhdfspp_hdfsFileIsEncrypted
#define hdfsGetHosts libhdfspp_hdfsGetHosts
#define hdfsFreeHosts libhdfspp_hdfsFreeHosts
#define hdfsGetDefaultBlockSize libhdfspp_hdfsGetDefaultBlockSize
#define hdfsGetDefaultBlockSizeAtPath libhdfspp_hdfsGetDefaultBlockSizeAtPath
#define hdfsGetCapacity libhdfspp_hdfsGetCapacity
#define hdfsGetUsed libhdfspp_hdfsGetUsed
#define hdfsChown libhdfspp_hdfsChown
#define hdfsChmod libhdfspp_hdfsChmod
#define hdfsUtime libhdfspp_hdfsUtime
#define hadoopRzOptionsAlloc libhdfspp_hadoopRzOptionsAlloc
#define hadoopRzOptionsSetSkipChecksum libhdfspp_hadoopRzOptionsSetSkipChecksum
#define hadoopRzOptionsSetByteBufferPool libhdfspp_hadoopRzOptionsSetByteBufferPool
#define hadoopRzOptionsFree libhdfspp_hadoopRzOptionsFree
#define hadoopReadZero libhdfspp_hadoopReadZero
#define hadoopRzBufferLength libhdfspp_hadoopRzBufferLength
#define hadoopRzBufferGet libhdfspp_hadoopRzBufferGet
#define hadoopRzBufferFree libhdfspp_hadoopRzBufferFree
#define hdfs_internal libhdfspp_hdfs_internal
#define hdfsFS libhdfspp_hdfsFS
#define hdfsFile_internal libhdfspp_hdfsFile_internal
#define hdfsFile libhdfspp_hdfsFile
#define tObjectKind libhdfspp_tObjectKind
#define kObjectKindFile libhdfspp_kObjectKindFile
#define kObjectKindDirectory libhdfspp_kObjectKindDirectory
#define hdfsReadStatistics libhdfspp_hdfsReadStatistics
#define hdfsFileInfo libhdfspp_hdfsFileInfo
#define hdfsGetLastError libhdfspp_hdfsGetLastError
#define hdfsCancel libhdfspp_hdfsCancel
#define hdfsGetBlockLocations libhdfspp_hdfsGetBlockLocations
#define hdfsFreeBlockLocations libhdfspp_hdfsFreeBlockLocations
#define hdfsFind libhdfspp_hdfsFind
#define hdfsCreateSnapshot libhdfspp_hdfsCreateSnapshot
#define hdfsDeleteSnapshot libhdfspp_hdfsDeleteSnapshot
#define hdfsRenameSnapshot libhdfspp_hdfsRenameSnapshot
#define hdfsAllowSnapshot libhdfspp_hdfsAllowSnapshot
#define hdfsDisallowSnapshot libhdfspp_hdfsDisallowSnapshot
#define hdfsHedgedReadMetrics libhdfspp_hdfsHedgedReadMetrics
#define hdfsGetHedgedReadMetrics libhdfspp_hdfsGetHedgedReadMetrics
#define hdfsFreeHedgedReadMetrics libhdfspp_hdfsFreeHedgedReadMetrics
#define hdfsStreamBuilderAlloc libhdfspp_hdfsStreamBuilderAlloc
#define hdfsStreamBuilderBuild libhdfspp_hdfsStreamBuilderBuild
