40 lines
1.7 KiB
C
40 lines
1.7 KiB
C
![]() |
// 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.
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
#include "arrow/filesystem/filesystem.h"
|
||
|
|
||
|
namespace arrow::fs {
|
||
|
extern "C" {
|
||
|
|
||
|
// ARROW_FORCE_EXPORT ensures this function's visibility is
|
||
|
// _declspec(dllexport)/[[gnu::visibility("default")]] even when
|
||
|
// this header is #included by a non-arrow source, as in a third
|
||
|
// party filesystem implementation.
|
||
|
ARROW_FORCE_EXPORT void* arrow_filesystem_get_registry() {
|
||
|
// In the case where libarrow is linked statically both to the executable and to a
|
||
|
// dynamically loaded filesystem implementation library, the library contains a
|
||
|
// duplicate definition of the registry into which the library's instances of
|
||
|
// FileSystemRegistrar insert their factories. This function is made accessible to
|
||
|
// dlsym/GetProcAddress to enable detection of such duplicate registries and merging
|
||
|
// into the registry accessible to the executable.
|
||
|
return internal::GetFileSystemRegistry();
|
||
|
}
|
||
|
}
|
||
|
} // namespace arrow::fs
|