diff --git a/BorMakefile b/BorMakefile index c4678f5..caa66cf 100644 --- a/BorMakefile +++ b/BorMakefile @@ -66,11 +66,12 @@ clean: del /f /q src\dialog\messagebox.obj del /f /q src\abstract\time.obj del /f /q src\abstract\directory.obj + del /f /q src\abstract\dynamic.obj del /f /q src\backend\gdi.obj del /f /q src\Mw.dll -src\Mw.dll: src\core.obj src\draw.obj src\string.obj src\text.obj src\default.obj src\lowlevel.obj src\error.obj src\unicode.obj src\color.obj external\stb_ds.obj external\stb_image.obj external\stb_truetype.obj src\icon\info.obj src\icon\note.obj src\icon\warning.obj src\icon\error.obj src\icon\news.obj src\icon\directory.obj src\icon\file.obj src\icon\back.obj src\icon\forward.obj src\icon\up.obj src\icon\computer.obj src\icon\search.obj src\icon\down.obj src\icon\left.obj src\icon\right.obj src\icon\clock.obj src\cursor\default.obj src\cursor\cross.obj src\cursor\text.obj src\cursor\hidden.obj src\cursor\arrow.obj src\widget\button.obj src\widget\frame.obj src\widget\opengl.obj src\widget\window.obj src\widget\menu.obj src\widget\entry.obj src\widget\submenu.obj src\widget\viewport.obj src\widget\image.obj src\widget\scrollbar.obj src\widget\checkbox.obj src\widget\label.obj src\widget\listbox.obj src\widget\numberentry.obj src\widget\progressbar.obj src\widget\radiobox.obj src\widget\combobox.obj src\font\boldttf.obj src\font\ttf.obj src\font\boldfont.obj src\font\font.obj src\dialog\filechooser.obj src\dialog\colorpicker.obj src\dialog\messagebox.obj src\abstract\time.obj src\abstract\directory.obj src\backend\gdi.obj - $(LD) $(LDFLAGS) -e$@ src\core.obj src\draw.obj src\string.obj src\text.obj src\default.obj src\lowlevel.obj src\error.obj src\unicode.obj src\color.obj external\stb_ds.obj external\stb_image.obj external\stb_truetype.obj src\icon\info.obj src\icon\note.obj src\icon\warning.obj src\icon\error.obj src\icon\news.obj src\icon\directory.obj src\icon\file.obj src\icon\back.obj src\icon\forward.obj src\icon\up.obj src\icon\computer.obj src\icon\search.obj src\icon\down.obj src\icon\left.obj src\icon\right.obj src\icon\clock.obj src\cursor\default.obj src\cursor\cross.obj src\cursor\text.obj src\cursor\hidden.obj src\cursor\arrow.obj src\widget\button.obj src\widget\frame.obj src\widget\opengl.obj src\widget\window.obj src\widget\menu.obj src\widget\entry.obj src\widget\submenu.obj src\widget\viewport.obj src\widget\image.obj src\widget\scrollbar.obj src\widget\checkbox.obj src\widget\label.obj src\widget\listbox.obj src\widget\numberentry.obj src\widget\progressbar.obj src\widget\radiobox.obj src\widget\combobox.obj src\font\boldttf.obj src\font\ttf.obj src\font\boldfont.obj src\font\font.obj src\dialog\filechooser.obj src\dialog\colorpicker.obj src\dialog\messagebox.obj src\abstract\time.obj src\abstract\directory.obj src\backend\gdi.obj -lopengl32.lib -lgdi32.lib -luser32.lib +src\Mw.dll: src\core.obj src\draw.obj src\string.obj src\text.obj src\default.obj src\lowlevel.obj src\error.obj src\unicode.obj src\color.obj external\stb_ds.obj external\stb_image.obj external\stb_truetype.obj src\icon\info.obj src\icon\note.obj src\icon\warning.obj src\icon\error.obj src\icon\news.obj src\icon\directory.obj src\icon\file.obj src\icon\back.obj src\icon\forward.obj src\icon\up.obj src\icon\computer.obj src\icon\search.obj src\icon\down.obj src\icon\left.obj src\icon\right.obj src\icon\clock.obj src\cursor\default.obj src\cursor\cross.obj src\cursor\text.obj src\cursor\hidden.obj src\cursor\arrow.obj src\widget\button.obj src\widget\frame.obj src\widget\opengl.obj src\widget\window.obj src\widget\menu.obj src\widget\entry.obj src\widget\submenu.obj src\widget\viewport.obj src\widget\image.obj src\widget\scrollbar.obj src\widget\checkbox.obj src\widget\label.obj src\widget\listbox.obj src\widget\numberentry.obj src\widget\progressbar.obj src\widget\radiobox.obj src\widget\combobox.obj src\font\boldttf.obj src\font\ttf.obj src\font\boldfont.obj src\font\font.obj src\dialog\filechooser.obj src\dialog\colorpicker.obj src\dialog\messagebox.obj src\abstract\time.obj src\abstract\directory.obj src\abstract\dynamic.obj src\backend\gdi.obj + $(LD) $(LDFLAGS) -e$@ src\core.obj src\draw.obj src\string.obj src\text.obj src\default.obj src\lowlevel.obj src\error.obj src\unicode.obj src\color.obj external\stb_ds.obj external\stb_image.obj external\stb_truetype.obj src\icon\info.obj src\icon\note.obj src\icon\warning.obj src\icon\error.obj src\icon\news.obj src\icon\directory.obj src\icon\file.obj src\icon\back.obj src\icon\forward.obj src\icon\up.obj src\icon\computer.obj src\icon\search.obj src\icon\down.obj src\icon\left.obj src\icon\right.obj src\icon\clock.obj src\cursor\default.obj src\cursor\cross.obj src\cursor\text.obj src\cursor\hidden.obj src\cursor\arrow.obj src\widget\button.obj src\widget\frame.obj src\widget\opengl.obj src\widget\window.obj src\widget\menu.obj src\widget\entry.obj src\widget\submenu.obj src\widget\viewport.obj src\widget\image.obj src\widget\scrollbar.obj src\widget\checkbox.obj src\widget\label.obj src\widget\listbox.obj src\widget\numberentry.obj src\widget\progressbar.obj src\widget\radiobox.obj src\widget\combobox.obj src\font\boldttf.obj src\font\ttf.obj src\font\boldfont.obj src\font\font.obj src\dialog\filechooser.obj src\dialog\colorpicker.obj src\dialog\messagebox.obj src\abstract\time.obj src\abstract\directory.obj src\abstract\dynamic.obj src\backend\gdi.obj -lopengl32.lib -lgdi32.lib -luser32.lib implib src\Mw.lib src\Mw.dll .c.obj: diff --git a/NTMakefile b/NTMakefile index ba6421d..573034c 100644 --- a/NTMakefile +++ b/NTMakefile @@ -66,11 +66,12 @@ clean: del /f /q src\dialog\messagebox.obj del /f /q src\abstract\time.obj del /f /q src\abstract\directory.obj + del /f /q src\abstract\dynamic.obj del /f /q src\backend\gdi.obj del /f /q src\Mw.dll -src\Mw.dll: src\core.obj src\draw.obj src\string.obj src\text.obj src\default.obj src\lowlevel.obj src\error.obj src\unicode.obj src\color.obj external\stb_ds.obj external\stb_image.obj external\stb_truetype.obj src\icon\info.obj src\icon\note.obj src\icon\warning.obj src\icon\error.obj src\icon\news.obj src\icon\directory.obj src\icon\file.obj src\icon\back.obj src\icon\forward.obj src\icon\up.obj src\icon\computer.obj src\icon\search.obj src\icon\down.obj src\icon\left.obj src\icon\right.obj src\icon\clock.obj src\cursor\default.obj src\cursor\cross.obj src\cursor\text.obj src\cursor\hidden.obj src\cursor\arrow.obj src\widget\button.obj src\widget\frame.obj src\widget\opengl.obj src\widget\window.obj src\widget\menu.obj src\widget\entry.obj src\widget\submenu.obj src\widget\viewport.obj src\widget\image.obj src\widget\scrollbar.obj src\widget\checkbox.obj src\widget\label.obj src\widget\listbox.obj src\widget\numberentry.obj src\widget\progressbar.obj src\widget\radiobox.obj src\widget\combobox.obj src\font\boldttf.obj src\font\ttf.obj src\font\boldfont.obj src\font\font.obj src\dialog\filechooser.obj src\dialog\colorpicker.obj src\dialog\messagebox.obj src\abstract\time.obj src\abstract\directory.obj src\backend\gdi.obj - $(LD) $(LDFLAGS) /OUT:$@ src\core.obj src\draw.obj src\string.obj src\text.obj src\default.obj src\lowlevel.obj src\error.obj src\unicode.obj src\color.obj external\stb_ds.obj external\stb_image.obj external\stb_truetype.obj src\icon\info.obj src\icon\note.obj src\icon\warning.obj src\icon\error.obj src\icon\news.obj src\icon\directory.obj src\icon\file.obj src\icon\back.obj src\icon\forward.obj src\icon\up.obj src\icon\computer.obj src\icon\search.obj src\icon\down.obj src\icon\left.obj src\icon\right.obj src\icon\clock.obj src\cursor\default.obj src\cursor\cross.obj src\cursor\text.obj src\cursor\hidden.obj src\cursor\arrow.obj src\widget\button.obj src\widget\frame.obj src\widget\opengl.obj src\widget\window.obj src\widget\menu.obj src\widget\entry.obj src\widget\submenu.obj src\widget\viewport.obj src\widget\image.obj src\widget\scrollbar.obj src\widget\checkbox.obj src\widget\label.obj src\widget\listbox.obj src\widget\numberentry.obj src\widget\progressbar.obj src\widget\radiobox.obj src\widget\combobox.obj src\font\boldttf.obj src\font\ttf.obj src\font\boldfont.obj src\font\font.obj src\dialog\filechooser.obj src\dialog\colorpicker.obj src\dialog\messagebox.obj src\abstract\time.obj src\abstract\directory.obj src\backend\gdi.obj opengl32.lib gdi32.lib user32.lib +src\Mw.dll: src\core.obj src\draw.obj src\string.obj src\text.obj src\default.obj src\lowlevel.obj src\error.obj src\unicode.obj src\color.obj external\stb_ds.obj external\stb_image.obj external\stb_truetype.obj src\icon\info.obj src\icon\note.obj src\icon\warning.obj src\icon\error.obj src\icon\news.obj src\icon\directory.obj src\icon\file.obj src\icon\back.obj src\icon\forward.obj src\icon\up.obj src\icon\computer.obj src\icon\search.obj src\icon\down.obj src\icon\left.obj src\icon\right.obj src\icon\clock.obj src\cursor\default.obj src\cursor\cross.obj src\cursor\text.obj src\cursor\hidden.obj src\cursor\arrow.obj src\widget\button.obj src\widget\frame.obj src\widget\opengl.obj src\widget\window.obj src\widget\menu.obj src\widget\entry.obj src\widget\submenu.obj src\widget\viewport.obj src\widget\image.obj src\widget\scrollbar.obj src\widget\checkbox.obj src\widget\label.obj src\widget\listbox.obj src\widget\numberentry.obj src\widget\progressbar.obj src\widget\radiobox.obj src\widget\combobox.obj src\font\boldttf.obj src\font\ttf.obj src\font\boldfont.obj src\font\font.obj src\dialog\filechooser.obj src\dialog\colorpicker.obj src\dialog\messagebox.obj src\abstract\time.obj src\abstract\directory.obj src\abstract\dynamic.obj src\backend\gdi.obj + $(LD) $(LDFLAGS) /OUT:$@ src\core.obj src\draw.obj src\string.obj src\text.obj src\default.obj src\lowlevel.obj src\error.obj src\unicode.obj src\color.obj external\stb_ds.obj external\stb_image.obj external\stb_truetype.obj src\icon\info.obj src\icon\note.obj src\icon\warning.obj src\icon\error.obj src\icon\news.obj src\icon\directory.obj src\icon\file.obj src\icon\back.obj src\icon\forward.obj src\icon\up.obj src\icon\computer.obj src\icon\search.obj src\icon\down.obj src\icon\left.obj src\icon\right.obj src\icon\clock.obj src\cursor\default.obj src\cursor\cross.obj src\cursor\text.obj src\cursor\hidden.obj src\cursor\arrow.obj src\widget\button.obj src\widget\frame.obj src\widget\opengl.obj src\widget\window.obj src\widget\menu.obj src\widget\entry.obj src\widget\submenu.obj src\widget\viewport.obj src\widget\image.obj src\widget\scrollbar.obj src\widget\checkbox.obj src\widget\label.obj src\widget\listbox.obj src\widget\numberentry.obj src\widget\progressbar.obj src\widget\radiobox.obj src\widget\combobox.obj src\font\boldttf.obj src\font\ttf.obj src\font\boldfont.obj src\font\font.obj src\dialog\filechooser.obj src\dialog\colorpicker.obj src\dialog\messagebox.obj src\abstract\time.obj src\abstract\directory.obj src\abstract\dynamic.obj src\backend\gdi.obj opengl32.lib gdi32.lib user32.lib .c.obj: diff --git a/WatMakefile b/WatMakefile index d7ed1bb..95b389b 100644 --- a/WatMakefile +++ b/WatMakefile @@ -65,11 +65,12 @@ clean: .SYMBOLIC %erase src/dialog/messagebox.obj %erase src/abstract/time.obj %erase src/abstract/directory.obj + %erase src/abstract/dynamic.obj %erase src/backend/gdi.obj %erase src/Mw.dll -src/Mw.dll: src/core.obj src/draw.obj src/string.obj src/text.obj src/default.obj src/lowlevel.obj src/error.obj src/unicode.obj src/color.obj external/stb_ds.obj external/stb_image.obj external/stb_truetype.obj src/icon/info.obj src/icon/note.obj src/icon/warning.obj src/icon/error.obj src/icon/news.obj src/icon/directory.obj src/icon/file.obj src/icon/back.obj src/icon/forward.obj src/icon/up.obj src/icon/computer.obj src/icon/search.obj src/icon/down.obj src/icon/left.obj src/icon/right.obj src/icon/clock.obj src/cursor/default.obj src/cursor/cross.obj src/cursor/text.obj src/cursor/hidden.obj src/cursor/arrow.obj src/widget/button.obj src/widget/frame.obj src/widget/opengl.obj src/widget/window.obj src/widget/menu.obj src/widget/entry.obj src/widget/submenu.obj src/widget/viewport.obj src/widget/image.obj src/widget/scrollbar.obj src/widget/checkbox.obj src/widget/label.obj src/widget/listbox.obj src/widget/numberentry.obj src/widget/progressbar.obj src/widget/radiobox.obj src/widget/combobox.obj src/font/boldttf.obj src/font/ttf.obj src/font/boldfont.obj src/font/font.obj src/dialog/filechooser.obj src/dialog/colorpicker.obj src/dialog/messagebox.obj src/abstract/time.obj src/abstract/directory.obj src/backend/gdi.obj - $(LD) $(LDFLAGS) option implib=src/Mw.lib name $@ file src/core.obj file src/draw.obj file src/string.obj file src/text.obj file src/default.obj file src/lowlevel.obj file src/error.obj file src/unicode.obj file src/color.obj file external/stb_ds.obj file external/stb_image.obj file external/stb_truetype.obj file src/icon/info.obj file src/icon/note.obj file src/icon/warning.obj file src/icon/error.obj file src/icon/news.obj file src/icon/directory.obj file src/icon/file.obj file src/icon/back.obj file src/icon/forward.obj file src/icon/up.obj file src/icon/computer.obj file src/icon/search.obj file src/icon/down.obj file src/icon/left.obj file src/icon/right.obj file src/icon/clock.obj file src/cursor/default.obj file src/cursor/cross.obj file src/cursor/text.obj file src/cursor/hidden.obj file src/cursor/arrow.obj file src/widget/button.obj file src/widget/frame.obj file src/widget/opengl.obj file src/widget/window.obj file src/widget/menu.obj file src/widget/entry.obj file src/widget/submenu.obj file src/widget/viewport.obj file src/widget/image.obj file src/widget/scrollbar.obj file src/widget/checkbox.obj file src/widget/label.obj file src/widget/listbox.obj file src/widget/numberentry.obj file src/widget/progressbar.obj file src/widget/radiobox.obj file src/widget/combobox.obj file src/font/boldttf.obj file src/font/ttf.obj file src/font/boldfont.obj file src/font/font.obj file src/dialog/filechooser.obj file src/dialog/colorpicker.obj file src/dialog/messagebox.obj file src/abstract/time.obj file src/abstract/directory.obj file src/backend/gdi.obj library clib3r.lib library opengl32.lib library gdi32.lib library user32.lib +src/Mw.dll: src/core.obj src/draw.obj src/string.obj src/text.obj src/default.obj src/lowlevel.obj src/error.obj src/unicode.obj src/color.obj external/stb_ds.obj external/stb_image.obj external/stb_truetype.obj src/icon/info.obj src/icon/note.obj src/icon/warning.obj src/icon/error.obj src/icon/news.obj src/icon/directory.obj src/icon/file.obj src/icon/back.obj src/icon/forward.obj src/icon/up.obj src/icon/computer.obj src/icon/search.obj src/icon/down.obj src/icon/left.obj src/icon/right.obj src/icon/clock.obj src/cursor/default.obj src/cursor/cross.obj src/cursor/text.obj src/cursor/hidden.obj src/cursor/arrow.obj src/widget/button.obj src/widget/frame.obj src/widget/opengl.obj src/widget/window.obj src/widget/menu.obj src/widget/entry.obj src/widget/submenu.obj src/widget/viewport.obj src/widget/image.obj src/widget/scrollbar.obj src/widget/checkbox.obj src/widget/label.obj src/widget/listbox.obj src/widget/numberentry.obj src/widget/progressbar.obj src/widget/radiobox.obj src/widget/combobox.obj src/font/boldttf.obj src/font/ttf.obj src/font/boldfont.obj src/font/font.obj src/dialog/filechooser.obj src/dialog/colorpicker.obj src/dialog/messagebox.obj src/abstract/time.obj src/abstract/directory.obj src/abstract/dynamic.obj src/backend/gdi.obj + $(LD) $(LDFLAGS) option implib=src/Mw.lib name $@ file src/core.obj file src/draw.obj file src/string.obj file src/text.obj file src/default.obj file src/lowlevel.obj file src/error.obj file src/unicode.obj file src/color.obj file external/stb_ds.obj file external/stb_image.obj file external/stb_truetype.obj file src/icon/info.obj file src/icon/note.obj file src/icon/warning.obj file src/icon/error.obj file src/icon/news.obj file src/icon/directory.obj file src/icon/file.obj file src/icon/back.obj file src/icon/forward.obj file src/icon/up.obj file src/icon/computer.obj file src/icon/search.obj file src/icon/down.obj file src/icon/left.obj file src/icon/right.obj file src/icon/clock.obj file src/cursor/default.obj file src/cursor/cross.obj file src/cursor/text.obj file src/cursor/hidden.obj file src/cursor/arrow.obj file src/widget/button.obj file src/widget/frame.obj file src/widget/opengl.obj file src/widget/window.obj file src/widget/menu.obj file src/widget/entry.obj file src/widget/submenu.obj file src/widget/viewport.obj file src/widget/image.obj file src/widget/scrollbar.obj file src/widget/checkbox.obj file src/widget/label.obj file src/widget/listbox.obj file src/widget/numberentry.obj file src/widget/progressbar.obj file src/widget/radiobox.obj file src/widget/combobox.obj file src/font/boldttf.obj file src/font/ttf.obj file src/font/boldfont.obj file src/font/font.obj file src/dialog/filechooser.obj file src/dialog/colorpicker.obj file src/dialog/messagebox.obj file src/abstract/time.obj file src/abstract/directory.obj file src/abstract/dynamic.obj file src/backend/gdi.obj library clib3r.lib library opengl32.lib library gdi32.lib library user32.lib @@ -191,5 +192,7 @@ src/abstract/time.obj: src/abstract/time.c $(CC) $(CFLAGS) -fo=$@ $< src/abstract/directory.obj: src/abstract/directory.c $(CC) $(CFLAGS) -fo=$@ $< +src/abstract/dynamic.obj: src/abstract/dynamic.c + $(CC) $(CFLAGS) -fo=$@ $< src/backend/gdi.obj: src/backend/gdi.c $(CC) $(CFLAGS) -fo=$@ $< diff --git a/include/Mw/Abstract/Dynamic.h b/include/Mw/Abstract/Dynamic.h new file mode 100644 index 0000000..4f75419 --- /dev/null +++ b/include/Mw/Abstract/Dynamic.h @@ -0,0 +1,39 @@ +/* $Id$ */ +/*! + * @file Mw/Abstract/iDynamic.h + * @brief Time + */ +#ifndef __MW_ABSTRACT_DYNAMIC_H__ +#define __MW_ABSTRACT_DYNAMIC_H__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/*! + * @brief Opens a dynamic library + * @param path Path + * @return Handle + */ +MWDECL void* MwDynamicOpen(const char* path); + +/*! + * @brief Gets a symbol from the dynamic library + * @param handle Handle + * @param symbol Symbol + */ +MWDECL void* MwDynamicSymbol(void* handle, const char* symbol); + +/*! + * @brief Closes a dynamic library + * @param handle Handle + */ +MWDECL void MwDynamicClose(void* handle); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/Mw/Milsko.h b/include/Mw/Milsko.h index 53efe4b..60f25bb 100644 --- a/include/Mw/Milsko.h +++ b/include/Mw/Milsko.h @@ -20,6 +20,7 @@ #include #include +#include #include #include diff --git a/src/abstract/dynamic.c b/src/abstract/dynamic.c new file mode 100644 index 0000000..f541820 --- /dev/null +++ b/src/abstract/dynamic.c @@ -0,0 +1,26 @@ +/* $Id$ */ +#include + +void* MwDynamicOpen(const char* path) { +#ifdef _WIN32 + return LoadLibrary(path); +#else + return dlopen(path, RTLD_LAZY | RTLD_LOCAL); +#endif +} + +void* MwDynamicSymbol(void* handle, const char* symbol) { +#ifdef _WIN32 + return GetProcAddress(handle, symbol); +#else + return dlsym(handle, symbol); +#endif +} + +void MwDynamicClose(void* handle) { +#ifdef _WIN32 + FreeLibrary(handle); +#else + dlclose(handle); +#endif +}