On Saturday, 23 August 2014 at 10:33:02 UTC, nikki wrote:
A good to know! thanks.
I'd still be interrested to see the idiomatic D version of that
function, what would that depend on ?
Honestly, I wouldn't change it much. If it didn't throw
exceptions before, then it probably would have trouble handling
them now.
What I *would* do is use multiple returns though. This style of
if/else invariably leads to the dreaded "diagonal line of death"
(http://geekandpoke.typepad.com/geekandpoke/2009/12/geek-for-dummies-chapter-2.html)
Once you've done that, any resource you'd have otherwise needed
to Un-conditionally release, I'd do with a scope.
bool init()
{
//Initialize SDL
if( SDL_Init( SDL_INIT_VIDEO ) < 0 )
{
printf( "SDL could not initialize! SDL_Error: %s\n",
SDL_GetError() );
return false;
}
//Create window
gWindow = SDL_CreateWindow( "SDL Tutorial",
SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH,
SCREEN_HEIGHT, SDL_WINDOW_SHOWN );
if( gWindow == NULL )
{
printf( "Window could not be created! SDL_Error:
%s\n", SDL_GetError() );
return false;
}
//Get window surface
gScreenSurface = SDL_GetWindowSurface( gWindow );
return true;
}
Now, once you've adopted this kind of style, migrating to
exceptions (should you so wish to do so) should much easier.