diff options
author | Christian Mueller <christian@lmuc329619u.(none)> | 2011-12-08 18:43:48 +0100 |
---|---|---|
committer | Christian Mueller <christian@lmuc329619u.(none)> | 2011-12-08 18:43:48 +0100 |
commit | 5773404eb801e27179b7c3c7803a990145d6e94a (patch) | |
tree | 4bb9db13fbfb3f72479fd7e6ce342768f299d073 /AudioManagerDaemon/pluginTemplate.h | |
parent | 9826492b0066d47cfa9ba68d6efe737cc3c317a3 (diff) | |
download | audiomanager-5773404eb801e27179b7c3c7803a990145d6e94a.tar.gz |
total rework
no more QT
Diffstat (limited to 'AudioManagerDaemon/pluginTemplate.h')
-rw-r--r-- | AudioManagerDaemon/pluginTemplate.h | 69 |
1 files changed, 0 insertions, 69 deletions
diff --git a/AudioManagerDaemon/pluginTemplate.h b/AudioManagerDaemon/pluginTemplate.h deleted file mode 100644 index 4816c14..0000000 --- a/AudioManagerDaemon/pluginTemplate.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * pluginTemplate.h - * - * Created on: Jul 27, 2011 - * Author: christian - */ - -#ifndef PLUGINTEMPLATE_H_ -#define PLUGINTEMPLATE_H_ - -#include <iostream> -#include <stdio.h> -#include <dirent.h> -#include <dlfcn.h> -#include <libgen.h> -#include <unistd.h> -#include <string> - -#include "audioManagerIncludes.h" - -template<class T>T* getCreateFunction(std::string libname) { - - // cut off directories - char* fileWithPath = const_cast<char*>(libname.c_str()); - std::string libFileName = basename(fileWithPath); - - // cut off "lib" in front and cut off .so end" - std::string createFunctionName = libFileName.substr(3, libFileName.length() - 6) + "Factory"; - DLT_LOG(AudioManager,DLT_LOG_INFO, DLT_STRING("Lib entry point name "),DLT_STRING(createFunctionName.c_str())); - - // open library - void *libraryHandle; - dlerror(); // Clear any existing error - libraryHandle = dlopen(libname.c_str(), RTLD_NOW /*LAZY*/); - const char* dlopen_error = dlerror(); - if (!libraryHandle || dlopen_error) - { - DLT_LOG(AudioManager,DLT_LOG_INFO, DLT_STRING("dlopen failed"),DLT_STRING(dlopen_error)); - return 0; - } - - // get entry point from shared lib - dlerror(); // Clear any existing error - DLT_LOG(AudioManager,DLT_LOG_INFO, DLT_STRING("loading external function with name"),DLT_STRING(createFunctionName.c_str())); - - union - { - void* voidPointer; - T* typedPointer; - } functionPointer; - - // Note: direct cast is not allowed by ISO C++. e.g. - // T* createFunction = reinterpret_cast<T*>(dlsym(libraryHandle, createFunctionName.c_str())); - // compiler warning: "forbids casting between pointer-to-function and pointer-to-object" - - functionPointer.voidPointer = dlsym(libraryHandle, createFunctionName.c_str()); - T* createFunction = functionPointer.typedPointer; - - const char* dlsym_error = dlerror(); - if (!createFunction || dlsym_error) - { - DLT_LOG(AudioManager,DLT_LOG_INFO, DLT_STRING("Failed to load shared lib entry point"),DLT_STRING(dlsym_error)); - } - - return createFunction; -} - - -#endif /* PLUGINTEMPLATE_H_ */ |