1
0
Fork 0
mirror of https://github.com/rubyjs/therubyracer synced 2023-03-27 23:21:42 -04:00
therubyracer/ext/v8/string.cc

35 lines
1,000 B
C++
Raw Normal View History

2012-05-02 16:15:11 -07:00
#include "rr.h"
namespace rr {
void String::Init() {
ClassBuilder("String", Primitive::Class).
defineSingletonMethod("New", &New).
2012-06-08 08:51:10 -05:00
defineSingletonMethod("NewSymbol", &NewSymbol).
2012-05-09 13:12:44 -05:00
defineSingletonMethod("Concat", &Concat).
2012-05-08 16:04:47 -05:00
defineMethod("Utf8Value", &Utf8Value).
store(&Class);
}
VALUE String::New(VALUE StringClass, VALUE string) {
return String(v8::String::New(RSTRING_PTR(string), (int)RSTRING_LEN(string)));
}
2012-06-08 08:51:10 -05:00
VALUE String::NewSymbol(VALUE self, VALUE string) {
return String(v8::String::NewSymbol(RSTRING_PTR(string), (int)RSTRING_LEN(string)));
}
VALUE String::Utf8Value(VALUE self) {
String str(self);
2012-06-06 03:52:53 -05:00
#ifdef HAVE_RUBY_ENCODING_H
return rb_enc_str_new(*v8::String::Utf8Value(*str), str->Utf8Length(), rb_enc_find("utf-8"));
#else
return rb_str_new(*v8::String::Utf8Value(*str), str->Utf8Length());
#endif
2012-05-02 16:15:11 -07:00
}
2012-05-09 13:12:44 -05:00
VALUE String::Concat(VALUE self, VALUE left, VALUE right) {
return String(v8::String::Concat(String(left), String(right)));
2012-05-09 13:12:44 -05:00
}
} //namespace rr