• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "base/memory/scoped_native_library.h"
6 
7 namespace base {
8 
ScopedNativeLibrary()9 ScopedNativeLibrary::ScopedNativeLibrary() : library_(NULL) {
10 }
11 
ScopedNativeLibrary(NativeLibrary library)12 ScopedNativeLibrary::ScopedNativeLibrary(NativeLibrary library)
13     : library_(library) {
14 }
15 
ScopedNativeLibrary(const FilePath & library_path)16 ScopedNativeLibrary::ScopedNativeLibrary(const FilePath& library_path) {
17   library_ = base::LoadNativeLibrary(library_path, NULL);
18 }
19 
~ScopedNativeLibrary()20 ScopedNativeLibrary::~ScopedNativeLibrary() {
21   if (library_)
22     base::UnloadNativeLibrary(library_);
23 }
24 
GetFunctionPointer(const char * function_name) const25 void* ScopedNativeLibrary::GetFunctionPointer(
26     const char* function_name) const {
27   if (!library_)
28     return NULL;
29   return base::GetFunctionPointerFromNativeLibrary(library_, function_name);
30 }
31 
Reset(NativeLibrary library)32 void ScopedNativeLibrary::Reset(NativeLibrary library) {
33   if (library_)
34     base::UnloadNativeLibrary(library_);
35   library_ = library;
36 }
37 
Release()38 NativeLibrary ScopedNativeLibrary::Release() {
39   NativeLibrary result = library_;
40   library_ = NULL;
41   return result;
42 }
43 
44 }  // namespace base
45