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.

Reply via email to