Sha256: 30f8ff3abb1c7398b4ca853fd4ff3a896feb97638ffe429ba7258a842d125607

Contents?: true

Size: 802 Bytes

Versions: 4

Compression:

Stored size: 802 Bytes

Contents

#ifndef _RUBY_V8_REF_
#define _RUBY_V8_REF_

#include <v8.h>
#include "ruby.h"

//the v8_ref wraps a v8 handle so that ruby can hold a reference to it.

struct v8_ref  {
  //takes a handle object and adds a new persistent handle for 
  //the referenced object
  v8_ref(v8::Handle<void> object, VALUE ref = 0);
  virtual ~v8_ref();
  void set(const char *name, VALUE ref);
  v8::Persistent<void> handle;
  VALUE references;
};

void rr_v8_ref_setref(VALUE handle, const char *name, VALUE ref);
VALUE V8_Ref_Create(VALUE ruby_class, v8::Handle<void> handle, VALUE ref = 0);
VALUE rr_v8_ref_create(VALUE rbclass, v8::Handle<void> handle);

template <class T> v8::Local<T> V8_Ref_Get(VALUE object) {
  v8_ref* ref = 0;
  Data_Get_Struct(object, struct v8_ref, ref); 
  return (T *)*ref->handle;  
}

#endif

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
therubyracer-0.7.1 ext/v8/v8_ref.h
therubyracer-0.7.1.pre ext/v8/v8_ref.h
therubyracer-0.7.0 ext/v8/v8_ref.h
therubyracer-0.7.0.pre ext/v8/v8_ref.h