view mde/setup/exception.d @ 85:56c0ddd90193

Intermediate commit (not stable). Changes to init system.
author Diggory Hardy <diggory.hardy@gmail.com>
date Thu, 11 Sep 2008 11:33:51 +0100
parents 66d555da083e
children
line wrap: on
line source

/* LICENSE BLOCK
Part of mde: a Modular D game-oriented Engine
Copyright © 2007-2008 Diggory Hardy

This program is free software: you can redistribute it and/or modify it under the terms
of the GNU General Public License as published by the Free Software Foundation, either
version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>. */

/** Contains the exception classes for Init, and the StageState type to remove the need for init
 * functions to import other Init modules. */
module mde.setup.exception;

import mde.exception;

/// Thrown when Init fails.
class InitException : mdeException {
    char[] getSymbol () {
        return super.getSymbol ~ ".setup.Init";
    }
    
    this (char[] msg) {
        super(msg);
    }
}

/// State of an InitStage.
enum StageState : byte {
    INACTIVE = 0,                   /// run init on startup
    ACTIVE = 1,                     /// run cleanup on shutdown
    ERROR = -1,                     /// locked; don't run init or cleanup
}

/// May be thrown when an init or cleanup function fails to explicitly set the stage's state.
class InitStageException : InitException {
    this (StageState s) {
        state = s;
        super("");
    }
    StageState state;
}