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 2016/02/25 00:07:37 UTC

[10/20] lucy-clownfish git commit: Implement scalar types To_Host for Python.

Implement scalar types To_Host for Python.

- String  -> string
- Blob    -> bytes
- Boolean -> bool
- Integer -> int
- Float   -> float


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

Branch: refs/heads/master
Commit: 5d3809ba960455a6695fcfece1063e7d91f23fac
Parents: bebc758
Author: Marvin Humphrey <ma...@rectangular.com>
Authored: Mon Jan 25 17:26:40 2016 -0800
Committer: Marvin Humphrey <ma...@rectangular.com>
Committed: Tue Feb 23 18:22:03 2016 -0800

----------------------------------------------------------------------
 runtime/python/cfext/CFBind.c | 38 ++++++++++++++++++++------------------
 1 file changed, 20 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/5d3809ba/runtime/python/cfext/CFBind.c
----------------------------------------------------------------------
diff --git a/runtime/python/cfext/CFBind.c b/runtime/python/cfext/CFBind.c
index f524b78..e991bf6 100644
--- a/runtime/python/cfext/CFBind.c
+++ b/runtime/python/cfext/CFBind.c
@@ -552,23 +552,23 @@ cfish_TestUtils_destroy_host_runtime(void *runtime) {
 
 void*
 CFISH_Str_To_Host_IMP(cfish_String *self) {
-    CFISH_UNUSED_VAR(self);
-    CFISH_THROW(CFISH_ERR, "TODO");
-    CFISH_UNREACHABLE_RETURN(void*);
+    const char *ptr = CFISH_Str_Get_Ptr8(self);
+    size_t size = CFISH_Str_Get_Size(self);
+    return PyUnicode_FromStringAndSize(ptr, size);
 }
 
 void*
 CFISH_Blob_To_Host_IMP(cfish_Blob *self) {
-    CFISH_UNUSED_VAR(self);
-    CFISH_THROW(CFISH_ERR, "TODO");
-    CFISH_UNREACHABLE_RETURN(void*);
+    const char *buf = CFISH_Blob_Get_Buf(self);
+    size_t size = CFISH_Blob_Get_Size(self);
+    return PyBytes_FromStringAndSize(buf, size);
 }
 
 void*
 CFISH_BB_To_Host_IMP(cfish_ByteBuf *self) {
-    CFISH_UNUSED_VAR(self);
-    CFISH_THROW(CFISH_ERR, "TODO");
-    CFISH_UNREACHABLE_RETURN(void*);
+    CFISH_BB_To_Host_t super_to_host
+        = CFISH_SUPER_METHOD_PTR(CFISH_BYTEBUF, CFISH_BB_To_Host);
+    return super_to_host(self);
 }
 
 void*
@@ -613,22 +613,24 @@ CFISH_Hash_To_Host_IMP(cfish_Hash *self) {
 
 void*
 CFISH_Float_To_Host_IMP(cfish_Float *self) {
-    CFISH_UNUSED_VAR(self);
-    CFISH_THROW(CFISH_ERR, "TODO");
-    CFISH_UNREACHABLE_RETURN(void*);
+    return PyFloat_FromDouble(CFISH_Float_Get_Value(self));
 }
 
 void*
 CFISH_Int_To_Host_IMP(cfish_Integer *self) {
-    CFISH_UNUSED_VAR(self);
-    CFISH_THROW(CFISH_ERR, "TODO");
-    CFISH_UNREACHABLE_RETURN(void*);
+    int64_t num = CFISH_Int_Get_Value(self);
+    return PyLong_FromLongLong(num);
 }
 
 void*
 CFISH_Bool_To_Host_IMP(cfish_Boolean *self) {
-    CFISH_UNUSED_VAR(self);
-    CFISH_THROW(CFISH_ERR, "TODO");
-    CFISH_UNREACHABLE_RETURN(void*);
+    if (self == CFISH_TRUE) {
+        Py_INCREF(Py_True);
+        return Py_True;
+    }
+    else {
+        Py_INCREF(Py_False);
+        return Py_False;
+    }
 }