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);