- add sources.
[platform/framework/web/crosswalk.git] / src / base / scoped_native_library.cc
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/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