Skip to content

Commit eec42dd

Browse files
committed
Removed NAN_MODULE_INIT and added NAN_MODULE
1 parent 522aa35 commit eec42dd

36 files changed

+147
-85
lines changed

nan.h

Lines changed: 69 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -136,15 +136,77 @@ namespace Nan {
136136

137137
//=== RegistrationFunction =====================================================
138138

139-
#if NODE_MODULE_VERSION < IOJS_3_0_MODULE_VERSION
140-
typedef v8::Handle<v8::Object> ADDON_REGISTER_FUNCTION_ARGS_TYPE;
139+
typedef void (*addon_reg_func_t)(v8::Local<v8::Object> target);
140+
141+
#if NODE_MODULE_VERSION < NODE_0_10_MODULE_VERSION
142+
namespace imp {
143+
template<addon_reg_func_t F>
144+
static inline void addon_reg_func(v8::Handle<v8::Object> target) {
145+
v8::HandleScope scope;
146+
F(v8::Local<v8::Object>::New(target));
147+
}
148+
}
149+
150+
# define NAN_MODULE(modname, regfunc) \
151+
extern "C" { \
152+
NODE_MODULE_EXPORT node::node_module_struct modname ## _module = \
153+
{ \
154+
NODE_STANDARD_MODULE_STUFF, \
155+
Nan::imp::addon_reg_func<regfunc>, \
156+
NODE_STRINGIFY(modname) \
157+
}; \
158+
}
159+
160+
#elif NODE_MODULE_VERSION < NODE_0_12_MODULE_VERSION
161+
namespace imp {
162+
template<addon_reg_func_t F>
163+
static inline void addon_reg_func(v8::Handle<v8::Object> target) {
164+
v8::HandleScope scope;
165+
F(v8::Local<v8::Object>::New(target));
166+
}
167+
}
168+
169+
# define NAN_MODULE(modname, regfunc) \
170+
extern "C" { \
171+
NODE_MODULE_EXPORT node::node_module_struct modname ## _module = \
172+
{ \
173+
NODE_STANDARD_MODULE_STUFF, \
174+
(node::addon_register_func) Nan::imp::addon_reg_func<regfunc>, \
175+
NODE_STRINGIFY(modname) \
176+
}; \
177+
}
178+
#elif NODE_MODULE_VERSION < IOJS_3_0_MODULE_VERSION
179+
namespace imp {
180+
template<addon_reg_func_t F>
181+
static inline void addon_reg_func(v8::Handle<v8::Object> target) {
182+
v8::Isolate *isolate = v8::Isolate::GetCurrent();
183+
v8::HandleScope scope(isolate);
184+
F(v8::Local<v8::Object>::New(isolate, target));
185+
}
186+
}
187+
188+
# define NAN_MODULE(modname, regfunc) \
189+
extern "C" { \
190+
static node::node_module _module = \
191+
{ \
192+
NODE_MODULE_VERSION, \
193+
0, \
194+
NULL, \
195+
__FILE__, \
196+
(node::addon_register_func) (Nan::imp::addon_reg_func<regfunc>), \
197+
NULL, \
198+
NODE_STRINGIFY(modname), \
199+
NULL, \
200+
NULL \
201+
}; \
202+
NODE_C_CTOR(_register_ ## modname) { \
203+
node_module_register(&_module); \
204+
} \
205+
}
141206
#else
142-
typedef v8::Local<v8::Object> ADDON_REGISTER_FUNCTION_ARGS_TYPE;
207+
# define NAN_MODULE NODE_MODULE
143208
#endif
144209

145-
#define NAN_MODULE_INIT(name) \
146-
void name(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE target)
147-
148210
//=== CallbackInfo =============================================================
149211

150212
#include "nan_callbacks.h" // NOLINT(build/include)
@@ -2171,7 +2233,7 @@ inline void SetCallAsFunctionHandler(
21712233

21722234
inline
21732235
void
2174-
Export(ADDON_REGISTER_FUNCTION_ARGS_TYPE target, const char *name,
2236+
Export(v8::Local<v8::Object> target, const char *name,
21752237
FunctionCallback f) {
21762238
Set(target, New<v8::String>(name).ToLocalChecked(),
21772239
GetFunction(New<v8::FunctionTemplate>(f)).ToLocalChecked());

test/cpp/accessors.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ using namespace Nan; // NOLINT(build/namespaces)
1313

1414
class SetterGetter : public ObjectWrap {
1515
public:
16-
static NAN_MODULE_INIT(Init);
16+
static void Init(v8::Local<v8::Object> target);
1717
static v8::Local<v8::Value> NewInstance ();
1818
static NAN_METHOD(New);
1919
static NAN_METHOD(Log);
@@ -41,7 +41,7 @@ SetterGetter::SetterGetter() {
4141
prop2[0] = '\0';
4242
}
4343

44-
NAN_MODULE_INIT(SetterGetter::Init) {
44+
void SetterGetter::Init(v8::Local<v8::Object> target) {
4545
v8::Local<v8::FunctionTemplate> tpl =
4646
Nan::New<v8::FunctionTemplate>(SetterGetter::New);
4747
settergetter_constructor.Reset(tpl);
@@ -162,4 +162,4 @@ NAN_METHOD(SetterGetter::Log) {
162162
info.GetReturnValue().Set(Nan::New(settergetter->log).ToLocalChecked());
163163
}
164164

165-
NODE_MODULE(accessors, SetterGetter::Init)
165+
NAN_MODULE(accessors, SetterGetter::Init)

test/cpp/accessors2.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ using namespace Nan; // NOLINT(build/namespaces)
1313

1414
class SetterGetter : public ObjectWrap {
1515
public:
16-
static NAN_MODULE_INIT(Init);
16+
static void Init(v8::Local<v8::Object> target);
1717
static v8::Local<v8::Value> NewInstance ();
1818
static NAN_METHOD(New);
1919
static NAN_METHOD(Log);
@@ -41,7 +41,7 @@ SetterGetter::SetterGetter() {
4141
prop2[0] = '\0';
4242
}
4343

44-
NAN_MODULE_INIT(SetterGetter::Init) {
44+
void SetterGetter::Init(v8::Local<v8::Object> target) {
4545
v8::Local<v8::FunctionTemplate> tpl =
4646
Nan::New<v8::FunctionTemplate>(SetterGetter::New);
4747
settergetter_constructor.Reset(tpl);
@@ -160,4 +160,4 @@ NAN_METHOD(SetterGetter::Log) {
160160
info.GetReturnValue().Set(Nan::New(settergetter->log).ToLocalChecked());
161161
}
162162

163-
NODE_MODULE(accessors2, SetterGetter::Init)
163+
NAN_MODULE(accessors2, SetterGetter::Init)

test/cpp/asyncprogressworker.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,10 @@ NAN_METHOD(DoProgress) {
5757
, To<uint32_t>(info[1]).FromJust()));
5858
}
5959

60-
NAN_MODULE_INIT(Init) {
60+
void Init(v8::Local<v8::Object> target) {
6161
Set(target
6262
, New<v8::String>("a").ToLocalChecked()
6363
, New<v8::FunctionTemplate>(DoProgress)->GetFunction());
6464
}
6565

66-
NODE_MODULE(asyncprogressworker, Init)
66+
NAN_MODULE(asyncprogressworker, Init)

test/cpp/asyncworker.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,10 @@ NAN_METHOD(DoSleep) {
3434
new SleepWorker(callback, To<uint32_t>(info[0]).FromJust()));
3535
}
3636

37-
NAN_MODULE_INIT(Init) {
37+
void Init(v8::Local<v8::Object> target) {
3838
Set(target
3939
, New<v8::String>("a").ToLocalChecked()
4040
, New<v8::FunctionTemplate>(DoSleep)->GetFunction());
4141
}
4242

43-
NODE_MODULE(asyncworker, Init)
43+
NAN_MODULE(asyncworker, Init)

test/cpp/asyncworkererror.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,10 @@ NAN_METHOD(Work) {
2626
info.GetReturnValue().SetUndefined();
2727
}
2828

29-
NAN_MODULE_INIT(Init) {
29+
void Init(v8::Local<v8::Object> target) {
3030
Set(target
3131
, New("a").ToLocalChecked()
3232
, New<v8::FunctionTemplate>(Work)->GetFunction());
3333
}
3434

35-
NODE_MODULE(asyncworkererror, Init)
35+
NAN_MODULE(asyncworkererror, Init)

test/cpp/buffer.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ NAN_METHOD(Copy) {
5050
}
5151

5252

53-
NAN_MODULE_INIT(Init) {
53+
void Init(v8::Local<v8::Object> target) {
5454
for (unsigned char i = 0; i < DATA_SIZE; i++) {
5555
data[i] = 'a' + i;
5656
}
@@ -72,4 +72,4 @@ NAN_MODULE_INIT(Init) {
7272
);
7373
}
7474

75-
NODE_MODULE(buffer, Init)
75+
NAN_MODULE(buffer, Init)

test/cpp/bufferworkerpersistent.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,10 @@ NAN_METHOD(DoSleep) {
6060
, bufferHandle));
6161
}
6262

63-
NAN_MODULE_INIT(Init) {
63+
void Init(v8::Local<v8::Object> target) {
6464
Set(target
6565
, New<v8::String>("a").ToLocalChecked()
6666
, New<v8::FunctionTemplate>(DoSleep)->GetFunction());
6767
}
6868

69-
NODE_MODULE(bufferworkerpersistent, Init)
69+
NAN_MODULE(bufferworkerpersistent, Init)

test/cpp/converters.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ NAN_METHOD(Int32Value) {
6868
info.GetReturnValue().Set(New(To<int32_t>(info[0]).FromJust()));
6969
}
7070

71-
NAN_MODULE_INIT(Init) {
71+
void Init(v8::Local<v8::Object> target) {
7272
Set(target
7373
, New<v8::String>("toBoolean").ToLocalChecked()
7474
, New<v8::FunctionTemplate>(ToBoolean)->GetFunction()
@@ -127,4 +127,4 @@ NAN_MODULE_INIT(Init) {
127127
);
128128
}
129129

130-
NODE_MODULE(converters, Init)
130+
NAN_MODULE(converters, Init)

test/cpp/error.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ X(TypeError)
4848
, Nan::New<v8::FunctionTemplate>(NAME)->GetFunction());
4949

5050

51-
NAN_MODULE_INIT(Init) {
51+
void Init(v8::Local<v8::Object> target) {
5252
EXPORT_ERROR_FUNCTIONS(Error)
5353
EXPORT_ERROR_FUNCTIONS(RangeError)
5454
EXPORT_ERROR_FUNCTIONS(ReferenceError)
@@ -59,4 +59,4 @@ NAN_MODULE_INIT(Init) {
5959
#undef EXPORT_ERROR_FUNCTIONS
6060
#undef X
6161

62-
NODE_MODULE(error, Init)
62+
NAN_MODULE(error, Init)

test/cpp/gc.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ NAN_METHOD(Check) {
3535
RemoveGCEpilogueCallback<gcEpilogueCallback>();
3636
}
3737

38-
NAN_MODULE_INIT(Init) {
38+
void Init(v8::Local<v8::Object> target) {
3939
Set(target
4040
, New<v8::String>("hook").ToLocalChecked()
4141
, GetFunction(New<v8::FunctionTemplate>(Hook)).ToLocalChecked()
@@ -46,4 +46,4 @@ NAN_MODULE_INIT(Init) {
4646
);
4747
}
4848

49-
NODE_MODULE(gc, Init)
49+
NAN_MODULE(gc, Init)

test/cpp/indexedinterceptors.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class IndexedInterceptor : public ObjectWrap {
1616

1717
public:
1818
IndexedInterceptor() { std::strncpy(this->buf, "foo", sizeof (this->buf)); }
19-
static NAN_MODULE_INIT(Init);
19+
static void Init(v8::Local<v8::Object> target);
2020
static v8::Local<v8::Value> NewInstance ();
2121
static NAN_METHOD(New);
2222

@@ -33,7 +33,7 @@ NAN_METHOD(CreateNew) {
3333
info.GetReturnValue().Set(IndexedInterceptor::NewInstance());
3434
}
3535

36-
NAN_MODULE_INIT(IndexedInterceptor::Init) {
36+
void IndexedInterceptor::Init(v8::Local<v8::Object> target) {
3737
v8::Local<v8::FunctionTemplate> tpl =
3838
Nan::New<v8::FunctionTemplate>(IndexedInterceptor::New);
3939
indexedinterceptors_constructor.Reset(tpl);
@@ -113,4 +113,4 @@ NAN_INDEX_QUERY(IndexedInterceptor::PropertyQuery) {
113113
}
114114
}
115115

116-
NODE_MODULE(indexedinterceptors, IndexedInterceptor::Init)
116+
NAN_MODULE(indexedinterceptors, IndexedInterceptor::Init)

test/cpp/isolatedata.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,11 @@ NAN_METHOD(SetAndGet) {
2828
info.GetReturnValue().Set(New<v8::Boolean>(d0 == d1));
2929
}
3030

31-
NAN_MODULE_INIT(Init) {
31+
void Init(v8::Local<v8::Object> target) {
3232
Set(target
3333
, New<v8::String>("setAndGet").ToLocalChecked()
3434
, New<v8::FunctionTemplate>(SetAndGet)->GetFunction()
3535
);
3636
}
3737

38-
NODE_MODULE(isolatedata, Init)
38+
NAN_MODULE(isolatedata, Init)

test/cpp/makecallback.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ using namespace Nan; // NOLINT(build/namespaces)
1212

1313
class MyObject : public node::ObjectWrap {
1414
public:
15-
static NAN_MODULE_INIT(Init);
15+
static void Init(v8::Local<v8::Object> target);
1616

1717
private:
1818
MyObject();
@@ -31,7 +31,7 @@ MyObject::MyObject() {
3131
MyObject::~MyObject() {
3232
}
3333

34-
NAN_MODULE_INIT(MyObject::Init) {
34+
void MyObject::Init(v8::Local<v8::Object> target) {
3535
// Prepare constructor template
3636
v8::Local<v8::FunctionTemplate> tpl = Nan::New<v8::FunctionTemplate>(New);
3737
tpl->SetClassName(Nan::New<v8::String>("MyObject").ToLocalChecked());
@@ -63,4 +63,4 @@ NAN_METHOD(MyObject::CallEmit) {
6363
info.GetReturnValue().SetUndefined();
6464
}
6565

66-
NODE_MODULE(makecallback, MyObject::Init)
66+
NAN_MODULE(makecallback, MyObject::Init)

test/cpp/morenews.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ NAN_METHOD(NewExternalAsciiStringResource) {
6565
info.GetReturnValue().Set(ext);
6666
}
6767

68-
NAN_MODULE_INIT(Init) {
68+
void Init(v8::Local<v8::Object> target) {
6969
Set(target
7070
, New("newNumber").ToLocalChecked()
7171
, New<v8::FunctionTemplate>(NewNumber)->GetFunction()
@@ -101,4 +101,4 @@ NAN_MODULE_INIT(Init) {
101101
);
102102
}
103103

104-
NODE_MODULE(morenews, Init)
104+
NAN_MODULE(morenews, Init)

test/cpp/multifile1.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@
1111

1212
using namespace Nan; // NOLINT(build/namespaces)
1313

14-
NAN_MODULE_INIT(Init) {
14+
void Init(v8::Local<v8::Object> target) {
1515
Set(target
1616
, New<v8::String>("r").ToLocalChecked()
1717
, New<v8::FunctionTemplate>(ReturnString)->GetFunction()
1818
);
1919
}
2020

21-
NODE_MODULE(multifile, Init)
21+
NAN_MODULE(multifile, Init)

test/cpp/namedinterceptors.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class NamedInterceptor : public ObjectWrap {
1616

1717
public:
1818
NamedInterceptor() { std::strncpy(this->buf, "foo", sizeof (this->buf)); }
19-
static NAN_MODULE_INIT(Init);
19+
static void Init(v8::Local<v8::Object> target);
2020
static v8::Local<v8::Value> NewInstance ();
2121
static NAN_METHOD(New);
2222

@@ -33,7 +33,7 @@ NAN_METHOD(CreateNew) {
3333
info.GetReturnValue().Set(NamedInterceptor::NewInstance());
3434
}
3535

36-
NAN_MODULE_INIT(NamedInterceptor::Init) {
36+
void NamedInterceptor::Init(v8::Local<v8::Object> target) {
3737
v8::Local<v8::FunctionTemplate> tpl =
3838
Nan::New<v8::FunctionTemplate>(NamedInterceptor::New);
3939
namedinterceptors_constructor.Reset(tpl);
@@ -113,4 +113,4 @@ NAN_PROPERTY_QUERY(NamedInterceptor::PropertyQuery) {
113113
}
114114
}
115115

116-
NODE_MODULE(namedinterceptors, NamedInterceptor::Init)
116+
NAN_MODULE(namedinterceptors, NamedInterceptor::Init)

test/cpp/nancallback.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ NAN_METHOD(CallAsFunction) {
4141
Callback(info[0].As<v8::Function>())();
4242
}
4343

44-
NAN_MODULE_INIT(Init) {
44+
void Init(v8::Local<v8::Object> target) {
4545
Set(target
4646
, New<v8::String>("globalContext").ToLocalChecked()
4747
, New<v8::FunctionTemplate>(GlobalContext)->GetFunction()
@@ -68,4 +68,4 @@ NAN_MODULE_INIT(Init) {
6868
);
6969
}
7070

71-
NODE_MODULE(nancallback, Init)
71+
NAN_MODULE(nancallback, Init)

test/cpp/nannew.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -467,7 +467,7 @@ NAN_METHOD(invokeMakeMaybe) {
467467
info.GetReturnValue().Set(number.ToLocalChecked());
468468
}
469469

470-
NAN_MODULE_INIT(Init) {
470+
void Init(v8::Local<v8::Object> target) {
471471
NAN_EXPORT(target, testArray);
472472
NAN_EXPORT(target, testBoolean);
473473
NAN_EXPORT(target, testBooleanObject);
@@ -505,4 +505,4 @@ NAN_MODULE_INIT(Init) {
505505

506506
} // end of anonymous namespace
507507

508-
NODE_MODULE(nannew, Init)
508+
NAN_MODULE(nannew, Init)

0 commit comments

Comments
 (0)