Merge branch 'mingw-dev'

Fix exception specification compile error in C++17 (with -std=c++17 by
GCC 6.1)
This commit is contained in:
Kirigaya Kazuto 2017-07-21 12:01:41 +08:00
commit 7d9729b530
15 changed files with 96 additions and 48 deletions

View File

@ -11,7 +11,7 @@ std::string ErrorViewer::getError() const
return str;
}
const char * ErrorViewer::what() const throw()
const char * ErrorViewer::what() const noexcept
{
return str.c_str();
}

View File

@ -7,7 +7,7 @@ class ErrorViewer : public std::exception
public:
void fetch();
std::string getError() const;
const char* what() const throw() override;
const char* what() const noexcept override;
private:
std::string str;
};

View File

@ -17,7 +17,7 @@ TTF_Font* Font::_get() const
return _font.get();
}
Font::Font(const std::string& FontFileName, size_t size) throw(ErrorViewer)
Font::Font(const std::string& FontFileName, size_t size)
{
if (use(FontFileName, size) != 0)
{
@ -209,7 +209,7 @@ void Font::setFontHint(FontHint hint)
TTF_SetFontHinting(_get(),v);
}
Rect Font::sizeText(const std::string& Text) const throw (ErrorViewer)
Rect Font::sizeText(const std::string& Text) const
{
int w=0,h=0;
if(TTF_SizeText(_get(),Text.c_str(),&w,&h)!=0)
@ -222,7 +222,7 @@ Rect Font::sizeText(const std::string& Text) const throw (ErrorViewer)
return Rect(0,0,w,h);
}
Rect Font::sizeUTF8(const std::string& Text) const throw (ErrorViewer)
Rect Font::sizeUTF8(const std::string& Text) const
{
int w=0,h=0;
if(TTF_SizeUTF8(_get(),Text.c_str(),&w,&h)!=0)
@ -235,7 +235,7 @@ Rect Font::sizeUTF8(const std::string& Text) const throw (ErrorViewer)
return Rect(0,0,w,h);
}
Rect Font::sizeUnicode(const uint16_t* Text) const throw (ErrorViewer)
Rect Font::sizeUnicode(const uint16_t* Text) const
{
int w=0,h=0;
if(TTF_SizeUNICODE(_get(),Text,&w,&h)!=0)

View File

@ -13,7 +13,7 @@ class Font
{
public:
Font() = default;
Font(const std::string& FontFileName, size_t size) throw(ErrorViewer);
Font(const std::string& FontFileName, size_t size);
int use(const std::string& FontFileName, size_t size);
bool isReady() const;
@ -61,9 +61,9 @@ public:
void setFontHint(FontHint hint);
Rect sizeText(const std::string& Text) const throw (ErrorViewer);
Rect sizeUTF8(const std::string& Text) const throw (ErrorViewer);
Rect sizeUnicode(const uint16_t* Text) const throw (ErrorViewer);
Rect sizeText(const std::string& Text) const;
Rect sizeUTF8(const std::string& Text) const;
Rect sizeUnicode(const uint16_t* Text) const;
/// Surface Rendering Functions.
Surface renderText(const std::string& Text, const RGBA& fg) const;

View File

@ -54,7 +54,7 @@ Uint32 Renderer::_rendertype_caster(RendererType Type)
return 0;
}
Renderer::Renderer(Window& wnd,std::initializer_list<RendererType> RendererFlags) throw (ErrorViewer)
Renderer::Renderer(Window& wnd,std::initializer_list<RendererType> RendererFlags)
{
if(createRenderer(wnd,RendererFlags)!=0)
{
@ -64,7 +64,7 @@ Renderer::Renderer(Window& wnd,std::initializer_list<RendererType> RendererFlags
}
}
Renderer::Renderer(Surface& surf) throw (ErrorViewer)
Renderer::Renderer(Surface& surf)
{
if(createSoftRenderer(surf)!=0)
{
@ -439,7 +439,7 @@ int Renderer::supercopy(const Texture& t,
return SDL_RenderCopyEx(_get(),t._get(),pR1,pR2,angle,pPoint,flip);
}
Texture Renderer::render(const Surface& surf) const throw(ErrorViewer)
Texture Renderer::render(const Surface& surf) const
{
Texture t;
SDL_Texture* temp = SDL_CreateTextureFromSurface(_get(), surf._get());
@ -453,7 +453,7 @@ Texture Renderer::render(const Surface& surf) const throw(ErrorViewer)
return t;
}
Texture Renderer::loadTexture(const std::string& FileName) const throw(ErrorViewer)
Texture Renderer::loadTexture(const std::string& FileName) const
{
Texture t;
SDL_Texture* temp = IMG_LoadTexture(_get(), FileName.c_str());
@ -467,7 +467,7 @@ Texture Renderer::loadTexture(const std::string& FileName) const throw(ErrorView
return t;
}
Texture Renderer::loadTextureRW(const RWOP& rwop) const throw (ErrorViewer)
Texture Renderer::loadTextureRW(const RWOP& rwop) const
{
Texture t;
SDL_Texture* temp=IMG_LoadTexture_RW(_get(),rwop._get(),0);
@ -481,7 +481,7 @@ Texture Renderer::loadTextureRW(const RWOP& rwop) const throw (ErrorViewer)
return t;
}
Texture Renderer::createTexture(int Width, int Height) const throw(ErrorViewer)
Texture Renderer::createTexture(int Width, int Height) const
{
SDL_Texture* temp = SDL_CreateTexture(_get(), SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, Width, Height);
if (temp == NULL)

View File

@ -13,9 +13,9 @@ class Renderer
public:
Renderer() = default;
/// Create a Renderer associated with Window
Renderer(Window& wnd,std::initializer_list<RendererType> RendererFlags = { RendererType::Accelerated,RendererType::TargetTexture }) throw (ErrorViewer);
Renderer(Window& wnd,std::initializer_list<RendererType> RendererFlags = { RendererType::Accelerated,RendererType::TargetTexture });
/// Create a software Renderer
Renderer(Surface& surf) throw (ErrorViewer);
Renderer(Surface& surf);
~Renderer() = default;
/// If Renderer is current not ready, setRenderer will create Renderer.
@ -111,10 +111,10 @@ public:
double angle,
bool haspoint,const Point& center,FlipMode mode);
Texture render(const Surface& surf) const throw (ErrorViewer);
Texture loadTexture(const std::string& FileName) const throw(ErrorViewer);
Texture loadTextureRW(const RWOP& rwop) const throw(ErrorViewer);
Texture createTexture(int Width, int Height) const throw(ErrorViewer);
Texture render(const Surface& surf) const;
Texture loadTexture(const std::string& FileName) const;
Texture loadTextureRW(const RWOP& rwop) const;
Texture createTexture(int Width, int Height) const;
bool isRenderTargetSupported() const;
bool isReady() const;

View File

@ -2,7 +2,7 @@
#include "_caster.h"
#include "begin_code.h"
// private
void SDLSystem::_init(Uint32 sdl_flag, Uint32 img_flag, Uint32 mix_flag, bool init_ttf) throw (ErrorViewer)
void SDLSystem::_init(Uint32 sdl_flag, Uint32 img_flag, Uint32 mix_flag, bool init_ttf)
{
int ret=SDL_Init(sdl_flag);
if(ret!=0)
@ -44,7 +44,7 @@ void SDLSystem::_init(Uint32 sdl_flag, Uint32 img_flag, Uint32 mix_flag, bool in
SDLSystem::SDLSystem(const std::initializer_list<SDLInitFlag>& flag_sdl,
const std::initializer_list<IMGInitFlag>& flag_img,
const std::initializer_list<MixInitFlag>& flag_mix,
bool init_ttf ) throw (ErrorViewer)
bool init_ttf )
{
Uint32 sdl_flag=0;
for(auto& v:flag_sdl)
@ -72,7 +72,7 @@ SDLSystem::SDLSystem(const std::initializer_list<SDLInitFlag>& flag_sdl,
}
}
SDLSystem::SDLSystem(Uint32 sdl_flag, Uint32 img_flag, Uint32 mix_flag, bool init_ttf) throw (ErrorViewer)
SDLSystem::SDLSystem(Uint32 sdl_flag, Uint32 img_flag, Uint32 mix_flag, bool init_ttf)
{
try
{

View File

@ -18,9 +18,9 @@ public:
SDLSystem(const std::initializer_list<SDLInitFlag>& flag_sdl = {SDLInitFlag::All} ,
const std::initializer_list<IMGInitFlag>& flag_img = {IMGInitFlag::JPG,IMGInitFlag::PNG} ,
const std::initializer_list<MixInitFlag>& flag_mix = {MixInitFlag::MP3} ,
bool init_ttf = true ) throw (ErrorViewer);
bool init_ttf = true );
/// Experimental Constructor
SDLSystem(Uint32 sdl_flag, Uint32 img_flag, Uint32 mix_flag, bool init_ttf) throw (ErrorViewer);
SDLSystem(Uint32 sdl_flag, Uint32 img_flag, Uint32 mix_flag, bool init_ttf);
~SDLSystem();
static void Delay(int ms);
@ -70,7 +70,7 @@ public:
};
private:
void _init(Uint32,Uint32,Uint32,bool) throw (ErrorViewer);
void _init(Uint32,Uint32,Uint32,bool);
void _quit();
};
#include "end_code.h"

View File

@ -57,7 +57,7 @@ Channel::Channel()
_id=-1;
}
Channel& Channel::playSound(Sound sound, int loops) throw (ErrorViewer)
Channel& Channel::playSound(Sound sound, int loops)
{
int cret=Mix_PlayChannel(_get(),sound._get(),loops);
if(cret==-1)
@ -70,7 +70,7 @@ Channel& Channel::playSound(Sound sound, int loops) throw (ErrorViewer)
return *this;
}
Channel& Channel::fadeIn(Sound sound, int loops, int ms) throw (ErrorViewer)
Channel& Channel::fadeIn(Sound sound, int loops, int ms)
{
int cret=Mix_FadeInChannel(_get(),sound._get(),loops,ms);
if(cret==-1)
@ -157,14 +157,14 @@ SoundPlayer::SoundPlayer(int Channels)
Mix_AllocateChannels(Channels);
}
Channel SoundPlayer::playSound(Sound sound, int loops) throw(ErrorViewer)
Channel SoundPlayer::playSound(Sound sound, int loops)
{
Channel c;
c.playSound(sound,loops);
return c;
}
Channel SoundPlayer::fadeIn(Sound sound, int loops, int ms) throw(ErrorViewer)
Channel SoundPlayer::fadeIn(Sound sound, int loops, int ms)
{
Channel c;
c.fadeIn(sound,loops,ms);

View File

@ -28,8 +28,8 @@ private:
class Channel
{
public:
Channel& playSound(Sound sound,int loops) throw (ErrorViewer);
Channel& fadeIn(Sound sound,int loops,int ms) throw (ErrorViewer);
Channel& playSound(Sound sound,int loops);
Channel& fadeIn(Sound sound,int loops,int ms);
int fadeOut(int ms);
void pause();
@ -64,7 +64,7 @@ public:
static std::string GetDecoderName(int index);
SoundPlayer(int NumChannels = 16);
Channel playSound(Sound sound, int loops) throw (ErrorViewer);
Channel fadeIn(Sound sound, int loops, int ms) throw (ErrorViewer);
Channel playSound(Sound sound, int loops);
Channel fadeIn(Sound sound, int loops, int ms);
};
#include "end_code.h"

View File

@ -25,7 +25,7 @@ void Surface::_set_no_delete(SDL_Surface* p)
_surf.reset(p,[](SDL_Surface*) {});
}
Surface::Surface(int width,int height,int depth,int Rmask,int Gmask,int Bmask,int Amask) throw(ErrorViewer)
Surface::Surface(int width,int height,int depth,int Rmask,int Gmask,int Bmask,int Amask)
{
if(createAs(width,height,depth,Rmask,Gmask,Bmask,Amask)!=0)
{
@ -35,13 +35,13 @@ Surface::Surface(int width,int height,int depth,int Rmask,int Gmask,int Bmask,in
}
}
Surface::Surface(int width,int height,int depth,RGBA maskPack) throw (ErrorViewer)
Surface::Surface(int width,int height,int depth,RGBA maskPack)
: Surface(width,height,depth,maskPack.r,maskPack.g,maskPack.b,maskPack.a)
{
}
Surface::Surface(int width,int height,int depth,Uint32 surfaceFormat) throw(ErrorViewer)
Surface::Surface(int width,int height,int depth,Uint32 surfaceFormat)
{
if(createAs(width,height,depth,surfaceFormat)!=0)
{
@ -51,7 +51,7 @@ Surface::Surface(int width,int height,int depth,Uint32 surfaceFormat) throw(Erro
}
}
Surface::Surface(const std::string& filename) throw(ErrorViewer)
Surface::Surface(const std::string& filename)
{
if(loadAs(filename)!=0)
{
@ -61,7 +61,7 @@ Surface::Surface(const std::string& filename) throw(ErrorViewer)
}
}
Surface::Surface(const RWOP& rwop) throw (ErrorViewer)
Surface::Surface(const RWOP& rwop)
{
if(loadAs(rwop)!=0)
{

View File

@ -11,11 +11,11 @@ class Surface
{
public:
Surface()=default;
Surface(int width,int height,int depth,int Rmask,int Gmask,int Bmask,int Amask) throw(ErrorViewer);
Surface(int width,int height,int depth,RGBA colorPack) throw(ErrorViewer);
Surface(int width,int height,int depth,Uint32 surfaceFormat) throw(ErrorViewer);
Surface(const std::string& filename) throw(ErrorViewer);
Surface(const RWOP& rwop) throw(ErrorViewer);
Surface(int width,int height,int depth,int Rmask,int Gmask,int Bmask,int Amask);
Surface(int width,int height,int depth,RGBA colorPack);
Surface(int width,int height,int depth,Uint32 surfaceFormat);
Surface(const std::string& filename);
Surface(const RWOP& rwop);
~Surface() = default;
/// static functions

View File

@ -20,7 +20,7 @@ SDL_Window* Window::_get() const
}
Window::Window(std::string Title, int Width, int Height,
std::initializer_list<WindowType> WindowFlags, int WindowPositionX, int WindowPositionY) throw(ErrorViewer)
std::initializer_list<WindowType> WindowFlags, int WindowPositionX, int WindowPositionY)
{
/// Calculate Window Flags
Uint32 windowFlag=0;

View File

@ -13,7 +13,7 @@ public:
Window()=default;
Window(std::string Title, int Width, int Height,
std::initializer_list<WindowType> WindowFlags = {WindowType::Shown},
int WindowPositionX=SDL_WINDOWPOS_CENTERED, int WindowPositionY=SDL_WINDOWPOS_CENTERED) throw(ErrorViewer);
int WindowPositionX=SDL_WINDOWPOS_CENTERED, int WindowPositionY=SDL_WINDOWPOS_CENTERED);
Rect getSize() const;
void setSize(const Rect& sizeRect);

48
tests/test1.cpp Normal file
View File

@ -0,0 +1,48 @@
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include "MiniEngine.h"
#include "MiniEngine_Event.h"
using namespace MiniEngine;
int main()
{
try
{
/// Initialize SDL2, SDL2_image, SDL2_mixer, SDL2_ttf with default flags.
SDLSystem sys;
/// Create window
Window wnd("Window Title",1024,768);
/// Create renderer
Renderer rnd(wnd);
/// Load texture
Texture t=rnd.loadTexture("test.png");
/// Create a event loop
Looper lp;
/// Add event handling functions.
lp.add(SDL_QUIT,[](Looper& lp){lp.stop();});
/// Set Updater
lp.updater=[&]()
{
/// Clear screen
rnd.clear();
/// Copy the texture to full-fill the screen.
rnd.copyFullFill(t);
/// Update screen
rnd.update();
};
/// Start Looper
lp.run();
/// Texture will be freed.
/// Renderer will be destroyed.
/// Window will be destroyed.
/// All SDL system will be shut down.
}
catch (const ErrorViewer& e)
{
printf("Exception: %s\n",e.what());
}
return 0;
}