You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by nw...@apache.org on 2015/05/09 19:50:07 UTC
[10/11] lucy-clownfish git commit: Pass class to PerlMethod ctor
directly
Pass class to PerlMethod ctor directly
Project: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/commit/ee9fda0c
Tree: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/tree/ee9fda0c
Diff: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/diff/ee9fda0c
Branch: refs/heads/master
Commit: ee9fda0c6b31b92bc56798b60053ae74d42be037
Parents: a35d347
Author: Nick Wellnhofer <we...@aevum.de>
Authored: Tue Apr 21 10:04:00 2015 +0200
Committer: Nick Wellnhofer <we...@aevum.de>
Committed: Thu May 7 21:19:37 2015 +0200
----------------------------------------------------------------------
compiler/perl/lib/Clownfish/CFC.xs | 5 +++--
compiler/src/CFCPerlClass.c | 2 +-
compiler/src/CFCPerlMethod.c | 8 ++++----
compiler/src/CFCPerlMethod.h | 5 +++--
4 files changed, 11 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/ee9fda0c/compiler/perl/lib/Clownfish/CFC.xs
----------------------------------------------------------------------
diff --git a/compiler/perl/lib/Clownfish/CFC.xs b/compiler/perl/lib/Clownfish/CFC.xs
index 627e27a..a894710 100644
--- a/compiler/perl/lib/Clownfish/CFC.xs
+++ b/compiler/perl/lib/Clownfish/CFC.xs
@@ -2124,10 +2124,11 @@ OUTPUT: RETVAL
MODULE = Clownfish PACKAGE = Clownfish::CFC::Binding::Perl::Method
SV*
-_new(method)
+_new(klass, method)
+ CFCClass *klass
CFCMethod *method;
CODE:
- CFCPerlMethod *self = CFCPerlMethod_new(method);
+ CFCPerlMethod *self = CFCPerlMethod_new(klass, method);
RETVAL = S_cfcbase_to_perlref(self);
CFCBase_decref((CFCBase*)self);
OUTPUT: RETVAL
http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/ee9fda0c/compiler/src/CFCPerlClass.c
----------------------------------------------------------------------
diff --git a/compiler/src/CFCPerlClass.c b/compiler/src/CFCPerlClass.c
index 93bf6ae..dad5f72 100644
--- a/compiler/src/CFCPerlClass.c
+++ b/compiler/src/CFCPerlClass.c
@@ -257,7 +257,7 @@ CFCPerlClass_method_bindings(CFCClass *klass) {
* this way allows SUPER:: invocations from Perl-space to work
* properly.
*/
- CFCPerlMethod *meth_binding = CFCPerlMethod_new(method);
+ CFCPerlMethod *meth_binding = CFCPerlMethod_new(klass, method);
size_t size = (num_bound + 2) * sizeof(CFCPerlMethod*);
bound = (CFCPerlMethod**)REALLOCATE(bound, size);
bound[num_bound] = meth_binding;
http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/ee9fda0c/compiler/src/CFCPerlMethod.c
----------------------------------------------------------------------
diff --git a/compiler/src/CFCPerlMethod.c b/compiler/src/CFCPerlMethod.c
index 08d01a6..0c2861c 100644
--- a/compiler/src/CFCPerlMethod.c
+++ b/compiler/src/CFCPerlMethod.c
@@ -94,16 +94,16 @@ static const CFCMeta CFCPERLMETHOD_META = {
};
CFCPerlMethod*
-CFCPerlMethod_new(CFCMethod *method) {
+CFCPerlMethod_new(CFCClass *klass, CFCMethod *method) {
CFCPerlMethod *self
= (CFCPerlMethod*)CFCBase_allocate(&CFCPERLMETHOD_META);
- return CFCPerlMethod_init(self, method);
+ return CFCPerlMethod_init(self, klass, method);
}
CFCPerlMethod*
-CFCPerlMethod_init(CFCPerlMethod *self, CFCMethod *method) {
+CFCPerlMethod_init(CFCPerlMethod *self, CFCClass *klass, CFCMethod *method) {
CFCParamList *param_list = CFCMethod_get_param_list(method);
- const char *class_name = CFCMethod_get_class_name(method);
+ const char *class_name = CFCClass_get_name(klass);
int use_labeled_params = CFCParamList_num_vars(param_list) > 2
? 1 : 0;
http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/ee9fda0c/compiler/src/CFCPerlMethod.h
----------------------------------------------------------------------
diff --git a/compiler/src/CFCPerlMethod.h b/compiler/src/CFCPerlMethod.h
index 72cd286..b16a97e 100644
--- a/compiler/src/CFCPerlMethod.h
+++ b/compiler/src/CFCPerlMethod.h
@@ -36,13 +36,14 @@ struct CFCClass;
struct CFCMethod;
CFCPerlMethod*
-CFCPerlMethod_new(struct CFCMethod *method);
+CFCPerlMethod_new(struct CFCClass *klass, struct CFCMethod *method);
/**
* @param method A Clownfish::CFC::Model::Method.
*/
CFCPerlMethod*
-CFCPerlMethod_init(CFCPerlMethod *self, struct CFCMethod *method);
+CFCPerlMethod_init(CFCPerlMethod *self, struct CFCClass *klass,
+ struct CFCMethod *method);
void
CFCPerlMethod_destroy(CFCPerlMethod *self);