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] [4/9] git commit: refs/heads/master - Eliminate Clownfish::Host usage by Lucy.

Eliminate Clownfish::Host usage by Lucy.


Project: http://git-wip-us.apache.org/repos/asf/lucy/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucy/commit/54e5918c
Tree: http://git-wip-us.apache.org/repos/asf/lucy/tree/54e5918c
Diff: http://git-wip-us.apache.org/repos/asf/lucy/diff/54e5918c

Branch: refs/heads/master
Commit: 54e5918c946f917c9dcdd6338dadeaa23c470c58
Parents: 04ac681
Author: Marvin Humphrey <ma...@rectangular.com>
Authored: Wed Nov 14 19:11:24 2012 -0800
Committer: Marvin Humphrey <ma...@rectangular.com>
Committed: Fri Nov 16 16:54:16 2012 -0800

----------------------------------------------------------------------
 perl/xs/Lucy/Analysis/RegexTokenizer.c |   30 +++++++++++++++++++++-----
 perl/xs/Lucy/Store/FSFolder.c          |   26 +++++++++++++++++------
 2 files changed, 43 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucy/blob/54e5918c/perl/xs/Lucy/Analysis/RegexTokenizer.c
----------------------------------------------------------------------
diff --git a/perl/xs/Lucy/Analysis/RegexTokenizer.c b/perl/xs/Lucy/Analysis/RegexTokenizer.c
index ea5ef0b..274b347 100644
--- a/perl/xs/Lucy/Analysis/RegexTokenizer.c
+++ b/perl/xs/Lucy/Analysis/RegexTokenizer.c
@@ -21,10 +21,12 @@
 #include "Lucy/Analysis/RegexTokenizer.h"
 #include "Lucy/Analysis/Token.h"
 #include "Lucy/Analysis/Inversion.h"
-#include "Clownfish/Host.h"
 #include "Clownfish/Util/Memory.h"
 #include "Clownfish/Util/StringHelper.h"
 
+static SV*
+S_compile_token_re(const cfish_CharBuf *pattern);
+
 static void
 S_set_token_re_but_not_pattern(lucy_RegexTokenizer *self, void *token_re);
 
@@ -34,8 +36,6 @@ S_set_pattern_from_token_re(lucy_RegexTokenizer *self, void *token_re);
 lucy_RegexTokenizer*
 lucy_RegexTokenizer_init(lucy_RegexTokenizer *self,
                          const lucy_CharBuf *pattern) {
-    SV *token_re_sv;
-
     lucy_Analyzer_init((lucy_Analyzer*)self);
     #define DEFAULT_PATTERN "\\w+(?:['\\x{2019}]\\w+)*"
     if (pattern) {
@@ -53,15 +53,33 @@ lucy_RegexTokenizer_init(lucy_RegexTokenizer *self,
     }
 
     // Acquire a compiled regex engine for matching one token.
-    token_re_sv = (SV*)lucy_Host_callback_host(
-                      LUCY_REGEXTOKENIZER, "compile_token_re", 1,
-                      CFISH_ARG_STR("pattern", self->pattern));
+    SV *token_re_sv = S_compile_token_re(self->pattern);
     S_set_token_re_but_not_pattern(self, SvRV(token_re_sv));
     SvREFCNT_dec(token_re_sv);
 
     return self;
 }
 
+static SV*
+S_compile_token_re(const cfish_CharBuf *pattern) {
+    dSP;
+    ENTER;
+    SAVETMPS;
+    EXTEND(SP, 2);
+    PUSHMARK(SP);
+    PUSHmortal;
+    XPUSHs(XSBind_cb_to_sv(pattern));
+    PUTBACK;
+    call_pv("Lucy::Analysis::RegexTokenizer::compile_token_re", G_SCALAR);
+    SPAGAIN;
+    SV *token_re_sv = POPs;
+    SvREFCNT_inc(token_re_sv);
+    PUTBACK;
+    FREETMPS;
+    LEAVE;
+    return token_re_sv;
+}
+
 static void
 S_set_token_re_but_not_pattern(lucy_RegexTokenizer *self, void *token_re) {
 #if (PERL_VERSION > 10)

http://git-wip-us.apache.org/repos/asf/lucy/blob/54e5918c/perl/xs/Lucy/Store/FSFolder.c
----------------------------------------------------------------------
diff --git a/perl/xs/Lucy/Store/FSFolder.c b/perl/xs/Lucy/Store/FSFolder.c
index 42e5b56..433d6b7 100644
--- a/perl/xs/Lucy/Store/FSFolder.c
+++ b/perl/xs/Lucy/Store/FSFolder.c
@@ -14,14 +14,26 @@
  * limitations under the License.
  */
 
-#include "Lucy/Util/ToolSet.h"
-#include "Clownfish/Host.h"
+#include "XSBind.h"
 #include "Lucy/Store/FSFolder.h"
 
-CharBuf*
-FSFolder_absolutify(const CharBuf *path) {
-
-    return Host_callback_str(FSFOLDER, "absolutify", 1,
-                             ARG_STR("path", path));
+cfish_CharBuf*
+lucy_FSFolder_absolutify(const cfish_CharBuf *path) {
+    dSP;
+    ENTER;
+    SAVETMPS;
+    EXTEND(SP, 2);
+    PUSHMARK(SP);
+    PUSHmortal;
+    mPUSHs(XSBind_cb_to_sv(path));
+    PUTBACK;
+    call_pv("Lucy::Store::FSFolder::absolutify", G_SCALAR);
+    SPAGAIN;
+    cfish_CharBuf *absolutified
+        = (cfish_CharBuf*)XSBind_perl_to_cfish(POPs);
+    PUTBACK;
+    FREETMPS;
+    LEAVE;
+    return absolutified;
 }