/*
 * Copyright (C) 2007 Rob Buis <buis@kde.org>
 * Copyright (C) 2007 Apple Inc. All rights reserved.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library 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
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public License
 * along with this library; see the file COPYING.LIB.  If not, write to
 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 * Boston, MA 02110-1301, USA.
 */

module svg {

    interface [
        Conditional=SVG
    ] SVGException {

        readonly attribute unsigned short   code;
        readonly attribute DOMString        name;
        readonly attribute DOMString        message;

#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
        // Override in a Mozilla compatible format
        [DontEnum] DOMString toString();
#endif

        // SVGExceptionCode
        const unsigned short SVG_WRONG_TYPE_ERR = 0;
        const unsigned short SVG_INVALID_VALUE_ERR = 1;
        const unsigned short SVG_MATRIX_NOT_INVERTABLE = 2;
    };
}
