/
xml_syntax_error.h
68 lines (55 loc) · 2.65 KB
/
xml_syntax_error.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
// Copyright 2009, Squish Tech, LLC.
#ifndef SRC_XML_SYNTAX_ERROR_H_
#define SRC_XML_SYNTAX_ERROR_H_
#include "./libxmljs.h"
#include <iostream>
namespace libxmljs {
#define DOMAIN_SYMBOL v8::String::NewSymbol("domain")
#define CODE_SYMBOL v8::String::NewSymbol("code")
#define MESSAGE_SYMBOL v8::String::NewSymbol("message")
#define LEVEL_SYMBOL v8::String::NewSymbol("level")
#define FILE_SYMBOL v8::String::NewSymbol("file")
#define LINE_SYMBOL v8::String::NewSymbol("line")
#define STR1_SYMBOL v8::String::NewSymbol("str1")
#define STR2_SYMBOL v8::String::NewSymbol("str2")
#define STR3_SYMBOL v8::String::NewSymbol("str3")
#define INT1_SYMBOL v8::String::NewSymbol("int1")
#define COLUMN_SYMBOL v8::String::NewSymbol("column")
#define BUILD_SYNTAX_ERROR(error) \
({ \
XmlSyntaxError *syntax_error = new XmlSyntaxError(error); \
v8::Handle<v8::Value> args[1] = { v8::Null() }; \
v8::Handle<v8::Object> js_error_obj = \
XmlSyntaxError::constructor_template-> \
GetFunction()-> \
NewInstance(1, args); \
syntax_error->Wrap(js_error_obj); \
js_error_obj; \
})
#define THROW_SYNTAX_ERROR(error) \
v8::ThrowException(BUILD_SYNTAX_ERROR(error));
class XmlSyntaxError : public LibXmlObj {
public:
explicit XmlSyntaxError(xmlError *error);
virtual ~XmlSyntaxError();
static void Initialize(v8::Handle<v8::Object> target);
static v8::Persistent<v8::FunctionTemplate> constructor_template;
static void PushToArray(void *ctx, xmlError *error);
v8::Persistent<v8::Value> domain;
v8::Persistent<v8::Value> code;
v8::Persistent<v8::Value> message;
v8::Persistent<v8::Value> level;
v8::Persistent<v8::Value> file;
v8::Persistent<v8::Value> line;
v8::Persistent<v8::Value> str1;
v8::Persistent<v8::Value> str2;
v8::Persistent<v8::Value> str3;
v8::Persistent<v8::Value> int1;
v8::Persistent<v8::Value> int2;
protected:
static v8::Handle<v8::Value> New(const v8::Arguments& args);
static v8::Handle<v8::Value> Getter(v8::Local<v8::String> property,
const v8::AccessorInfo& info);
};
} // namespace libxmljs
#endif SRC_XML_SYNTAX_ERROR_H_