Home | History | Annotate | Download | only in memory
      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 
      9 ScopedNativeLibrary::ScopedNativeLibrary() : library_(NULL) {
     10 }
     11 
     12 ScopedNativeLibrary::ScopedNativeLibrary(NativeLibrary library)
     13     : library_(library) {
     14 }
     15 
     16 ScopedNativeLibrary::ScopedNativeLibrary(const FilePath& library_path) {
     17   library_ = base::LoadNativeLibrary(library_path, NULL);
     18 }
     19 
     20 ScopedNativeLibrary::~ScopedNativeLibrary() {
     21   if (library_)
     22     base::UnloadNativeLibrary(library_);
     23 }
     24 
     25 void* ScopedNativeLibrary::GetFunctionPointer(
     26     const char* function_name) const {
     27   if (!library_)
     28     return NULL;
     29   return base::GetFunctionPointerFromNativeLibrary(library_, function_name);
     30 }
     31 
     32 void ScopedNativeLibrary::Reset(NativeLibrary library) {
     33   if (library_)
     34     base::UnloadNativeLibrary(library_);
     35   library_ = library;
     36 }
     37 
     38 NativeLibrary ScopedNativeLibrary::Release() {
     39   NativeLibrary result = library_;
     40   library_ = NULL;
     41   return result;
     42 }
     43 
     44 }  // namespace base
     45