diff options
Diffstat (limited to 'base/native_library_mac.mm')
-rw-r--r-- | base/native_library_mac.mm | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/base/native_library_mac.mm b/base/native_library_mac.mm new file mode 100644 index 0000000..f817a01 --- /dev/null +++ b/base/native_library_mac.mm @@ -0,0 +1,38 @@ +// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/native_library.h" + +#import <Carbon/Carbon.h> + +#include "base/file_path.h" +#include "base/scoped_cftyperef.h" + +namespace base { + +// static +NativeLibrary LoadNativeLibrary(const FilePath& library_path) { + scoped_cftyperef<CFURLRef> url(CFURLCreateFromFileSystemRepresentation( + kCFAllocatorDefault, + (const UInt8*)library_path.value().c_str(), + library_path.value().length(), + true)); + if (!url) + return NULL; + + return CFBundleCreate(kCFAllocatorDefault, url.get()); +} + +// static +void UnloadNativeLibrary(NativeLibrary library) { + CFRelease(library); +} + +// static +void* GetFunctionPointerFromNativeLibrary(NativeLibrary library, + NativeLibraryFunctionNameType name) { + return CFBundleGetFunctionPointerForName(library, name); +} + +} // namespace base |