зеркало из https://github.com/mozilla/pjs.git
85 строки
3.1 KiB
C
85 строки
3.1 KiB
C
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
|
*
|
|
* The contents of this file are subject to the Netscape Public License
|
|
* Version 1.0 (the "NPL"); you may not use this file except in
|
|
* compliance with the NPL. You may obtain a copy of the NPL at
|
|
* http://www.mozilla.org/NPL/
|
|
*
|
|
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
|
* for the specific language governing rights and limitations under the
|
|
* NPL.
|
|
*
|
|
* The Initial Developer of this code under the NPL is Netscape
|
|
* Communications Corporation. Portions created by Netscape are
|
|
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
|
* Reserved.
|
|
*/
|
|
#ifndef READER_H
|
|
#define READER_H
|
|
|
|
#include "NativeDefs.h"
|
|
|
|
struct VerifyError
|
|
{
|
|
enum Cause
|
|
{
|
|
unknown, // Unknown cause
|
|
notImplemented, // Functionality not implemented yet
|
|
noClassDefFound, // Error in reading class file: file not found, or has errors
|
|
badClassFormat, // Badly formatted class file
|
|
illegalAccess, // Class does not have permissions to access a particular field/method
|
|
noSuchField, // Field not found in class
|
|
noSuchMethod, // Method not found in class
|
|
noBytecodes, // No bytecodes in a function
|
|
badBytecode, // Bad bytecode opcode
|
|
badBytecodeOffset, // Bad offset to a bytecode instruction
|
|
badNewArrayType, // Bad type passed to newarray instruction
|
|
badConstantPoolIndex, // Constant pool index out of range
|
|
badReturn, // Wrong return instruction used in this function
|
|
writeToConst, // Attempt to write to a constant (final) field
|
|
classNotFound, // Given class not found in class file
|
|
nonThrowableCatch, // Catch filter class not a subclass of Throwable
|
|
classCircularity, // Class can be its own superclass
|
|
resourceExhausted, // Compiler internal limits reached
|
|
abstractMethod, // Attempt to invoke abstract method
|
|
incompatibleClassChange // Binary incompatibility
|
|
};
|
|
|
|
const Cause cause;
|
|
|
|
VerifyError(Cause cause): cause(cause) {}
|
|
};
|
|
|
|
NS_EXTERN
|
|
void verifyError(VerifyError::Cause cause);
|
|
|
|
struct RuntimeError
|
|
{
|
|
enum Cause
|
|
{
|
|
unknown, // Unknown cause
|
|
internal, // Internal error
|
|
notImplemented, // Functionality not implemented yet
|
|
illegalArgument, // incorrect argument to a method
|
|
illegalAccess, // prohibited operation
|
|
securityViolation, // Security violation
|
|
IOError, // IO Error
|
|
fileNotFound,
|
|
linkError, // Unable to link method
|
|
nullPointer, // Null Pointer argument
|
|
notInstantiable, // Attempt to instantiate an abstract class
|
|
outOfMemory
|
|
};
|
|
|
|
const Cause cause;
|
|
|
|
RuntimeError(Cause cause): cause(cause) {}
|
|
};
|
|
|
|
NS_EXTERN
|
|
void runtimeError(RuntimeError::Cause cause);
|
|
|
|
|
|
#endif
|