18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  Copyright (C) 1999-2000 Harri Porten (porten@kde.org)
38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  Copyright (C) 2008 Apple Inc. All rights reserved.
48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  This library is free software; you can redistribute it and/or
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  modify it under the terms of the GNU Lesser General Public
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  License as published by the Free Software Foundation; either
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  version 2 of the License, or (at your option) any later version.
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  This library is distributed in the hope that it will be useful,
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  but WITHOUT ANY WARRANTY; without even the implied warranty of
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  Lesser General Public License for more details.
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  You should have received a copy of the GNU Lesser General Public
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  License along with this library; if not, write to the Free Software
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef ErrorInstance_h
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define ErrorInstance_h
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "JSObject.h"
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace JSC {
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    class ErrorInstance : public JSNonFinalObject {
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    public:
3081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        static const ClassInfo s_info;
318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
322daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch        static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
3381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        {
342bde8e466a4451c7319e3a072d118917957d6554Steve Block            return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
3581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        }
36545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
372daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch        static ErrorInstance* create(JSGlobalData*, Structure*, const UString&);
382daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch        static ErrorInstance* create(ExecState*, Structure*, JSValue message);
39545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
406b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner
416b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner        bool appendSourceToMessage() { return m_appendSourceToMessage; }
426b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner        void setAppendSourceToMessage() { m_appendSourceToMessage = true; }
436b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner        void clearAppendSourceToMessage() { m_appendSourceToMessage = false; }
446b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner
456b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner        virtual bool isErrorInstance() const { return true; }
466b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner
47545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    protected:
482daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch        explicit ErrorInstance(JSGlobalData*, Structure*);
492daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch        explicit ErrorInstance(JSGlobalData*, Structure*, const UString&);
506b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner
516b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner        bool m_appendSourceToMessage;
528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    };
538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace JSC
558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // ErrorInstance_h
57