56a486c322
- this avoids using relative include paths which are forbidden by the style guide - makes the code more readable since it's clear which header is meant - allows for starting to use checkdeps BUG=none R=jkummerow@chromium.org, danno@chromium.org LOG=n Review URL: https://codereview.chromium.org/304153016 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21625 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
93 lines
2.7 KiB
C++
93 lines
2.7 KiB
C++
// Copyright 2006-2008 the V8 project authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
// The infrastructure used for (localized) message reporting in V8.
|
|
//
|
|
// Note: there's a big unresolved issue about ownership of the data
|
|
// structures used by this framework.
|
|
|
|
#ifndef V8_MESSAGES_H_
|
|
#define V8_MESSAGES_H_
|
|
|
|
#include "src/handles-inl.h"
|
|
|
|
// Forward declaration of MessageLocation.
|
|
namespace v8 {
|
|
namespace internal {
|
|
class MessageLocation;
|
|
} } // namespace v8::internal
|
|
|
|
|
|
class V8Message {
|
|
public:
|
|
V8Message(char* type,
|
|
v8::internal::Handle<v8::internal::JSArray> args,
|
|
const v8::internal::MessageLocation* loc) :
|
|
type_(type), args_(args), loc_(loc) { }
|
|
char* type() const { return type_; }
|
|
v8::internal::Handle<v8::internal::JSArray> args() const { return args_; }
|
|
const v8::internal::MessageLocation* loc() const { return loc_; }
|
|
private:
|
|
char* type_;
|
|
v8::internal::Handle<v8::internal::JSArray> const args_;
|
|
const v8::internal::MessageLocation* loc_;
|
|
};
|
|
|
|
|
|
namespace v8 {
|
|
namespace internal {
|
|
|
|
struct Language;
|
|
class SourceInfo;
|
|
|
|
class MessageLocation {
|
|
public:
|
|
MessageLocation(Handle<Script> script,
|
|
int start_pos,
|
|
int end_pos)
|
|
: script_(script),
|
|
start_pos_(start_pos),
|
|
end_pos_(end_pos) { }
|
|
MessageLocation() : start_pos_(-1), end_pos_(-1) { }
|
|
|
|
Handle<Script> script() const { return script_; }
|
|
int start_pos() const { return start_pos_; }
|
|
int end_pos() const { return end_pos_; }
|
|
|
|
private:
|
|
Handle<Script> script_;
|
|
int start_pos_;
|
|
int end_pos_;
|
|
};
|
|
|
|
|
|
// A message handler is a convenience interface for accessing the list
|
|
// of message listeners registered in an environment
|
|
class MessageHandler {
|
|
public:
|
|
// Returns a message object for the API to use.
|
|
static Handle<JSMessageObject> MakeMessageObject(
|
|
Isolate* isolate,
|
|
const char* type,
|
|
MessageLocation* loc,
|
|
Vector< Handle<Object> > args,
|
|
Handle<JSArray> stack_frames);
|
|
|
|
// Report a formatted message (needs JS allocation).
|
|
static void ReportMessage(Isolate* isolate,
|
|
MessageLocation* loc,
|
|
Handle<Object> message);
|
|
|
|
static void DefaultMessageReport(Isolate* isolate,
|
|
const MessageLocation* loc,
|
|
Handle<Object> message_obj);
|
|
static Handle<String> GetMessage(Isolate* isolate, Handle<Object> data);
|
|
static SmartArrayPointer<char> GetLocalizedMessage(Isolate* isolate,
|
|
Handle<Object> data);
|
|
};
|
|
|
|
} } // namespace v8::internal
|
|
|
|
#endif // V8_MESSAGES_H_
|