10ea406920af8313875866f13c9104129c08b2d76Jeff Tinker/*
20ea406920af8313875866f13c9104129c08b2d76Jeff Tinker * Copyright (C) 2017 The Android Open Source Project
30ea406920af8313875866f13c9104129c08b2d76Jeff Tinker *
40ea406920af8313875866f13c9104129c08b2d76Jeff Tinker * Licensed under the Apache License, Version 2.0 (the "License");
50ea406920af8313875866f13c9104129c08b2d76Jeff Tinker * you may not use this file except in compliance with the License.
60ea406920af8313875866f13c9104129c08b2d76Jeff Tinker * You may obtain a copy of the License at
70ea406920af8313875866f13c9104129c08b2d76Jeff Tinker *
80ea406920af8313875866f13c9104129c08b2d76Jeff Tinker *      http://www.apache.org/licenses/LICENSE-2.0
90ea406920af8313875866f13c9104129c08b2d76Jeff Tinker *
100ea406920af8313875866f13c9104129c08b2d76Jeff Tinker * Unless required by applicable law or agreed to in writing, software
110ea406920af8313875866f13c9104129c08b2d76Jeff Tinker * distributed under the License is distributed on an "AS IS" BASIS,
120ea406920af8313875866f13c9104129c08b2d76Jeff Tinker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130ea406920af8313875866f13c9104129c08b2d76Jeff Tinker * See the License for the specific language governing permissions and
140ea406920af8313875866f13c9104129c08b2d76Jeff Tinker * limitations under the License.
150ea406920af8313875866f13c9104129c08b2d76Jeff Tinker */
160ea406920af8313875866f13c9104129c08b2d76Jeff Tinker
170ea406920af8313875866f13c9104129c08b2d76Jeff Tinker#ifndef SHARED_LIBRARY_H_
180ea406920af8313875866f13c9104129c08b2d76Jeff Tinker#define SHARED_LIBRARY_H_
190ea406920af8313875866f13c9104129c08b2d76Jeff Tinker
2007770c78e18c5b09ba116fa1e779fe4408c42e3fJiyong Park#include <utils/RefBase.h>
2107770c78e18c5b09ba116fa1e779fe4408c42e3fJiyong Park#include <utils/String8.h>
220ea406920af8313875866f13c9104129c08b2d76Jeff Tinker
2307770c78e18c5b09ba116fa1e779fe4408c42e3fJiyong Parknamespace android {
2407770c78e18c5b09ba116fa1e779fe4408c42e3fJiyong Parknamespace hardware {
2507770c78e18c5b09ba116fa1e779fe4408c42e3fJiyong Parknamespace drm {
2607770c78e18c5b09ba116fa1e779fe4408c42e3fJiyong Parknamespace V1_0 {
2707770c78e18c5b09ba116fa1e779fe4408c42e3fJiyong Parknamespace helper {
2807770c78e18c5b09ba116fa1e779fe4408c42e3fJiyong Park
2907770c78e18c5b09ba116fa1e779fe4408c42e3fJiyong Parkclass SharedLibrary : public RefBase {
300ea406920af8313875866f13c9104129c08b2d76Jeff Tinker   public:
3107770c78e18c5b09ba116fa1e779fe4408c42e3fJiyong Park    explicit SharedLibrary(const String8& path);
320ea406920af8313875866f13c9104129c08b2d76Jeff Tinker    ~SharedLibrary();
330ea406920af8313875866f13c9104129c08b2d76Jeff Tinker
340ea406920af8313875866f13c9104129c08b2d76Jeff Tinker    bool operator!() const;
350ea406920af8313875866f13c9104129c08b2d76Jeff Tinker    void* lookup(const char* symbol) const;
360ea406920af8313875866f13c9104129c08b2d76Jeff Tinker    const char* lastError() const;
370ea406920af8313875866f13c9104129c08b2d76Jeff Tinker
380ea406920af8313875866f13c9104129c08b2d76Jeff Tinker   private:
390ea406920af8313875866f13c9104129c08b2d76Jeff Tinker    void* mLibHandle;
400ea406920af8313875866f13c9104129c08b2d76Jeff Tinker
410ea406920af8313875866f13c9104129c08b2d76Jeff Tinker    SharedLibrary(const SharedLibrary&) = delete;
420ea406920af8313875866f13c9104129c08b2d76Jeff Tinker    void operator=(const SharedLibrary&) = delete;
430ea406920af8313875866f13c9104129c08b2d76Jeff Tinker};
4407770c78e18c5b09ba116fa1e779fe4408c42e3fJiyong Park
4507770c78e18c5b09ba116fa1e779fe4408c42e3fJiyong Park}
4607770c78e18c5b09ba116fa1e779fe4408c42e3fJiyong Park}
4707770c78e18c5b09ba116fa1e779fe4408c42e3fJiyong Park}
4807770c78e18c5b09ba116fa1e779fe4408c42e3fJiyong Park}
4907770c78e18c5b09ba116fa1e779fe4408c42e3fJiyong Park}
500ea406920af8313875866f13c9104129c08b2d76Jeff Tinker
510ea406920af8313875866f13c9104129c08b2d76Jeff Tinker#endif  // SHARED_LIBRARY_H_
52