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 2011/12/15 07:38:27 UTC
[lucy-commits] svn commit: r1214630 - /incubator/lucy/trunk/clownfish/src/
Author: marvin
Date: Thu Dec 15 06:38:26 2011
New Revision: 1214630
URL: http://svn.apache.org/viewvc?rev=1214630&view=rev
Log:
Use a basic metaclass struct for CFC objects.
In order to get rid of the Perl objects currently at the center of CFC's core,
we need to implement polymorphic destructors in our C code. We may as well
use metaclass/vtable structs to store shared info like destructor pointers,
class names, etc.
Modified:
incubator/lucy/trunk/clownfish/src/CFCBase.c
incubator/lucy/trunk/clownfish/src/CFCBase.h
incubator/lucy/trunk/clownfish/src/CFCBindClass.c
incubator/lucy/trunk/clownfish/src/CFCBindCore.c
incubator/lucy/trunk/clownfish/src/CFCCBlock.c
incubator/lucy/trunk/clownfish/src/CFCClass.c
incubator/lucy/trunk/clownfish/src/CFCDocuComment.c
incubator/lucy/trunk/clownfish/src/CFCDumpable.c
incubator/lucy/trunk/clownfish/src/CFCFile.c
incubator/lucy/trunk/clownfish/src/CFCFunction.c
incubator/lucy/trunk/clownfish/src/CFCHierarchy.c
incubator/lucy/trunk/clownfish/src/CFCMemPool.c
incubator/lucy/trunk/clownfish/src/CFCMethod.c
incubator/lucy/trunk/clownfish/src/CFCParamList.c
incubator/lucy/trunk/clownfish/src/CFCParcel.c
incubator/lucy/trunk/clownfish/src/CFCParser.c
incubator/lucy/trunk/clownfish/src/CFCPerlClass.c
incubator/lucy/trunk/clownfish/src/CFCPerlConstructor.c
incubator/lucy/trunk/clownfish/src/CFCPerlMethod.c
incubator/lucy/trunk/clownfish/src/CFCPerlPod.c
incubator/lucy/trunk/clownfish/src/CFCPerlSub.c
incubator/lucy/trunk/clownfish/src/CFCPerlSub.h
incubator/lucy/trunk/clownfish/src/CFCSymbol.c
incubator/lucy/trunk/clownfish/src/CFCType.c
incubator/lucy/trunk/clownfish/src/CFCVariable.c
Modified: incubator/lucy/trunk/clownfish/src/CFCBase.c
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/src/CFCBase.c?rev=1214630&r1=1214629&r2=1214630&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/src/CFCBase.c (original)
+++ incubator/lucy/trunk/clownfish/src/CFCBase.c Thu Dec 15 06:38:26 2011
@@ -25,16 +25,15 @@
#include "CFCUtil.h"
CFCBase*
-CFCBase_allocate(size_t size, const char *klass) {
- CFCBase *self = (CFCBase*)CALLOCATE(size, 1);
- self->perl_obj = CFCUtil_make_perl_obj(self, klass);
- self->cfc_class = CFCUtil_strdup(klass);
+CFCBase_allocate(const CFCMeta *meta) {
+ CFCBase *self = (CFCBase*)CALLOCATE(meta->obj_alloc_size, 1);
+ self->perl_obj = CFCUtil_make_perl_obj(self, meta->cfc_class);
+ self->meta = meta;
return self;
}
void
CFCBase_destroy(CFCBase *self) {
- FREEMEM(self->cfc_class);
FREEMEM(self);
}
@@ -70,7 +69,7 @@ CFCBase_get_perl_obj(CFCBase *self) {
const char*
CFCBase_get_cfc_class(CFCBase *self) {
- return self->cfc_class;
+ return self->meta->cfc_class;
}
Modified: incubator/lucy/trunk/clownfish/src/CFCBase.h
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/src/CFCBase.h?rev=1214630&r1=1214629&r2=1214630&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/src/CFCBase.h (original)
+++ incubator/lucy/trunk/clownfish/src/CFCBase.h Thu Dec 15 06:38:26 2011
@@ -24,13 +24,20 @@ extern "C" {
#include <stddef.h>
typedef struct CFCBase CFCBase;
+typedef struct CFCMeta CFCMeta;
+typedef void (*CFCBase_destroy_t)(CFCBase *self);
#ifdef CFC_NEED_BASE_STRUCT_DEF
struct CFCBase {
- char *cfc_class;
+ const CFCMeta *meta;
void *perl_obj;
};
#endif
+struct CFCMeta {
+ char *cfc_class;
+ size_t obj_alloc_size;
+ CFCBase_destroy_t destroy;
+};
/** Allocate a new CFC object.
*
@@ -38,7 +45,7 @@ struct CFCBase {
* @param klass Class name.
*/
CFCBase*
-CFCBase_allocate(size_t size, const char *klass);
+CFCBase_allocate(const CFCMeta *meta);
/** Clean up CFCBase member variables as necessary and free the object blob
* itself.
Modified: incubator/lucy/trunk/clownfish/src/CFCBindClass.c
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/src/CFCBindClass.c?rev=1214630&r1=1214629&r2=1214630&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/src/CFCBindClass.c (original)
+++ incubator/lucy/trunk/clownfish/src/CFCBindClass.c Thu Dec 15 06:38:26 2011
@@ -92,11 +92,15 @@ S_vt_singleton_def(CFCBindClass *self);
static char*
S_short_names(CFCBindClass *self);
+const static CFCMeta CFCBINDCLASS_META = {
+ "Clownfish::Binding::Core::Class",
+ sizeof(CFCBindClass),
+ (CFCBase_destroy_t)CFCBindClass_destroy
+};
+
CFCBindClass*
CFCBindClass_new(CFCClass *client) {
- CFCBindClass *self
- = (CFCBindClass*)CFCBase_allocate(sizeof(CFCBindClass),
- "Clownfish::Binding::Core::Class");
+ CFCBindClass *self = (CFCBindClass*)CFCBase_allocate(&CFCBINDCLASS_META);
return CFCBindClass_init(self, client);
}
Modified: incubator/lucy/trunk/clownfish/src/CFCBindCore.c
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/src/CFCBindCore.c?rev=1214630&r1=1214629&r2=1214630&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/src/CFCBindCore.c (original)
+++ incubator/lucy/trunk/clownfish/src/CFCBindCore.c Thu Dec 15 06:38:26 2011
@@ -47,12 +47,16 @@ S_write_parcel_h(CFCBindCore *self);
static void
S_write_parcel_c(CFCBindCore *self);
+const static CFCMeta CFCBINDCORE_META = {
+ "Clownfish::Binding::Core",
+ sizeof(CFCBindCore),
+ (CFCBase_destroy_t)CFCBindCore_destroy
+};
+
CFCBindCore*
CFCBindCore_new(CFCHierarchy *hierarchy, const char *dest, const char *header,
const char *footer) {
- CFCBindCore *self
- = (CFCBindCore*)CFCBase_allocate(sizeof(CFCBindCore),
- "Clownfish::Binding::Core");
+ CFCBindCore *self = (CFCBindCore*)CFCBase_allocate(&CFCBINDCORE_META);
return CFCBindCore_init(self, hierarchy, dest, header, footer);
}
Modified: incubator/lucy/trunk/clownfish/src/CFCCBlock.c
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/src/CFCCBlock.c?rev=1214630&r1=1214629&r2=1214630&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/src/CFCCBlock.c (original)
+++ incubator/lucy/trunk/clownfish/src/CFCCBlock.c Thu Dec 15 06:38:26 2011
@@ -24,10 +24,15 @@ struct CFCCBlock {
char *contents;
};
+const static CFCMeta CFCCBLOCK_META = {
+ "Clownfish::CBlock",
+ sizeof(CFCCBlock),
+ (CFCBase_destroy_t)CFCCBlock_destroy
+};
+
CFCCBlock*
CFCCBlock_new(const char *contents) {
- CFCCBlock *self = (CFCCBlock*)CFCBase_allocate(sizeof(CFCCBlock),
- "Clownfish::CBlock");
+ CFCCBlock *self = (CFCCBlock*)CFCBase_allocate(&CFCCBLOCK_META);
return CFCCBlock_init(self, contents);
}
Modified: incubator/lucy/trunk/clownfish/src/CFCClass.c
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/src/CFCClass.c?rev=1214630&r1=1214629&r2=1214630&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/src/CFCClass.c (original)
+++ incubator/lucy/trunk/clownfish/src/CFCClass.c Thu Dec 15 06:38:26 2011
@@ -102,14 +102,19 @@ S_create_dumpables(CFCClass *self);
static void
S_bequeath_methods(CFCClass *self);
+const static CFCMeta CFCCLASS_META = {
+ "Clownfish::Class",
+ sizeof(CFCClass),
+ (CFCBase_destroy_t)CFCClass_destroy
+};
+
CFCClass*
CFCClass_create(struct CFCParcel *parcel, const char *exposure,
const char *class_name, const char *cnick,
const char *micro_sym, CFCDocuComment *docucomment,
const char *source_class, const char *parent_class_name,
int is_final, int is_inert) {
- CFCClass *self = (CFCClass*)CFCBase_allocate(sizeof(CFCClass),
- "Clownfish::Class");
+ CFCClass *self = (CFCClass*)CFCBase_allocate(&CFCCLASS_META);
return CFCClass_do_create(self, parcel, exposure, class_name, cnick,
micro_sym, docucomment, source_class,
parent_class_name, is_final, is_inert);
Modified: incubator/lucy/trunk/clownfish/src/CFCDocuComment.c
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/src/CFCDocuComment.c?rev=1214630&r1=1214629&r2=1214630&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/src/CFCDocuComment.c (original)
+++ incubator/lucy/trunk/clownfish/src/CFCDocuComment.c Thu Dec 15 06:38:26 2011
@@ -78,12 +78,17 @@ S_strip(char *comment) {
FREEMEM(scratch);
}
+const static CFCMeta CFCDOCUCOMMENT_META = {
+ "Clownfish::DocuComment",
+ sizeof(CFCDocuComment),
+ (CFCBase_destroy_t)CFCDocuComment_destroy
+};
+
CFCDocuComment*
CFCDocuComment_parse(const char *raw_text) {
char *text = CFCUtil_strdup(raw_text);
CFCDocuComment *self
- = (CFCDocuComment*)CFCBase_allocate(sizeof(CFCDocuComment),
- "Clownfish::DocuComment");
+ = (CFCDocuComment*)CFCBase_allocate(&CFCDOCUCOMMENT_META);
// Strip whitespace, comment open, close, and left border.
CFCUtil_trim_whitespace(text);
Modified: incubator/lucy/trunk/clownfish/src/CFCDumpable.c
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/src/CFCDumpable.c?rev=1214630&r1=1214629&r2=1214630&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/src/CFCDumpable.c (original)
+++ incubator/lucy/trunk/clownfish/src/CFCDumpable.c Thu Dec 15 06:38:26 2011
@@ -61,10 +61,15 @@ struct CFCDumpable {
CFCBase base;
};
+const static CFCMeta CFCDUMPABLE_META = {
+ "Clownfish::Dumpable",
+ sizeof(CFCDumpable),
+ (CFCBase_destroy_t)CFCDumpable_destroy
+};
+
CFCDumpable*
CFCDumpable_new(void) {
- CFCDumpable *self = (CFCDumpable*)CFCBase_allocate(sizeof(CFCDumpable),
- "Clownfish::Dumpable");
+ CFCDumpable *self = (CFCDumpable*)CFCBase_allocate(&CFCDUMPABLE_META);
return CFCDumpable_init(self);
}
Modified: incubator/lucy/trunk/clownfish/src/CFCFile.c
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/src/CFCFile.c?rev=1214630&r1=1214629&r2=1214630&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/src/CFCFile.c (original)
+++ incubator/lucy/trunk/clownfish/src/CFCFile.c Thu Dec 15 06:38:26 2011
@@ -41,11 +41,16 @@ struct CFCFile {
char *path_part;
};
+const static CFCMeta CFCFILE_META = {
+ "Clownfish::File",
+ sizeof(CFCFile),
+ (CFCBase_destroy_t)CFCFile_destroy
+};
+
CFCFile*
CFCFile_new(const char *source_class) {
- CFCFile *self = (CFCFile*)CFCBase_allocate(sizeof(CFCFile),
- "Clownfish::File");
+ CFCFile *self = (CFCFile*)CFCBase_allocate(&CFCFILE_META);
return CFCFile_init(self, source_class);
}
Modified: incubator/lucy/trunk/clownfish/src/CFCFunction.c
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/src/CFCFunction.c?rev=1214630&r1=1214629&r2=1214630&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/src/CFCFunction.c (original)
+++ incubator/lucy/trunk/clownfish/src/CFCFunction.c Thu Dec 15 06:38:26 2011
@@ -30,14 +30,19 @@
#include "CFCDocuComment.h"
#include "CFCUtil.h"
+const static CFCMeta CFCFUNCTION_META = {
+ "Clownfish::Function",
+ sizeof(CFCFunction),
+ (CFCBase_destroy_t)CFCFunction_destroy
+};
+
CFCFunction*
CFCFunction_new(CFCParcel *parcel, const char *exposure,
const char *class_name, const char *class_cnick,
const char *micro_sym, CFCType *return_type,
CFCParamList *param_list, CFCDocuComment *docucomment,
int is_inline) {
- CFCFunction *self = (CFCFunction*)CFCBase_allocate(sizeof(CFCFunction),
- "Clownfish::Function");
+ CFCFunction *self = (CFCFunction*)CFCBase_allocate(&CFCFUNCTION_META);
return CFCFunction_init(self, parcel, exposure, class_name, class_cnick,
micro_sym, return_type, param_list, docucomment,
is_inline);
Modified: incubator/lucy/trunk/clownfish/src/CFCHierarchy.c
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/src/CFCHierarchy.c?rev=1214630&r1=1214629&r2=1214630&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/src/CFCHierarchy.c (original)
+++ incubator/lucy/trunk/clownfish/src/CFCHierarchy.c Thu Dec 15 06:38:26 2011
@@ -62,11 +62,15 @@ S_fetch_file(CFCHierarchy *self, const c
static int
S_do_propagate_modified(CFCHierarchy *self, CFCClass *klass, int modified);
+const static CFCMeta CFCHIERARCHY_META = {
+ "Clownfish::Hierarchy",
+ sizeof(CFCHierarchy),
+ (CFCBase_destroy_t)CFCHierarchy_destroy
+};
+
CFCHierarchy*
CFCHierarchy_new(const char *source, const char *dest, CFCParser *parser) {
- CFCHierarchy *self
- = (CFCHierarchy*)CFCBase_allocate(sizeof(CFCHierarchy),
- "Clownfish::Hierarchy");
+ CFCHierarchy *self = (CFCHierarchy*)CFCBase_allocate(&CFCHIERARCHY_META);
return CFCHierarchy_init(self, source, dest, parser);
}
Modified: incubator/lucy/trunk/clownfish/src/CFCMemPool.c
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/src/CFCMemPool.c?rev=1214630&r1=1214629&r2=1214630&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/src/CFCMemPool.c (original)
+++ incubator/lucy/trunk/clownfish/src/CFCMemPool.c Thu Dec 15 06:38:26 2011
@@ -30,10 +30,15 @@ struct CFCMemPool {
char **arenas;
};
+const static CFCMeta CFCMEMPOOL_META = {
+ "Clownfish::MemPool",
+ sizeof(CFCMemPool),
+ (CFCBase_destroy_t)CFCMemPool_destroy
+};
+
CFCMemPool*
CFCMemPool_new(size_t arena_size) {
- CFCMemPool *self = (CFCMemPool*)CFCBase_allocate(sizeof(CFCMemPool),
- "Clownfish::MemPool");
+ CFCMemPool *self = (CFCMemPool*)CFCBase_allocate(&CFCMEMPOOL_META);
return CFCMemPool_init(self, arena_size);
}
Modified: incubator/lucy/trunk/clownfish/src/CFCMethod.c
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/src/CFCMethod.c?rev=1214630&r1=1214629&r2=1214630&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/src/CFCMethod.c (original)
+++ incubator/lucy/trunk/clownfish/src/CFCMethod.c Thu Dec 15 06:38:26 2011
@@ -48,13 +48,18 @@ struct CFCMethod {
static void
S_update_typedefs(CFCMethod *self, const char *short_sym);
+const static CFCMeta CFCMETHOD_META = {
+ "Clownfish::Method",
+ sizeof(CFCMethod),
+ (CFCBase_destroy_t)CFCMethod_destroy
+};
+
CFCMethod*
CFCMethod_new(CFCParcel *parcel, const char *exposure, const char *class_name,
const char *class_cnick, const char *macro_sym,
CFCType *return_type, CFCParamList *param_list,
CFCDocuComment *docucomment, int is_final, int is_abstract) {
- CFCMethod *self = (CFCMethod*)CFCBase_allocate(sizeof(CFCMethod),
- "Clownfish::Method");
+ CFCMethod *self = (CFCMethod*)CFCBase_allocate(&CFCMETHOD_META);
return CFCMethod_init(self, parcel, exposure, class_name, class_cnick,
macro_sym, return_type, param_list, docucomment,
is_final, is_abstract);
Modified: incubator/lucy/trunk/clownfish/src/CFCParamList.c
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/src/CFCParamList.c?rev=1214630&r1=1214629&r2=1214630&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/src/CFCParamList.c (original)
+++ incubator/lucy/trunk/clownfish/src/CFCParamList.c Thu Dec 15 06:38:26 2011
@@ -37,10 +37,15 @@ struct CFCParamList {
static void
S_generate_c_strings(CFCParamList *self);
+const static CFCMeta CFCPARAMLIST_META = {
+ "Clownfish::ParamList",
+ sizeof(CFCParamList),
+ (CFCBase_destroy_t)CFCParamList_destroy
+};
+
CFCParamList*
CFCParamList_new(int variadic) {
- CFCParamList *self = (CFCParamList*)CFCBase_allocate(sizeof(CFCParamList),
- "Clownfish::ParamList");
+ CFCParamList *self = (CFCParamList*)CFCBase_allocate(&CFCPARAMLIST_META);
return CFCParamList_init(self, variadic);
}
Modified: incubator/lucy/trunk/clownfish/src/CFCParcel.c
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/src/CFCParcel.c?rev=1214630&r1=1214629&r2=1214630&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/src/CFCParcel.c (original)
+++ incubator/lucy/trunk/clownfish/src/CFCParcel.c Thu Dec 15 06:38:26 2011
@@ -99,10 +99,15 @@ S_validate_name_or_cnick(const char *ori
return true;
}
+const static CFCMeta CFCPARCEL_META = {
+ "Clownfish::Parcel",
+ sizeof(CFCParcel),
+ (CFCBase_destroy_t)CFCParcel_destroy
+};
+
CFCParcel*
CFCParcel_new(const char *name, const char *cnick) {
- CFCParcel *self = (CFCParcel*)CFCBase_allocate(sizeof(CFCParcel),
- "Clownfish::Parcel");
+ CFCParcel *self = (CFCParcel*)CFCBase_allocate(&CFCPARCEL_META);
return CFCParcel_init(self, name, cnick);
}
Modified: incubator/lucy/trunk/clownfish/src/CFCParser.c
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/src/CFCParser.c?rev=1214630&r1=1214629&r2=1214630&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/src/CFCParser.c (original)
+++ incubator/lucy/trunk/clownfish/src/CFCParser.c Thu Dec 15 06:38:26 2011
@@ -43,10 +43,15 @@ struct CFCParser {
CFCMemPool *pool;
};
+const static CFCMeta CFCPARSER_META = {
+ "Clownfish::Parser",
+ sizeof(CFCParser),
+ (CFCBase_destroy_t)CFCParser_destroy
+};
+
CFCParser*
CFCParser_new(void) {
- CFCParser *self = (CFCParser*)CFCBase_allocate(sizeof(CFCParser),
- "Clownfish::Parser");
+ CFCParser *self = (CFCParser*)CFCBase_allocate(&CFCPARSER_META);
return CFCParser_init(self);
}
Modified: incubator/lucy/trunk/clownfish/src/CFCPerlClass.c
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/src/CFCPerlClass.c?rev=1214630&r1=1214629&r2=1214630&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/src/CFCPerlClass.c (original)
+++ incubator/lucy/trunk/clownfish/src/CFCPerlClass.c Thu Dec 15 06:38:26 2011
@@ -42,12 +42,16 @@ static CFCPerlClass **registry = NULL;
static size_t registry_size = 0;
static size_t registry_cap = 0;
+const static CFCMeta CFCPERLCLASS_META = {
+ "Clownfish::Binding::Perl::Class",
+ sizeof(CFCPerlClass),
+ (CFCBase_destroy_t)CFCPerlClass_destroy
+};
+
CFCPerlClass*
CFCPerlClass_new(CFCParcel *parcel, const char *class_name, CFCClass *client,
const char *xs_code, CFCPerlPod *pod_spec) {
- CFCPerlClass *self
- = (CFCPerlClass*)CFCBase_allocate(sizeof(CFCPerlClass),
- "Clownfish::Binding::Perl::Class");
+ CFCPerlClass *self = (CFCPerlClass*)CFCBase_allocate(&CFCPERLCLASS_META);
return CFCPerlClass_init(self, parcel, class_name, client, xs_code,
pod_spec);
}
Modified: incubator/lucy/trunk/clownfish/src/CFCPerlConstructor.c
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/src/CFCPerlConstructor.c?rev=1214630&r1=1214629&r2=1214630&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/src/CFCPerlConstructor.c (original)
+++ incubator/lucy/trunk/clownfish/src/CFCPerlConstructor.c Thu Dec 15 06:38:26 2011
@@ -38,11 +38,16 @@ struct CFCPerlConstructor {
CFCFunction *init_func;
};
+const static CFCMeta CFCPERLCONSTRUCTOR_META = {
+ "Clownfish::Binding::Perl::Constructor",
+ sizeof(CFCPerlConstructor),
+ (CFCBase_destroy_t)CFCPerlConstructor_destroy
+};
+
CFCPerlConstructor*
CFCPerlConstructor_new(CFCClass *klass, const char *alias) {
CFCPerlConstructor *self
- = (CFCPerlConstructor*)CFCBase_allocate(sizeof(CFCPerlConstructor),
- "Clownfish::Binding::Perl::Constructor");
+ = (CFCPerlConstructor*)CFCBase_allocate(&CFCPERLCONSTRUCTOR_META);
return CFCPerlConstructor_init(self, klass, alias);
}
Modified: incubator/lucy/trunk/clownfish/src/CFCPerlMethod.c
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/src/CFCPerlMethod.c?rev=1214630&r1=1214629&r2=1214630&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/src/CFCPerlMethod.c (original)
+++ incubator/lucy/trunk/clownfish/src/CFCPerlMethod.c Thu Dec 15 06:38:26 2011
@@ -49,11 +49,16 @@ S_xsub_def_labeled_params(CFCPerlMethod
static char*
S_xsub_def_positional_args(CFCPerlMethod *self);
+const static CFCMeta CFCPERLMETHOD_META = {
+ "Clownfish::Binding::Perl::Method",
+ sizeof(CFCPerlMethod),
+ (CFCBase_destroy_t)CFCPerlMethod_destroy
+};
+
CFCPerlMethod*
CFCPerlMethod_new(CFCMethod *method, const char *alias) {
CFCPerlMethod *self
- = (CFCPerlMethod*)CFCBase_allocate(sizeof(CFCPerlMethod),
- "Clownfish::Binding::Perl::Method");
+ = (CFCPerlMethod*)CFCBase_allocate(&CFCPERLMETHOD_META);
return CFCPerlMethod_init(self, method, alias);
}
Modified: incubator/lucy/trunk/clownfish/src/CFCPerlPod.c
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/src/CFCPerlPod.c?rev=1214630&r1=1214629&r2=1214630&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/src/CFCPerlPod.c (original)
+++ incubator/lucy/trunk/clownfish/src/CFCPerlPod.c Thu Dec 15 06:38:26 2011
@@ -50,11 +50,16 @@ struct CFCPerlPod {
size_t num_constructors;
};
+const static CFCMeta CFCPERLPOD_META = {
+ "Clownfish::Binding::Perl::Pod",
+ sizeof(CFCPerlPod),
+ (CFCBase_destroy_t)CFCPerlPod_destroy
+};
+
CFCPerlPod*
CFCPerlPod_new(const char *synopsis, const char *description) {
CFCPerlPod *self
- = (CFCPerlPod*)CFCBase_allocate(sizeof(CFCPerlPod),
- "Clownfish::Binding::Perl::Pod");
+ = (CFCPerlPod*)CFCBase_allocate(&CFCPERLPOD_META);
return CFCPerlPod_init(self, synopsis, description);
}
Modified: incubator/lucy/trunk/clownfish/src/CFCPerlSub.c
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/src/CFCPerlSub.c?rev=1214630&r1=1214629&r2=1214630&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/src/CFCPerlSub.c (original)
+++ incubator/lucy/trunk/clownfish/src/CFCPerlSub.c Thu Dec 15 06:38:26 2011
@@ -31,16 +31,6 @@
#endif
CFCPerlSub*
-CFCPerlSub_new(const char *klass, CFCParamList *param_list,
- const char *class_name, const char *alias,
- int use_labeled_params) {
- CFCPerlSub *self
- = (CFCPerlSub*)CFCBase_allocate(sizeof(CFCPerlSub), klass);
- return CFCPerlSub_init(self, param_list, class_name, alias,
- use_labeled_params);
-}
-
-CFCPerlSub*
CFCPerlSub_init(CFCPerlSub *self, CFCParamList *param_list,
const char *class_name, const char *alias,
int use_labeled_params) {
Modified: incubator/lucy/trunk/clownfish/src/CFCPerlSub.h
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/src/CFCPerlSub.h?rev=1214630&r1=1214629&r2=1214630&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/src/CFCPerlSub.h (original)
+++ incubator/lucy/trunk/clownfish/src/CFCPerlSub.h Thu Dec 15 06:38:26 2011
@@ -40,11 +40,6 @@ struct CFCPerlSub {
#endif
CFCPerlSub*
-CFCPerlSub_new(const char *klass, struct CFCParamList *param_list,
- const char *class_name, const char *alias,
- int use_labeled_params);
-
-CFCPerlSub*
CFCPerlSub_init(CFCPerlSub *self, struct CFCParamList *param_list,
const char *class_name, const char *alias,
int use_labeled_params);
Modified: incubator/lucy/trunk/clownfish/src/CFCSymbol.c
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/src/CFCSymbol.c?rev=1214630&r1=1214629&r2=1214630&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/src/CFCSymbol.c (original)
+++ incubator/lucy/trunk/clownfish/src/CFCSymbol.c Thu Dec 15 06:38:26 2011
@@ -27,12 +27,17 @@
#include "CFCParcel.h"
#include "CFCUtil.h"
+const static CFCMeta CFCSYMBOL_META = {
+ "Clownfish::Symbol",
+ sizeof(CFCSymbol),
+ (CFCBase_destroy_t)CFCSymbol_destroy
+};
+
CFCSymbol*
CFCSymbol_new(struct CFCParcel *parcel, const char *exposure,
const char *class_name, const char *class_cnick,
const char *micro_sym) {
- CFCSymbol *self = (CFCSymbol*)CFCBase_allocate(sizeof(CFCSymbol),
- "Clownfish::Symbol");
+ CFCSymbol *self = (CFCSymbol*)CFCBase_allocate(&CFCSYMBOL_META);
return CFCSymbol_init(self, parcel, exposure, class_name, class_cnick,
micro_sym);
}
Modified: incubator/lucy/trunk/clownfish/src/CFCType.c
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/src/CFCType.c?rev=1214630&r1=1214629&r2=1214630&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/src/CFCType.c (original)
+++ incubator/lucy/trunk/clownfish/src/CFCType.c Thu Dec 15 06:38:26 2011
@@ -43,11 +43,16 @@ struct CFCType {
struct CFCType *child;
};
+const static CFCMeta CFCTYPE_META= {
+ "Clownfish::Type",
+ sizeof(CFCType),
+ (CFCBase_destroy_t)CFCType_destroy
+};
+
CFCType*
CFCType_new(int flags, struct CFCParcel *parcel, const char *specifier,
int indirection, const char *c_string) {
- CFCType *self = (CFCType*)CFCBase_allocate(sizeof(CFCType),
- "Clownfish::Type");
+ CFCType *self = (CFCType*)CFCBase_allocate(&CFCTYPE_META);
return CFCType_init(self, flags, parcel, specifier, indirection,
c_string);
}
Modified: incubator/lucy/trunk/clownfish/src/CFCVariable.c
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/src/CFCVariable.c?rev=1214630&r1=1214629&r2=1214630&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/src/CFCVariable.c (original)
+++ incubator/lucy/trunk/clownfish/src/CFCVariable.c Thu Dec 15 06:38:26 2011
@@ -38,12 +38,17 @@ struct CFCVariable {
int inert;
};
+const static CFCMeta CFCVARIABLE_META = {
+ "Clownfish::Variable",
+ sizeof(CFCVariable),
+ (CFCBase_destroy_t)CFCVariable_destroy
+};
+
CFCVariable*
CFCVariable_new(struct CFCParcel *parcel, const char *exposure,
const char *class_name, const char *class_cnick,
const char *micro_sym, struct CFCType *type, int inert) {
- CFCVariable *self = (CFCVariable*)CFCBase_allocate(sizeof(CFCVariable),
- "Clownfish::Variable");
+ CFCVariable *self = (CFCVariable*)CFCBase_allocate(&CFCVARIABLE_META);
return CFCVariable_init(self, parcel, exposure, class_name, class_cnick,
micro_sym, type, inert);
}