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