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/04/20 06:37:52 UTC

[lucy-commits] svn commit: r1328194 - in /lucy/trunk: clownfish/src/CFCBindCore.c core/Lucy/Object/CharBuf.c core/Lucy/Object/Err.c core/Lucy/Object/Hash.c core/Lucy/Object/VTable.c core/Lucy/Util/SortExternal.c perl/xs/Lucy/Object/Err.c

Author: marvin
Date: Fri Apr 20 04:37:51 2012
New Revision: 1328194

URL: http://svn.apache.org/viewvc?rev=1328194&view=rev
Log:
Give METHOD the same interface as SUPER_METHOD.

Have METHOD take the full invocation symbol for the desired method, and have
it cast its return value.

Modified:
    lucy/trunk/clownfish/src/CFCBindCore.c
    lucy/trunk/core/Lucy/Object/CharBuf.c
    lucy/trunk/core/Lucy/Object/Err.c
    lucy/trunk/core/Lucy/Object/Hash.c
    lucy/trunk/core/Lucy/Object/VTable.c
    lucy/trunk/core/Lucy/Util/SortExternal.c
    lucy/trunk/perl/xs/Lucy/Object/Err.c

Modified: lucy/trunk/clownfish/src/CFCBindCore.c
URL: http://svn.apache.org/viewvc/lucy/trunk/clownfish/src/CFCBindCore.c?rev=1328194&r1=1328193&r2=1328194&view=diff
==============================================================================
--- lucy/trunk/clownfish/src/CFCBindCore.c (original)
+++ lucy/trunk/clownfish/src/CFCBindCore.c Fri Apr 20 04:37:51 2012
@@ -139,8 +139,6 @@ S_write_parcel_h(CFCBindCore *self) {
         CFCUtil_die("No source classes found.");
     }
     const char *prefix = CFCParcel_get_prefix(parcel);
-    const char *Prefix = CFCParcel_get_Prefix(parcel);
-    const char *PREFIX = CFCParcel_get_PREFIX(parcel);
     FREEMEM(ordered);
 
     // Create Clownfish aliases if necessary.
@@ -174,9 +172,8 @@ S_write_parcel_h(CFCBindCore *self) {
         "\n"
         "/* Access the function pointer for a given method from the vtable.\n"
         " */\n"
-        "#define %sMETHOD(_vtable, _class_nick, _meth_name) \\\n"
-        "     cfish_method(_vtable, \\\n"
-        "     %s ## _class_nick ## _ ## _meth_name ## _OFFSET)\n"
+        "#define CFISH_METHOD(_vtable, _full_meth) \\\n"
+        "     ((_full_meth ## _t)cfish_method(_vtable, _full_meth ## _OFFSET))\n"
         "\n"
         "static CHY_INLINE cfish_method_t\n"
         "cfish_method(const void *vtable, size_t offset) {\n"
@@ -207,7 +204,7 @@ S_write_parcel_h(CFCBindCore *self) {
         "        != (cfish_method_t)_full_func)\n"
         "\n"
         "#ifdef CFISH_USE_SHORT_NAMES\n"
-        "  #define METHOD                   %sMETHOD\n"
+        "  #define METHOD                   CFISH_METHOD\n"
         "  #define SUPER_METHOD             CFISH_SUPER_METHOD\n"
         "  #define OVERRIDDEN               CFISH_OVERRIDDEN\n"
         "#endif\n"
@@ -237,16 +234,12 @@ S_write_parcel_h(CFCBindCore *self) {
                   + strlen(self->header)
                   + strlen(aliases)
                   + strlen(typedefs)
-                  + strlen(PREFIX) + strlen(Prefix)
-                  + strlen(PREFIX)
                   + 2 * strlen(prefix)
                   + strlen(self->footer)
                   + 100;
     char *file_content = (char*)MALLOCATE(size);
     sprintf(file_content, pattern,
             self->header, aliases, typedefs,
-            PREFIX, Prefix,
-            PREFIX,
             prefix, prefix,
             self->footer);
 

Modified: lucy/trunk/core/Lucy/Object/CharBuf.c
URL: http://svn.apache.org/viewvc/lucy/trunk/core/Lucy/Object/CharBuf.c?rev=1328194&r1=1328193&r2=1328194&view=diff
==============================================================================
--- lucy/trunk/core/Lucy/Object/CharBuf.c (original)
+++ lucy/trunk/core/Lucy/Object/CharBuf.c Fri Apr 20 04:37:51 2012
@@ -133,8 +133,7 @@ CB_hash_sum(CharBuf *self) {
     uint32_t hashvalue = 5381;
     ZombieCharBuf *iterator = ZCB_WRAP(self);
 
-    const CB_Nip_One_t nip_one
-        = (CB_Nip_One_t)METHOD(iterator->vtable, CB, Nip_One);
+    const CB_Nip_One_t nip_one = METHOD(iterator->vtable, Lucy_CB_Nip_One);
     while (iterator->size) {
         uint32_t code_point = (uint32_t)nip_one((CharBuf*)iterator);
         hashvalue = ((hashvalue << 5) + hashvalue) ^ code_point;

Modified: lucy/trunk/core/Lucy/Object/Err.c
URL: http://svn.apache.org/viewvc/lucy/trunk/core/Lucy/Object/Err.c?rev=1328194&r1=1328193&r2=1328194&view=diff
==============================================================================
--- lucy/trunk/core/Lucy/Object/Err.c (original)
+++ lucy/trunk/core/Lucy/Object/Err.c Fri Apr 20 04:37:51 2012
@@ -68,8 +68,7 @@ Err_cat_mess(Err *self, const CharBuf *m
 void
 THROW(VTable *vtable, char *pattern, ...) {
     va_list args;
-    Err_Make_t make
-        = (Err_Make_t)METHOD(CERTIFY(vtable, VTABLE), Err, Make);
+    Err_Make_t make = METHOD(CERTIFY(vtable, VTABLE), Lucy_Err_Make);
     Err *err = (Err*)CERTIFY(make(NULL), ERR);
     CharBuf *mess = Err_Get_Mess(err);
 
@@ -172,8 +171,7 @@ void
 Err_throw_at(VTable *vtable, const char *file, int line,
              const char *func, const char *pattern, ...) {
     va_list args;
-    Err_Make_t make
-        = (Err_Make_t)METHOD(CERTIFY(vtable, VTABLE), Err, Make);
+    Err_Make_t make = METHOD(CERTIFY(vtable, VTABLE), Lucy_Err_Make);
     Err *err = (Err*)CERTIFY(make(NULL), ERR);
     CharBuf *mess = Err_Get_Mess(err);
 

Modified: lucy/trunk/core/Lucy/Object/Hash.c
URL: http://svn.apache.org/viewvc/lucy/trunk/core/Lucy/Object/Hash.c?rev=1328194&r1=1328193&r2=1328194&view=diff
==============================================================================
--- lucy/trunk/core/Lucy/Object/Hash.c (original)
+++ lucy/trunk/core/Lucy/Object/Hash.c Fri Apr 20 04:37:51 2012
@@ -144,7 +144,7 @@ Hash_load(Hash *self, Obj *dump) {
 
         // Dispatch to an alternate Load() method.
         if (vtable) {
-            Obj_Load_t load = (Obj_Load_t)METHOD(vtable, Obj, Load);
+            Obj_Load_t load = METHOD(vtable, Lucy_Obj_Load);
             if (load == Obj_load) {
                 THROW(ERR, "Abstract method Load() not defined for %o",
                       VTable_Get_Name(vtable));

Modified: lucy/trunk/core/Lucy/Object/VTable.c
URL: http://svn.apache.org/viewvc/lucy/trunk/core/Lucy/Object/VTable.c?rev=1328194&r1=1328193&r2=1328194&view=diff
==============================================================================
--- lucy/trunk/core/Lucy/Object/VTable.c (original)
+++ lucy/trunk/core/Lucy/Object/VTable.c Fri Apr 20 04:37:51 2012
@@ -257,7 +257,7 @@ VTable_init_obj(VTable *self, void *allo
 
 Obj*
 VTable_load_obj(VTable *self, Obj *dump) {
-    Obj_Load_t load = (Obj_Load_t)METHOD(self, Obj, Load);
+    Obj_Load_t load = METHOD(self, Lucy_Obj_Load);
     if (load == Obj_load) {
         THROW(ERR, "Abstract method Load() not defined for %o", self->name);
     }

Modified: lucy/trunk/core/Lucy/Util/SortExternal.c
URL: http://svn.apache.org/viewvc/lucy/trunk/core/Lucy/Util/SortExternal.c?rev=1328194&r1=1328193&r2=1328194&view=diff
==============================================================================
--- lucy/trunk/core/Lucy/Util/SortExternal.c (original)
+++ lucy/trunk/core/Lucy/Util/SortExternal.c Fri Apr 20 04:37:51 2012
@@ -126,7 +126,7 @@ SortEx_sort_cache(SortExternal *self) {
     if (self->cache_max != 0) {
         VTable *vtable = SortEx_Get_VTable(self);
         Lucy_Sort_Compare_t compare
-            = (Lucy_Sort_Compare_t)METHOD(vtable, SortEx, Compare);
+            = (Lucy_Sort_Compare_t)METHOD(vtable, Lucy_SortEx_Compare);
         if (self->scratch_cap < self->cache_cap) {
             self->scratch_cap = self->cache_cap;
             self->scratch = (uint8_t*)REALLOCATE(
@@ -220,7 +220,7 @@ S_absorb_slices(SortExternal *self, uint
     uint32_t   *slice_sizes  = self->slice_sizes;
     VTable     *vtable       = SortEx_Get_VTable(self);
     Lucy_Sort_Compare_t compare
-        = (Lucy_Sort_Compare_t)METHOD(vtable, SortEx, Compare);
+        = (Lucy_Sort_Compare_t)METHOD(vtable, Lucy_SortEx_Compare);
 
     if (self->cache_max != 0) { THROW(ERR, "Can't refill unless empty"); }
 
@@ -310,7 +310,7 @@ S_find_slice_size(SortExternal *self, ui
     uint8_t *const   cache   = self->cache;
     const size_t     width   = self->width;
     SortEx_Compare_t compare
-        = (SortEx_Compare_t)METHOD(SortEx_Get_VTable(self), SortEx, Compare);
+        = METHOD(SortEx_Get_VTable(self), Lucy_SortEx_Compare);
 
     // Binary search.
     while (hi - lo > 1) {

Modified: lucy/trunk/perl/xs/Lucy/Object/Err.c
URL: http://svn.apache.org/viewvc/lucy/trunk/perl/xs/Lucy/Object/Err.c?rev=1328194&r1=1328193&r2=1328194&view=diff
==============================================================================
--- lucy/trunk/perl/xs/Lucy/Object/Err.c (original)
+++ lucy/trunk/perl/xs/Lucy/Object/Err.c Fri Apr 20 04:37:51 2012
@@ -83,8 +83,8 @@ lucy_Err_to_host(lucy_Err *self) {
 
 void
 lucy_Err_throw_mess(lucy_VTable *vtable, lucy_CharBuf *message) {
-    Lucy_Err_Make_t make = (Lucy_Err_Make_t)LUCY_METHOD(
-                               CFISH_CERTIFY(vtable, LUCY_VTABLE), Err, Make);
+    Lucy_Err_Make_t make
+        = CFISH_METHOD(CFISH_CERTIFY(vtable, LUCY_VTABLE), Lucy_Err_Make);
     lucy_Err *err = (lucy_Err*)CFISH_CERTIFY(make(NULL), LUCY_ERR);
     Lucy_Err_Cat_Mess(err, message);
     CFISH_DECREF(message);