From f40251efc21a4e2db446af73c810d1b063cf84fb Mon Sep 17 00:00:00 2001 From: Nao Pross Date: Mon, 21 Jan 2019 04:00:58 +0100 Subject: Initial commit, add makefile, .gitignore and debug header --- .gitignore | 1 + debug.hpp | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++ include/wrapsdl.hpp | 6 +++++ makefile | 19 +++++++++++++ wrapsdl.cpp | 19 +++++++++++++ 5 files changed, 122 insertions(+) create mode 100644 .gitignore create mode 100644 debug.hpp create mode 100644 include/wrapsdl.hpp create mode 100644 makefile create mode 100644 wrapsdl.cpp diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..378eac2 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +build diff --git a/debug.hpp b/debug.hpp new file mode 100644 index 0000000..16dc5a8 --- /dev/null +++ b/debug.hpp @@ -0,0 +1,77 @@ +#pragma once + +#include +#include + +#ifdef DEBUG + + #warning building in debug mode! + #ifdef __builtin_strrchr + #define __FILENAME__ (\ + __builtin_strrchr(__FILE__, '/') ? \ + __builtin_strrchr(__FILE__, '/') + 1 : __FILE__) + + #define npdebug_fname(); { \ + std::cerr << "[" << __FILENAME__ << ":" << __LINE__ << "] "; \ + } + + #define npdebug(...); { \ + npdebug_fname(); \ + np::va_debug(__VA_ARGS__); \ + } + #else + #define npdebug(...); np::va_debug(__VA_ARGS__); + #endif + + namespace np { + template + inline void va_debug(Args&... args) { + (std::cerr << ... << args) << std::endl; + } + + template + void range_debug(const T& t) { + range_debug("", t); + } + + template + void range_debug(const std::string& msg, const T& t) { + std::string out; + for (auto elem : t) + out += elem += ", "; + + npdebug(msg, out); + } + + template + T inspect(const T& t) { + npdebug(t); + return t; + } + + template + T inspect(const std::string& msg, const T& t) { + npdebug(msg, t); + return t; + } + } +#else + #define npdebug(...) {} + + namespace np { + template + inline void va_debug(Args&... args) {} + + template + inline void range_debug(const T& t) {} + + template + inline void range_debug(const std::string& msg, const T& t) {} + + template + T inspect(const T& t) { return t; } + + template + T inspect(const std::string& msg, const T& t) { return t; } + } +#endif diff --git a/include/wrapsdl.hpp b/include/wrapsdl.hpp new file mode 100644 index 0000000..9b9a72c --- /dev/null +++ b/include/wrapsdl.hpp @@ -0,0 +1,6 @@ +#pragma once + +namespace wrapsdl { + bool initialize(void); + void quit(void); +} \ No newline at end of file diff --git a/makefile b/makefile new file mode 100644 index 0000000..2c13834 --- /dev/null +++ b/makefile @@ -0,0 +1,19 @@ +# Compiler +CPP := c++ +CFLAGS := -Wall -pedantic -std=c++17 -fPIC -shared -I include -DDEBUG +LFLAGS := -lSDL2 + +SRCS := $(wildcard *.cpp) +OBJS := $(patsubst %.cpp,build/%.o,$(SRCS)) + +# Recipes +all: build/libwrapsdl2.so + +build/libwrapsdl2.so: $(OBJS) + $(CPP) $(CFLAGS) -o $@ $(LFLAGS) $(OBJS) + +build/%.o: %.cpp build + $(CPP) $(CFLAGS) -o $@ -c $< + +build: + mkdir -p build diff --git a/wrapsdl.cpp b/wrapsdl.cpp new file mode 100644 index 0000000..e91ec8c --- /dev/null +++ b/wrapsdl.cpp @@ -0,0 +1,19 @@ +#include "wrapsdl.hpp" +#include "debug.hpp" + +extern "C" { +#include +} + +bool wrapsdl::initialize(void) { + if (SDL_InitSubSystem(SDL_INIT_VIDEO) < 0) { + npdebug("failed to initialize sdl video subsystem"); + return false; + } + + return true; +} + +void wrapsdl::quit(void) { + SDL_Quit(); +} -- cgit v1.2.1