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 29namespace de 30{ 31 32DynamicLibrary::DynamicLibrary (const char* fileName) 33 : m_library(nullptr) 34{ 35 m_library = deDynamicLibrary_open(fileName); 36 if (!m_library) 37 throw std::runtime_error(std::string("Failed to open dynamic library: '") + fileName + "'"); 38} 39 40DynamicLibrary::DynamicLibrary (const char* fileNames[]) 41 : m_library(nullptr) 42{ 43 for (size_t i = 0u; fileNames[i] != nullptr; ++i) 44 { 45 m_library = deDynamicLibrary_open(fileNames[i]); 46 if (m_library) 47 break; 48 } 49 50 if (!m_library) 51 { 52 std::string nameList; 53 for (size_t i = 0u; fileNames[i] != nullptr; ++i) 54 nameList += (nameList.empty() ? "" : ", ") + std::string(fileNames[i]); 55 const std::string msg = "Failed to open dynamic library: tried " + nameList; 56 throw std::runtime_error(msg); 57 } 58} 59 60DynamicLibrary::~DynamicLibrary (void) 61{ 62 deDynamicLibrary_close(m_library); 63} 64 65} // de 66