// Copyright 2016 The Cobalt Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#ifndef COBALT_SCRIPT_EXCEPTION_MESSAGE_H_
#define COBALT_SCRIPT_EXCEPTION_MESSAGE_H_

#include <string>

#include "cobalt/script/script_exception.h"

namespace cobalt {
namespace script {

// Simple exceptions as defined in:
// http://heycam.github.io/webidl/#dfn-simple-exception
enum SimpleExceptionType {
  kError,
  kTypeError,
  kRangeError,
  kReferenceError,
  kSyntaxError,
  kURIError
};

// Custom exception message type.
enum MessageType {
  kNoError = -1,

  kSimpleError,
  kSimpleTypeError,
  kSimpleRangeError,
  kSimpleReferenceError,
  kNotDateType,
  kNotNullableType,
  kNotObjectType,
  kNotObjectOrFunction,
  kNotInt64Type,
  kNotUint64Type,
  kNotNumberType,
  kNotIterableType,
  kDoesNotImplementInterface,
  kConvertToStringFailed,
  kNotFinite,
  kNotSupportedType,
  kConvertToUTF8Failed,
  kConvertToEnumFailed,
  kStringifierProblem,
  kNotFunctionValue,
  kInvalidNumberOfArguments,
  kNotUnionType,
  kOutsideBounds,
  kInvalidLength,
  kNotAnArrayBuffer,

  kNumMessageTypes,
};

const char* GetExceptionMessage(MessageType message_type);
SimpleExceptionType GetSimpleExceptionType(MessageType message_type);

}  // namespace script
}  // namespace cobalt

#endif  // COBALT_SCRIPT_EXCEPTION_MESSAGE_H_
