You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by ma...@apache.org on 2012/11/17 02:07:40 UTC
[lucy-commits] [7/9] git commit: refs/heads/master - Remove usage of Clownfish::Host
from XSBind.
Remove usage of Clownfish::Host from XSBind.
Project: http://git-wip-us.apache.org/repos/asf/lucy/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucy/commit/65476988
Tree: http://git-wip-us.apache.org/repos/asf/lucy/tree/65476988
Diff: http://git-wip-us.apache.org/repos/asf/lucy/diff/65476988
Branch: refs/heads/master
Commit: 654769881014d8f76ad979874ffd9378d7a4af48
Parents: 3ae5662
Author: Marvin Humphrey <ma...@rectangular.com>
Authored: Wed Nov 14 17:57:20 2012 -0800
Committer: Marvin Humphrey <ma...@rectangular.com>
Committed: Fri Nov 16 16:27:57 2012 -0800
----------------------------------------------------------------------
clownfish/runtime/perl/xs/XSBind.c | 90 +++++++++++++++++++++++++------
perl/xs/XSBind.c | 90 +++++++++++++++++++++++++------
2 files changed, 146 insertions(+), 34 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucy/blob/65476988/clownfish/runtime/perl/xs/XSBind.c
----------------------------------------------------------------------
diff --git a/clownfish/runtime/perl/xs/XSBind.c b/clownfish/runtime/perl/xs/XSBind.c
index c210f01..7785d3f 100644
--- a/clownfish/runtime/perl/xs/XSBind.c
+++ b/clownfish/runtime/perl/xs/XSBind.c
@@ -19,7 +19,6 @@
#define C_LUCY_LOCKFREEREGISTRY
#define NEED_newRV_noinc
#include "XSBind.h"
-#include "Clownfish/Host.h"
#include "Clownfish/LockFreeRegistry.h"
#include "Clownfish/Util/StringHelper.h"
#include "Clownfish/Util/NumberUtils.h"
@@ -689,24 +688,60 @@ lucy_VTable_foster_obj(lucy_VTable *self, void *host_obj) {
void
lucy_VTable_register_with_host(lucy_VTable *singleton, lucy_VTable *parent) {
- // Register class with host.
- lucy_Host_callback(LUCY_VTABLE, "_register", 2,
- CFISH_ARG_OBJ("singleton", singleton),
- CFISH_ARG_OBJ("parent", parent));
+ dSP;
+ ENTER;
+ SAVETMPS;
+ EXTEND(SP, 5);
+ PUSHMARK(SP);
+ PUSHmortal;
+ mPUSHp("singleton", 9);
+ mPUSHs((SV*)Lucy_VTable_To_Host(singleton));
+ mPUSHp("parent", 6);
+ mPUSHs((SV*)Lucy_VTable_To_Host(parent));
+ PUTBACK;
+ call_pv("Clownfish::VTable::_register", G_VOID | G_DISCARD);
+ FREETMPS;
+ LEAVE;
}
lucy_VArray*
lucy_VTable_fresh_host_methods(const lucy_CharBuf *class_name) {
- return (lucy_VArray*)lucy_Host_callback_obj(
- LUCY_VTABLE,
- "fresh_host_methods", 1,
- CFISH_ARG_STR("class_name", class_name));
+ dSP;
+ ENTER;
+ SAVETMPS;
+ EXTEND(SP, 2);
+ PUSHMARK(SP);
+ PUSHmortal;
+ mPUSHs(XSBind_cb_to_sv(class_name));
+ PUTBACK;
+ call_pv("Clownfish::VTable::fresh_host_methods", G_SCALAR);
+ SPAGAIN;
+ cfish_VArray *methods = (cfish_VArray*)XSBind_perl_to_cfish(POPs);
+ PUTBACK;
+ FREETMPS;
+ LEAVE;
+ return methods;
}
lucy_CharBuf*
lucy_VTable_find_parent_class(const lucy_CharBuf *class_name) {
- return lucy_Host_callback_str(LUCY_VTABLE, "find_parent_class", 1,
- CFISH_ARG_STR("class_name", class_name));
+ dSP;
+ ENTER;
+ SAVETMPS;
+ EXTEND(SP, 2);
+ PUSHMARK(SP);
+ PUSHmortal;
+ mPUSHs(XSBind_cb_to_sv(class_name));
+ PUTBACK;
+ call_pv("Clownfish::VTable::find_parent_class", G_SCALAR);
+ SPAGAIN;
+ SV *parent_class_sv = POPs;
+ PUTBACK;
+ cfish_CharBuf *parent_class
+ = (cfish_CharBuf*)XSBind_perl_to_cfish(parent_class_sv);
+ FREETMPS;
+ LEAVE;
+ return parent_class;
}
void*
@@ -751,17 +786,38 @@ lucy_Err_init_class(void) {
lucy_Err*
lucy_Err_get_error() {
- lucy_Err *error
- = (lucy_Err*)lucy_Host_callback_obj(LUCY_ERR, "get_error", 0);
- CFISH_DECREF(error); // Cancel out incref from callback.
+ dSP;
+ ENTER;
+ SAVETMPS;
+ PUSHMARK(SP);
+ PUTBACK;
+ call_pv("Clownfish::Err::get_error", G_SCALAR);
+ SPAGAIN;
+ cfish_Err *error = (cfish_Err*)XSBind_perl_to_cfish(POPs);
+ PUTBACK;
+ FREETMPS;
+ LEAVE;
return error;
}
void
lucy_Err_set_error(lucy_Err *error) {
- lucy_Host_callback(LUCY_ERR, "set_error", 1,
- CFISH_ARG_OBJ("error", error));
- CFISH_DECREF(error);
+ dSP;
+ ENTER;
+ SAVETMPS;
+ EXTEND(SP, 2);
+ PUSHMARK(SP);
+ PUSHmortal;
+ if (error) {
+ mPUSHs((SV*)Lucy_Err_To_Host(error));
+ }
+ else {
+ PUSHmortal;
+ }
+ PUTBACK;
+ call_pv("Clownfish::Err::set_error", G_VOID | G_DISCARD);
+ FREETMPS;
+ LEAVE;
}
void
http://git-wip-us.apache.org/repos/asf/lucy/blob/65476988/perl/xs/XSBind.c
----------------------------------------------------------------------
diff --git a/perl/xs/XSBind.c b/perl/xs/XSBind.c
index c210f01..7785d3f 100644
--- a/perl/xs/XSBind.c
+++ b/perl/xs/XSBind.c
@@ -19,7 +19,6 @@
#define C_LUCY_LOCKFREEREGISTRY
#define NEED_newRV_noinc
#include "XSBind.h"
-#include "Clownfish/Host.h"
#include "Clownfish/LockFreeRegistry.h"
#include "Clownfish/Util/StringHelper.h"
#include "Clownfish/Util/NumberUtils.h"
@@ -689,24 +688,60 @@ lucy_VTable_foster_obj(lucy_VTable *self, void *host_obj) {
void
lucy_VTable_register_with_host(lucy_VTable *singleton, lucy_VTable *parent) {
- // Register class with host.
- lucy_Host_callback(LUCY_VTABLE, "_register", 2,
- CFISH_ARG_OBJ("singleton", singleton),
- CFISH_ARG_OBJ("parent", parent));
+ dSP;
+ ENTER;
+ SAVETMPS;
+ EXTEND(SP, 5);
+ PUSHMARK(SP);
+ PUSHmortal;
+ mPUSHp("singleton", 9);
+ mPUSHs((SV*)Lucy_VTable_To_Host(singleton));
+ mPUSHp("parent", 6);
+ mPUSHs((SV*)Lucy_VTable_To_Host(parent));
+ PUTBACK;
+ call_pv("Clownfish::VTable::_register", G_VOID | G_DISCARD);
+ FREETMPS;
+ LEAVE;
}
lucy_VArray*
lucy_VTable_fresh_host_methods(const lucy_CharBuf *class_name) {
- return (lucy_VArray*)lucy_Host_callback_obj(
- LUCY_VTABLE,
- "fresh_host_methods", 1,
- CFISH_ARG_STR("class_name", class_name));
+ dSP;
+ ENTER;
+ SAVETMPS;
+ EXTEND(SP, 2);
+ PUSHMARK(SP);
+ PUSHmortal;
+ mPUSHs(XSBind_cb_to_sv(class_name));
+ PUTBACK;
+ call_pv("Clownfish::VTable::fresh_host_methods", G_SCALAR);
+ SPAGAIN;
+ cfish_VArray *methods = (cfish_VArray*)XSBind_perl_to_cfish(POPs);
+ PUTBACK;
+ FREETMPS;
+ LEAVE;
+ return methods;
}
lucy_CharBuf*
lucy_VTable_find_parent_class(const lucy_CharBuf *class_name) {
- return lucy_Host_callback_str(LUCY_VTABLE, "find_parent_class", 1,
- CFISH_ARG_STR("class_name", class_name));
+ dSP;
+ ENTER;
+ SAVETMPS;
+ EXTEND(SP, 2);
+ PUSHMARK(SP);
+ PUSHmortal;
+ mPUSHs(XSBind_cb_to_sv(class_name));
+ PUTBACK;
+ call_pv("Clownfish::VTable::find_parent_class", G_SCALAR);
+ SPAGAIN;
+ SV *parent_class_sv = POPs;
+ PUTBACK;
+ cfish_CharBuf *parent_class
+ = (cfish_CharBuf*)XSBind_perl_to_cfish(parent_class_sv);
+ FREETMPS;
+ LEAVE;
+ return parent_class;
}
void*
@@ -751,17 +786,38 @@ lucy_Err_init_class(void) {
lucy_Err*
lucy_Err_get_error() {
- lucy_Err *error
- = (lucy_Err*)lucy_Host_callback_obj(LUCY_ERR, "get_error", 0);
- CFISH_DECREF(error); // Cancel out incref from callback.
+ dSP;
+ ENTER;
+ SAVETMPS;
+ PUSHMARK(SP);
+ PUTBACK;
+ call_pv("Clownfish::Err::get_error", G_SCALAR);
+ SPAGAIN;
+ cfish_Err *error = (cfish_Err*)XSBind_perl_to_cfish(POPs);
+ PUTBACK;
+ FREETMPS;
+ LEAVE;
return error;
}
void
lucy_Err_set_error(lucy_Err *error) {
- lucy_Host_callback(LUCY_ERR, "set_error", 1,
- CFISH_ARG_OBJ("error", error));
- CFISH_DECREF(error);
+ dSP;
+ ENTER;
+ SAVETMPS;
+ EXTEND(SP, 2);
+ PUSHMARK(SP);
+ PUSHmortal;
+ if (error) {
+ mPUSHs((SV*)Lucy_Err_To_Host(error));
+ }
+ else {
+ PUSHmortal;
+ }
+ PUTBACK;
+ call_pv("Clownfish::Err::set_error", G_VOID | G_DISCARD);
+ FREETMPS;
+ LEAVE;
}
void