summaryrefslogtreecommitdiff
path: root/src/stream_base.cc
diff options
context:
space:
mode:
authorFedor Indutny <fedor@indutny.com>2015-02-25 20:43:14 +0300
committerRod Vagg <rod@vagg.org>2015-02-25 14:21:34 -0600
commit89e133a1d8a3bfd655d5ae4f6b7071a1bbbcdc71 (patch)
tree52c64eb74a516c135b5b608c5020c8b1e03b28e3 /src/stream_base.cc
parenta558cd0a619a74dd69e212c79a909b8654942db2 (diff)
downloadandroid-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.cc76
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) {