diff options
author | Fedor Indutny <fedor@indutny.com> | 2015-02-25 20:43:14 +0300 |
---|---|---|
committer | Rod Vagg <rod@vagg.org> | 2015-02-25 14:21:34 -0600 |
commit | 89e133a1d8a3bfd655d5ae4f6b7071a1bbbcdc71 (patch) | |
tree | 52c64eb74a516c135b5b608c5020c8b1e03b28e3 /src/stream_base.cc | |
parent | a558cd0a619a74dd69e212c79a909b8654942db2 (diff) | |
download | android-node-v8-89e133a1d8a3bfd655d5ae4f6b7071a1bbbcdc71.tar.gz android-node-v8-89e133a1d8a3bfd655d5ae4f6b7071a1bbbcdc71.tar.bz2 android-node-v8-89e133a1d8a3bfd655d5ae4f6b7071a1bbbcdc71.zip |
stream_base: remove static JSMethod declarations
Move JS methods to the stream_base-inl.h and thus define them on each
use of `StreamBase::AddMethods`. Inline `AddMethods` itself, so that
there won't be any need in a static declaration in stream_base.cc.
NOTE: This basically allows using this API in user-land, though, some
polishing is required before releasing it.
PR-URL: https://github.com/iojs/io.js/pull/957
Reviewed-By: Chris Dickinson <christopher.s.dickinson@gmail.com>
Diffstat (limited to 'src/stream_base.cc')
-rw-r--r-- | src/stream_base.cc | 76 |
1 files changed, 8 insertions, 68 deletions
diff --git a/src/stream_base.cc b/src/stream_base.cc index 82b1d65396..fb6f5322f6 100644 --- a/src/stream_base.cc +++ b/src/stream_base.cc @@ -19,83 +19,23 @@ namespace node { using v8::Array; using v8::Context; using v8::FunctionCallbackInfo; -using v8::FunctionTemplate; using v8::Handle; using v8::HandleScope; using v8::Integer; using v8::Local; using v8::Number; using v8::Object; -using v8::PropertyAttribute; -using v8::PropertyCallbackInfo; using v8::String; using v8::Value; -template void StreamBase::AddMethods<StreamWrap>(Environment* env, - Handle<FunctionTemplate> t); -template void StreamBase::AddMethods<TLSWrap>(Environment* env, - Handle<FunctionTemplate> t); -template void StreamBase::AddMethods<JSStream>(Environment* env, - Handle<FunctionTemplate> t); - - -template <class Base> -void StreamBase::AddMethods(Environment* env, Handle<FunctionTemplate> t) { - HandleScope scope(env->isolate()); - - enum PropertyAttribute attributes = - static_cast<PropertyAttribute>(v8::ReadOnly | v8::DontDelete); - t->InstanceTemplate()->SetAccessor(env->fd_string(), - GetFD<Base>, - nullptr, - Handle<Value>(), - v8::DEFAULT, - attributes); - - env->SetProtoMethod(t, "readStart", JSMethod<Base, &StreamBase::ReadStart>); - env->SetProtoMethod(t, "readStop", JSMethod<Base, &StreamBase::ReadStop>); - env->SetProtoMethod(t, "shutdown", JSMethod<Base, &StreamBase::Shutdown>); - env->SetProtoMethod(t, "writev", JSMethod<Base, &StreamBase::Writev>); - env->SetProtoMethod(t, - "writeBuffer", - JSMethod<Base, &StreamBase::WriteBuffer>); - env->SetProtoMethod(t, - "writeAsciiString", - JSMethod<Base, &StreamBase::WriteString<ASCII> >); - env->SetProtoMethod(t, - "writeUtf8String", - JSMethod<Base, &StreamBase::WriteString<UTF8> >); - env->SetProtoMethod(t, - "writeUcs2String", - JSMethod<Base, &StreamBase::WriteString<UCS2> >); - env->SetProtoMethod(t, - "writeBinaryString", - JSMethod<Base, &StreamBase::WriteString<BINARY> >); -} - - -template <class Base> -void StreamBase::GetFD(Local<String> key, - const PropertyCallbackInfo<Value>& args) { - StreamBase* wrap = Unwrap<Base>(args.Holder()); - - if (!wrap->IsAlive()) - return args.GetReturnValue().Set(UV_EINVAL); - - args.GetReturnValue().Set(wrap->GetFD()); -} - - -template <class Base, - int (StreamBase::*Method)(const FunctionCallbackInfo<Value>& args)> -void StreamBase::JSMethod(const FunctionCallbackInfo<Value>& args) { - StreamBase* wrap = Unwrap<Base>(args.Holder()); - - if (!wrap->IsAlive()) - return args.GetReturnValue().Set(UV_EINVAL); - - args.GetReturnValue().Set((wrap->*Method)(args)); -} +template int StreamBase::WriteString<ASCII>( + const FunctionCallbackInfo<Value>& args); +template int StreamBase::WriteString<UTF8>( + const FunctionCallbackInfo<Value>& args); +template int StreamBase::WriteString<UCS2>( + const FunctionCallbackInfo<Value>& args); +template int StreamBase::WriteString<BINARY>( + const FunctionCallbackInfo<Value>& args); int StreamBase::ReadStart(const FunctionCallbackInfo<Value>& args) { |