Skip to content

Instantly share code, notes, and snippets.

@jasonroelofs
Forked from anonymous/extconf.rb
Created November 13, 2009 19:34
Show Gist options
  • Save jasonroelofs/234094 to your computer and use it in GitHub Desktop.
Save jasonroelofs/234094 to your computer and use it in GitHub Desktop.
require 'mkmf-rice'
create_makefile('virtual')
require 'virtual'
class Toto < VirtualBase
def initialize
super
puts "init"
end
end
b = Toto.new
class VirtualBase {
public:
VirtualBase();
// virtual int doWork() {return 0;}
// virtual int processWorker() = 0;
};
#include "rice/Director.hpp"
using namespace Rice;
class VirtualBaseProxy : public VirtualBase, public Rice::Director {
public:
VirtualBaseProxy(Object self) : Rice::Director(self) { }
/*
virtual int doWork() {
if(callIsFromRuby("do_work")) {
return VirtualBase::doWork();
} else {
return from_ruby<int>( getSelf().call("do_work") );
}
}
virtual int processWorker() {
if(callIsFromRuby("process_worker")) {
raisePureVirtual();
} else {
return from_ruby<int>( getSelf().call("process_worker") );
}
}*/
};
#include "rice/Constructor.hpp"
extern "C"
void Init_virtual() {
// See Caveat below
define_class<VirtualBase>("__VirtualBase__");
define_class<VirtualBaseProxy, VirtualBase>("VirtualBase")
.define_constructor(Constructor<VirtualBaseProxy, Object>());
// .define_method("do_work", &VirtualBaseProxy::doWork);
// .define_method("process_worker", &VirtualBaseProxy::processWorker);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment