summaryrefslogtreecommitdiff
path: root/lib/boblight.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/boblight.h')
-rw-r--r--lib/boblight.h103
1 files changed, 0 insertions, 103 deletions
diff --git a/lib/boblight.h b/lib/boblight.h
deleted file mode 100644
index c596357..0000000
--- a/lib/boblight.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * boblight
- * Copyright (C) Bob 2009
- *
- * boblight is free software: you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * boblight is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- * See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-//if you define BOBLIGHT_DLOPEN, all boblight functions are defined as pointers
-//you can then call boblight_loadlibrary to load libboblight with dlopen and the function pointers with dlsym
-//if you pass NULL to boblight_loadlibrary's first argument, the default filename for libboblight is used
-//if boblight_loadlibrary returns NULL, dlopen and dlsym went ok, if not it returns a char* from dlerror
-
-//if you want to use the boblight functions from multiple files, you can define BOBLIGHT_DLOPEN in one file,
-//and define BOBLIGHT_DLOPEN_EXTERN in the other file, the functionpointers are then defined as extern
-
-#ifndef LIBBOBLIGHT
-#define LIBBOBLIGHT
-
- #if !defined(BOBLIGHT_DLOPEN) && !defined(BOBLIGHT_DLOPEN_EXTERN)
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- //generate normal prototypes
- #define BOBLIGHT_FUNCTION(returnvalue, name, arguments) returnvalue name arguments
- #include "boblight-functions.h"
- #undef BOBLIGHT_FUNCTION
-
- #ifdef __cplusplus
- }
- #endif
-
- #elif defined(BOBLIGHT_DLOPEN)
-
- #include <dlfcn.h>
- #include <stddef.h>
-
- //generate function pointers
- #define BOBLIGHT_FUNCTION(returnvalue, name, arguments) returnvalue (* name ) arguments = NULL
- #include "boblight-functions.h"
- #undef BOBLIGHT_FUNCTION
-
- #ifdef __cplusplus
- #define BOBLIGHT_CAST(value) reinterpret_cast<value>
- #else
- #define BOBLIGHT_CAST(value) (value)
- #endif
-
- //gets a functionpointer from dlsym, and returns char* from dlerror if it didn't work
- #define BOBLIGHT_FUNCTION(returnvalue, name, arguments) \
- name = BOBLIGHT_CAST(returnvalue (*) arguments)(dlsym(p_boblight, #name)); \
- { char* error = dlerror(); if (error) return error; }
-
- void* p_boblight = NULL; //where we put the lib
-
- //load function pointers
- char* boblight_loadlibrary(const char* filename)
- {
- if (filename == NULL)
- filename = "libboblight.so";
-
- if (p_boblight != NULL)
- {
- dlclose(p_boblight);
- p_boblight = NULL;
- }
-
- p_boblight = dlopen(filename, RTLD_NOW);
- if (p_boblight == NULL)
- return dlerror();
-
- //generate dlsym lines
- #include "boblight-functions.h"
-
- return NULL;
- }
- #undef BOBLIGHT_FUNCTION
- #undef BOBLIGHT_CAST
-
- //you can define BOBLIGHT_DLOPEN_EXTERN when you load the library in another file
- #elif defined(BOBLIGHT_DLOPEN_EXTERN)
-
- extern char* boblight_loadlibrary(const char* filename);
- extern void* p_boblight;
- #define BOBLIGHT_FUNCTION(returnvalue, name, arguments) extern returnvalue (* name ) arguments
- #include "boblight-functions.h"
- #undef BOBLIGHT_FUNCTION
-
- #endif //BOBLIGHT_DLOPEN_EXTERN
-#endif //LIBBOBLIGHT
-