Skip to content

Commit

Permalink
Removed String converters
Browse files Browse the repository at this point in the history
  • Loading branch information
kkoopa committed May 18, 2015
1 parent 12878b3 commit 7146bc3
Show file tree
Hide file tree
Showing 5 changed files with 3 additions and 257 deletions.
164 changes: 0 additions & 164 deletions nan.h
Original file line number Diff line number Diff line change
Expand Up @@ -679,88 +679,6 @@ class NanEscapableScope {
return static_cast<T*>(isolate->GetData(0));
}

class NanAsciiString {
public:
NAN_INLINE explicit NanAsciiString(v8::Handle<v8::Value> from) {
v8::Local<v8::String> toStr = from->ToString();
size = toStr->Length();
buf = new char[size + 1];
size = toStr->WriteOneByte(reinterpret_cast<unsigned char*>(buf));
}

NAN_INLINE int length() const {
return size;
}


NAN_INLINE char* operator*() { return buf; }
NAN_INLINE const char* operator*() const { return buf; }

NAN_INLINE ~NanAsciiString() {
delete[] buf;
}

private:
NAN_DISALLOW_ASSIGN_COPY_MOVE(NanAsciiString)

char *buf;
int size;
};

class NanUtf8String {
public:
NAN_INLINE explicit NanUtf8String(v8::Handle<v8::Value> from) {
v8::Local<v8::String> toStr = from->ToString();
size = toStr->Utf8Length();
buf = new char[size + 1];
toStr->WriteUtf8(buf);
}

NAN_INLINE int length() const {
return size;
}

NAN_INLINE char* operator*() { return buf; }
NAN_INLINE const char* operator*() const { return buf; }

NAN_INLINE ~NanUtf8String() {
delete[] buf;
}

private:
NAN_DISALLOW_ASSIGN_COPY_MOVE(NanUtf8String)

char *buf;
int size;
};

class NanUcs2String {
public:
NAN_INLINE explicit NanUcs2String(v8::Handle<v8::Value> from) {
v8::Local<v8::String> toStr = from->ToString();
size = toStr->Length();
buf = new uint16_t[size + 1];
toStr->Write(buf);
}

NAN_INLINE int length() const {
return size;
}

NAN_INLINE uint16_t* operator*() { return buf; }
NAN_INLINE const uint16_t* operator*() const { return buf; }

NAN_INLINE ~NanUcs2String() {
delete[] buf;
}

private:
NAN_DISALLOW_ASSIGN_COPY_MOVE(NanUcs2String)

uint16_t *buf;
int size;
};

#else // Node 0.8 and 0.10
typedef const v8::Arguments& NAN_METHOD_ARGS_TYPE;
typedef v8::Handle<v8::Value> NAN_METHOD_RETURN_TYPE;
Expand Down Expand Up @@ -1049,88 +967,6 @@ class NanEscapableScope {
return static_cast<T*>(isolate->GetData());
}

class NanAsciiString {
public:
NAN_INLINE explicit NanAsciiString(v8::Handle<v8::Value> from) {
v8::Local<v8::String> toStr = from->ToString();
size = toStr->Length();
buf = new char[size + 1];
size = toStr->WriteAscii(buf);
}

NAN_INLINE int length() const {
return size;
}


NAN_INLINE char* operator*() { return buf; }
NAN_INLINE const char* operator*() const { return buf; }

NAN_INLINE ~NanAsciiString() {
delete[] buf;
}

private:
NAN_DISALLOW_ASSIGN_COPY_MOVE(NanAsciiString)

char *buf;
int size;
};

class NanUtf8String {
public:
NAN_INLINE explicit NanUtf8String(v8::Handle<v8::Value> from) {
v8::Local<v8::String> toStr = from->ToString();
size = toStr->Utf8Length();
buf = new char[size + 1];
toStr->WriteUtf8(buf);
}

NAN_INLINE int length() const {
return size;
}

NAN_INLINE char* operator*() { return buf; }
NAN_INLINE const char* operator*() const { return buf; }

NAN_INLINE ~NanUtf8String() {
delete[] buf;
}

private:
NAN_DISALLOW_ASSIGN_COPY_MOVE(NanUtf8String)

char *buf;
int size;
};

class NanUcs2String {
public:
NAN_INLINE explicit NanUcs2String(v8::Handle<v8::Value> from) {
v8::Local<v8::String> toStr = from->ToString();
size = toStr->Length();
buf = new uint16_t[size + 1];
toStr->Write(buf);
}

NAN_INLINE int length() const {
return size;
}

NAN_INLINE uint16_t* operator*() { return buf; }
NAN_INLINE const uint16_t* operator*() const { return buf; }

NAN_INLINE ~NanUcs2String() {
delete[] buf;
}

private:
NAN_DISALLOW_ASSIGN_COPY_MOVE(NanUcs2String)

uint16_t *buf;
int size;
};

#endif // NODE_MODULE_VERSION

typedef void (*NanFreeCallback)(char *data, void *hint);
Expand Down
2 changes: 1 addition & 1 deletion test/cpp/multifile2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@
#include <nan.h>

NAN_METHOD(ReturnString) {
v8::Local<v8::String> s = NanNew<v8::String>(*NanUtf8String(args[0]));
v8::Local<v8::String> s = NanNew<v8::String>(*v8::String::Utf8Value(args[0]));
NanReturnValue(s);
}
2 changes: 1 addition & 1 deletion test/cpp/settergetter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ NAN_SETTER(SetterGetter::SetProp2) {
node::ObjectWrap::Unwrap<SetterGetter>(args.This());
strncpy(
settergetter->prop2
, *NanUtf8String(value)
, *v8::String::Utf8Value(value)
, sizeof (settergetter->prop2));
settergetter->prop2[sizeof (settergetter->prop2) - 1] = '\0';
assert(strlen(settergetter->log) < sizeof (settergetter->log));
Expand Down
75 changes: 0 additions & 75 deletions test/cpp/strings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,25 +8,6 @@

#include <nan.h>

NAN_METHOD(ReturnAsciiString) {
NanReturnValue(NanNew(*NanAsciiString(args[0])));
}

NAN_METHOD(ReturnUtf8String) {
NanReturnValue(NanNew(*NanUtf8String(args[0])));
}

NAN_METHOD(ReturnUcs2String) {
NanReturnValue(NanNew(*NanUcs2String(args[0])));
}

NAN_METHOD(HeapString) {
NanUcs2String *s = new NanUcs2String(args[0]);
v8::Local<v8::String> res = NanNew(**s);
delete s;
NanReturnValue(res);
}

NAN_METHOD(EncodeHex) {
NanReturnValue(NanEncode("hello", 5, Nan::HEX));
}
Expand All @@ -35,66 +16,10 @@ NAN_METHOD(EncodeUCS2) {
NanReturnValue(NanEncode("h\0e\0l\0l\0o\0", 10, Nan::UCS2));
}

v8::Persistent<v8::FunctionTemplate> returnAsciiString_persistent;
v8::Persistent<v8::FunctionTemplate> returnUtf8String_persistent;
v8::Persistent<v8::FunctionTemplate> returnUcs2String_persistent;
v8::Persistent<v8::FunctionTemplate> heapString_persistent;
v8::Persistent<v8::FunctionTemplate> encodeHex_persistent;
v8::Persistent<v8::FunctionTemplate> encodeUCS2_persistent;

void Init (v8::Handle<v8::Object> target) {
v8::Local<v8::FunctionTemplate> returnAsciiString =
NanNew<v8::FunctionTemplate>(ReturnAsciiString);

NanAssignPersistent(
returnAsciiString_persistent
, returnAsciiString
);

target->Set(
NanNew("returnAsciiString")
, returnAsciiString->GetFunction()
);

v8::Local<v8::FunctionTemplate> returnUtf8String =
NanNew<v8::FunctionTemplate>(ReturnUtf8String);

NanAssignPersistent(
returnUtf8String_persistent
, returnUtf8String
);

target->Set(
NanNew("returnUtf8String")
, returnUtf8String->GetFunction()
);

v8::Local<v8::FunctionTemplate> returnUcs2String =
NanNew<v8::FunctionTemplate>(ReturnUcs2String);

NanAssignPersistent(
returnUcs2String_persistent
, returnUcs2String
);

target->Set(
NanNew("returnUcs2String")
, returnUcs2String->GetFunction()
);

v8::Local<v8::FunctionTemplate> heapString =
NanNew<v8::FunctionTemplate>(HeapString);

NanAssignPersistent(
heapString_persistent
, heapString
);

target->Set(
NanNew("heapString")
, heapString->GetFunction()
);

v8::Local<v8::FunctionTemplate> encodeHex =
NanNew<v8::FunctionTemplate>(EncodeHex);

Expand Down
17 changes: 1 addition & 16 deletions test/js/strings-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,22 +12,7 @@ const test = require('tap').test


test('FromV8String', function (t) {
t.plan(10);

var a = bindings.returnAsciiString;
var b = bindings.returnUtf8String;
var c = bindings.returnUcs2String;
var d = bindings.heapString;

t.type(a, 'function');
t.type(b, 'function');
t.type(c, 'function');
t.type(d, 'function');

t.equal(a('an ascii string'), 'an ascii string');
t.equal(b('an utf8 strïng'), 'an utf8 strïng');
t.equal(c('an ucs2 strïng'), 'an ucs2 strïng');
t.equal(d('an utf8 strïng'), 'an utf8 strïng');
t.plan(2);

t.equal(bindings.encodeHex(), new Buffer('hello').toString('hex'));
t.equal(bindings.encodeUCS2(), 'hello');
Expand Down

0 comments on commit 7146bc3

Please sign in to comment.