nodejs-db-informix
master
nodejs bindings for Informix
Main Page
Related Pages
Classes
Files
File List
All
Classes
Functions
Pages
lib
nodejs-db
node_defs.h
1
#ifndef __NODE_DEFS_H_INCLUDED__
2
#define __NODE_DEFS_H_INCLUDED__
3
4
/**
5
* Obvious definitions
6
*/
7
8
#include <node.h>
9
10
#define NODE_CONSTANT(constant) v8::Integer::New(constant)
11
#define NODE_PERSISTENT_SYMBOL(s) v8::Persistent<v8::String>::New(v8::String::NewSymbol(s))
12
13
#define NODE_ADD_PROTOTYPE_METHOD(templ, name, callback) \
14
do { \
15
v8::Local<v8::Signature> __callback##_SIG = v8::Signature::New(templ); \
16
v8::Local<v8::FunctionTemplate> __callback##_TEM = \
17
v8::FunctionTemplate::New(callback, v8::Handle<v8::Value>(), \
18
__callback##_SIG); \
19
templ->PrototypeTemplate()->Set(v8::String::NewSymbol(name), \
20
__callback##_TEM); \
21
} while (0)
22
23
#define NODE_ADD_CONSTANT(target, name, constant) \
24
(target)->Set(v8::String::NewSymbol(#name), \
25
v8::Integer::New(constant), \
26
static_cast<v8::PropertyAttribute>(v8::ReadOnly|v8::DontDelete))
27
28
#define THROW_EXCEPTION(message) \
29
return v8::ThrowException(v8::Exception::Error(v8::String::New(message)));
30
31
#define ARG_CHECK_OPTIONAL_STRING(I, VAR) \
32
if (args.Length() > I && !args[I]->IsString()) { \
33
THROW_EXCEPTION("Argument \"" #VAR "\" must be a valid string") \
34
}
35
36
#define ARG_CHECK_STRING(I, VAR) \
37
if (args.Length() <= I) { \
38
THROW_EXCEPTION("Argument \"" #VAR "\" is mandatory") \
39
} else if (!args[I]->IsString()) { \
40
THROW_EXCEPTION("Argument \"" #VAR "\" must be a valid string") \
41
}
42
43
#define ARG_CHECK_OPTIONAL_BOOL(I, VAR) \
44
if (args.Length() > I && !args[I]->IsBoolean()) { \
45
THROW_EXCEPTION("Argument \"" #VAR "\" must be a valid boolean") \
46
}
47
48
#define ARG_CHECK_BOOL(I, VAR) \
49
if (args.Length() <= I) { \
50
THROW_EXCEPTION("Argument \"" #VAR "\" is mandatory") \
51
} else if (!args[I]->IsBoolean()) { \
52
THROW_EXCEPTION("Argument \"" #VAR "\" must be a valid boolean") \
53
}
54
55
#define ARG_CHECK_OPTIONAL_UINT32(I, VAR) \
56
if (args.Length() > I && !args[I]->IsUint32()) { \
57
THROW_EXCEPTION("Argument \"" #VAR "\" must be a valid UINT32") \
58
}
59
60
#define ARG_CHECK_UINT32(I, VAR) \
61
if (args.Length() <= I) { \
62
THROW_EXCEPTION("Argument \"" #VAR "\" is mandatory") \
63
} else if (!args[I]->IsUint32()) { \
64
THROW_EXCEPTION("Argument \"" #VAR "\" must be a valid UINT32") \
65
}
66
67
#define ARG_CHECK_OPTIONAL_OBJECT(I, VAR) \
68
if (args.Length() > I && (!args[I]->IsObject() || args[I]->IsFunction() || args[I]->IsUndefined())) { \
69
THROW_EXCEPTION("Argument \"" #VAR "\" must be a valid object") \
70
}
71
72
#define ARG_CHECK_OBJECT(I, VAR) \
73
if (args.Length() <= I) { \
74
THROW_EXCEPTION("Argument \"" #VAR "\" is mandatory") \
75
} else if (!args[I]->IsObject() || args[I]->IsFunction() || args[I]->IsArray() || args[I]->IsDate() || args[I]->IsUndefined()) { \
76
THROW_EXCEPTION("Argument \"" #VAR "\" must be a valid object") \
77
}
78
79
#define ARG_CHECK_OPTIONAL_FUNCTION(I, VAR) \
80
if (args.Length() > I && !args[I]->IsFunction()) { \
81
THROW_EXCEPTION("Argument \"" #VAR "\" must be a valid function") \
82
}
83
84
#define ARG_CHECK_FUNCTION(I, VAR) \
85
if (args.Length() <= I) { \
86
THROW_EXCEPTION("Argument \"" #VAR "\" is mandatory") \
87
} else if (!args[I]->IsFunction()) { \
88
THROW_EXCEPTION("Argument \"" #VAR "\" must be a valid function") \
89
}
90
91
#define ARG_CHECK_OPTIONAL_ARRAY(I, VAR) \
92
if (args.Length() > I && !args[I]->IsArray()) { \
93
THROW_EXCEPTION("Argument \"" #VAR "\" must be a valid array") \
94
}
95
96
#define ARG_CHECK_ARRAY(I, VAR) \
97
if (args.Length() <= I) { \
98
THROW_EXCEPTION("Argument \"" #VAR "\" is mandatory") \
99
} else if (!args[I]->IsArray()) { \
100
THROW_EXCEPTION("Argument \"" #VAR "\" must be a valid array") \
101
}
102
103
#define ARG_CHECK_OBJECT_ATTR_STRING(VAR, KEY) \
104
v8::Local<v8::String> KEY##_##key = v8::String::New("" #KEY ""); \
105
if (!VAR->Has(KEY##_##key)) { \
106
THROW_EXCEPTION("Option \"" #KEY "\" is mandatory") \
107
} else if (!VAR->Get(KEY##_##key)->IsString()) { \
108
THROW_EXCEPTION("Option \"" #KEY "\" must be a valid string") \
109
}
110
111
#define ARG_CHECK_OBJECT_ATTR_OPTIONAL_STRING(VAR, KEY) \
112
v8::Local<v8::String> KEY##_##key = v8::String::New("" #KEY ""); \
113
if (VAR->Has(KEY##_##key) && !VAR->Get(KEY##_##key)->IsString()) { \
114
THROW_EXCEPTION("Option \"" #KEY "\" must be a valid string") \
115
}
116
117
#define ARG_CHECK_OBJECT_ATTR_UINT32(VAR, KEY) \
118
v8::Local<v8::String> KEY##_##key = v8::String::New("" #KEY ""); \
119
if (!VAR->Has(KEY##_##key)) { \
120
THROW_EXCEPTION("Option \"" #KEY "\" is mandatory") \
121
} else if (!VAR->Get(KEY##_##key)->IsUint32()) { \
122
THROW_EXCEPTION("Option \"" #KEY "\" must be a valid UINT32") \
123
}
124
125
#define ARG_CHECK_OBJECT_ATTR_OPTIONAL_UINT32(VAR, KEY) \
126
v8::Local<v8::String> KEY##_##key = v8::String::New("" #KEY ""); \
127
if (VAR->Has(KEY##_##key) && !VAR->Get(KEY##_##key)->IsUint32()) { \
128
THROW_EXCEPTION("Option \"" #KEY "\" must be a valid UINT32") \
129
}
130
131
#define ARG_CHECK_OBJECT_ATTR_BOOL(VAR, KEY) \
132
v8::Local<v8::String> KEY##_##key = v8::String::New("" #KEY ""); \
133
if (!VAR->Has(KEY##_##key)) { \
134
THROW_EXCEPTION("Option \"" #KEY "\" is mandatory") \
135
} else if (!VAR->Get(KEY##_##key)->IsBoolean()) { \
136
THROW_EXCEPTION("Option \"" #KEY "\" must be a valid boolean") \
137
}
138
139
#define ARG_CHECK_OBJECT_ATTR_OPTIONAL_BOOL(VAR, KEY) \
140
v8::Local<v8::String> KEY##_##key = v8::String::New("" #KEY ""); \
141
if (VAR->Has(KEY##_##key) && !VAR->Get(KEY##_##key)->IsBoolean()) { \
142
THROW_EXCEPTION("Option \"" #KEY "\" must be a valid boolean") \
143
}
144
145
#define ARG_CHECK_OBJECT_ATTR_FUNCTION(VAR, KEY) \
146
v8::Local<v8::String> KEY##_##key = v8::String::New("" #KEY ""); \
147
if (!VAR->Has(KEY##_##key)) { \
148
THROW_EXCEPTION("Option \"" #KEY "\" is mandatory") \
149
} else if (!VAR->Get(KEY##_##key)->IsFunction()) { \
150
THROW_EXCEPTION("Option \"" #KEY "\" must be a valid function") \
151
}
152
153
#define ARG_CHECK_OBJECT_ATTR_OPTIONAL_FUNCTION(VAR, KEY) \
154
v8::Local<v8::String> KEY##_##key = v8::String::New("" #KEY ""); \
155
if (VAR->Has(KEY##_##key) && !VAR->Get(KEY##_##key)->IsFunction()) { \
156
THROW_EXCEPTION("Option \"" #KEY "\" must be a valid function") \
157
}
158
159
#ifdef DEBUG
160
#define DEBUG_LOG_FUNC \
161
std::cout \
162
<< "Function : " << __func__ \
163
<< ", File : " << __FILE__ \
164
<< ", Line : " << __LINE__ \
165
<< std::endl
166
#else
167
#define DEBUG_LOG_FUNC
168
#endif
169
170
#endif // __NODE_DEFS_H_INCLUDED__
Generated on Tue Dec 3 2013 19:27:34 for nodejs-db-informix by
1.8.3.1