1 /*------------------------------------------------------------------------- 2 * drawElements C++ Base Library 3 * ----------------------------- 4 * 5 * Copyright 2014 The Android Open Source Project 6 * 7 * Licensed under the Apache License, Version 2.0 (the "License"); 8 * you may not use this file except in compliance with the License. 9 * You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, software 14 * distributed under the License is distributed on an "AS IS" BASIS, 15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 * See the License for the specific language governing permissions and 17 * limitations under the License. 18 * 19 *//*! 20 * \file 21 * \brief deDynamicLibrary C++ wrapper. 22 *//*--------------------------------------------------------------------*/ 23 24 #include "deDynamicLibrary.hpp" 25 26 #include <string> 27 #include <stdexcept> 28 29 namespace de 30 { 31 DynamicLibrary(const char * fileName)32DynamicLibrary::DynamicLibrary(const char *fileName) : m_library(nullptr) 33 { 34 m_library = deDynamicLibrary_open(fileName); 35 if (!m_library) 36 throw std::runtime_error(std::string("Failed to open dynamic library: '") + fileName + "'"); 37 } 38 DynamicLibrary(const char * fileNames[])39DynamicLibrary::DynamicLibrary(const char *fileNames[]) : m_library(nullptr) 40 { 41 for (size_t i = 0u; fileNames[i] != nullptr; ++i) 42 { 43 m_library = deDynamicLibrary_open(fileNames[i]); 44 if (m_library) 45 break; 46 } 47 48 if (!m_library) 49 { 50 std::string nameList; 51 for (size_t i = 0u; fileNames[i] != nullptr; ++i) 52 nameList += (nameList.empty() ? "" : ", ") + std::string(fileNames[i]); 53 const std::string msg = "Failed to open dynamic library: tried " + nameList; 54 throw std::runtime_error(msg); 55 } 56 } 57 ~DynamicLibrary(void)58DynamicLibrary::~DynamicLibrary(void) 59 { 60 deDynamicLibrary_close(m_library); 61 } 62 63 } // namespace de 64