1*6777b538SAndroid Build Coastguard Worker // Copyright 2011 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker #include "base/scoped_native_library.h" 6*6777b538SAndroid Build Coastguard Worker 7*6777b538SAndroid Build Coastguard Worker namespace base { 8*6777b538SAndroid Build Coastguard Worker Free(NativeLibrary library)9*6777b538SAndroid Build Coastguard Workervoid NativeLibraryTraits::Free(NativeLibrary library) { 10*6777b538SAndroid Build Coastguard Worker UnloadNativeLibrary(library); 11*6777b538SAndroid Build Coastguard Worker } 12*6777b538SAndroid Build Coastguard Worker 13*6777b538SAndroid Build Coastguard Worker using BaseClass = ScopedGeneric<NativeLibrary, NativeLibraryTraits>; 14*6777b538SAndroid Build Coastguard Worker ScopedNativeLibrary()15*6777b538SAndroid Build Coastguard WorkerScopedNativeLibrary::ScopedNativeLibrary() : BaseClass(), error_() {} 16*6777b538SAndroid Build Coastguard Worker 17*6777b538SAndroid Build Coastguard Worker ScopedNativeLibrary::~ScopedNativeLibrary() = default; 18*6777b538SAndroid Build Coastguard Worker ScopedNativeLibrary(NativeLibrary library)19*6777b538SAndroid Build Coastguard WorkerScopedNativeLibrary::ScopedNativeLibrary(NativeLibrary library) 20*6777b538SAndroid Build Coastguard Worker : BaseClass(library), error_() {} 21*6777b538SAndroid Build Coastguard Worker ScopedNativeLibrary(const FilePath & library_path)22*6777b538SAndroid Build Coastguard WorkerScopedNativeLibrary::ScopedNativeLibrary(const FilePath& library_path) 23*6777b538SAndroid Build Coastguard Worker : ScopedNativeLibrary() { 24*6777b538SAndroid Build Coastguard Worker reset(LoadNativeLibrary(library_path, &error_)); 25*6777b538SAndroid Build Coastguard Worker } 26*6777b538SAndroid Build Coastguard Worker ScopedNativeLibrary(ScopedNativeLibrary && scoped_library)27*6777b538SAndroid Build Coastguard WorkerScopedNativeLibrary::ScopedNativeLibrary(ScopedNativeLibrary&& scoped_library) 28*6777b538SAndroid Build Coastguard Worker : BaseClass(scoped_library.release()), error_() {} 29*6777b538SAndroid Build Coastguard Worker GetFunctionPointer(const char * function_name) const30*6777b538SAndroid Build Coastguard Workervoid* ScopedNativeLibrary::GetFunctionPointer(const char* function_name) const { 31*6777b538SAndroid Build Coastguard Worker if (!is_valid()) 32*6777b538SAndroid Build Coastguard Worker return nullptr; 33*6777b538SAndroid Build Coastguard Worker return GetFunctionPointerFromNativeLibrary(get(), function_name); 34*6777b538SAndroid Build Coastguard Worker } 35*6777b538SAndroid Build Coastguard Worker GetError() const36*6777b538SAndroid Build Coastguard Workerconst NativeLibraryLoadError* ScopedNativeLibrary::GetError() const { 37*6777b538SAndroid Build Coastguard Worker return &error_; 38*6777b538SAndroid Build Coastguard Worker } 39*6777b538SAndroid Build Coastguard Worker 40*6777b538SAndroid Build Coastguard Worker } // namespace base 41