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/10/29 22:41:53 UTC
[lucy-commits] svn commit: r1195024 - in /incubator/lucy/trunk/clownfish: include/CFC.h
lib/Clownfish.xs lib/Clownfish/Binding/Perl/Class.pm src/CFCPerlClass.c
src/CFCPerlClass.h src/CFCPerlPod.c src/CFCPerlPod.h typemap
Author: marvin
Date: Sat Oct 29 20:41:53 2011
New Revision: 1195024
URL: http://svn.apache.org/viewvc?rev=1195024&view=rev
Log:
Factor CFCPerlPod out of CFCPerlClass.
The spec for generating POD for a CFCPerlClass is complex enough that it needs
its own dedicated data structure and behaviors. Start with utility routines
extracted from CFCPerlClass.
Added:
incubator/lucy/trunk/clownfish/src/CFCPerlPod.c
- copied, changed from r1194918, incubator/lucy/trunk/clownfish/src/CFCPerlClass.c
incubator/lucy/trunk/clownfish/src/CFCPerlPod.h
- copied, changed from r1194918, incubator/lucy/trunk/clownfish/src/CFCPerlClass.h
Modified:
incubator/lucy/trunk/clownfish/include/CFC.h
incubator/lucy/trunk/clownfish/lib/Clownfish.xs
incubator/lucy/trunk/clownfish/lib/Clownfish/Binding/Perl/Class.pm
incubator/lucy/trunk/clownfish/src/CFCPerlClass.c
incubator/lucy/trunk/clownfish/src/CFCPerlClass.h
incubator/lucy/trunk/clownfish/typemap
Modified: incubator/lucy/trunk/clownfish/include/CFC.h
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/include/CFC.h?rev=1195024&r1=1195023&r2=1195024&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/include/CFC.h (original)
+++ incubator/lucy/trunk/clownfish/include/CFC.h Sat Oct 29 20:41:53 2011
@@ -43,5 +43,6 @@
#include "CFCPerlMethod.h"
#include "CFCPerlClass.h"
#include "CFCPerlConstructor.h"
+#include "CFCPerlPod.h"
#include "CFCPerlTypeMap.h"
Modified: incubator/lucy/trunk/clownfish/lib/Clownfish.xs
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/lib/Clownfish.xs?rev=1195024&r1=1195023&r2=1195024&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/lib/Clownfish.xs (original)
+++ incubator/lucy/trunk/clownfish/lib/Clownfish.xs Sat Oct 29 20:41:53 2011
@@ -2037,17 +2037,35 @@ PPCODE:
END_SET_OR_GET_SWITCH
}
+MODULE = Clownfish PACKAGE = Clownfish::Binding::Perl::Pod
+
+SV*
+new(unused_sv)
+ SV *unused_sv;
+CODE:
+ (void)unused_sv;
+ CFCPerlPod *self = CFCPerlPod_new();
+ RETVAL = S_cfcbase_to_perlref(self);
+ CFCBase_decref((CFCBase*)self);
+OUTPUT: RETVAL
+
+void
+_destroy(self)
+ CFCPerlPod *self;
+PPCODE:
+ CFCPerlPod_destroy(self);
+
SV*
_perlify_doc_text(self, source)
- CFCPerlClass *self;
+ CFCPerlPod *self;
const char *source;
CODE:
- RETVAL = S_sv_eat_c_string(CFCPerlClass_perlify_doc_text(self, source));
+ RETVAL = S_sv_eat_c_string(CFCPerlPod_perlify_doc_text(self, source));
OUTPUT: RETVAL
SV*
_gen_subroutine_pod(self, func, sub_name, klass, code_sample, class_name, is_constructor)
- CFCPerlClass *self;
+ CFCPerlPod *self;
CFCFunction *func;
const char *sub_name;
CFCClass *klass;
@@ -2055,9 +2073,9 @@ _gen_subroutine_pod(self, func, sub_name
const char *class_name;
int is_constructor;
CODE:
- char *value = CFCPerlClass_gen_subroutine_pod(self, func, sub_name, klass,
- code_sample, class_name,
- is_constructor);
+ char *value = CFCPerlPod_gen_subroutine_pod(self, func, sub_name, klass,
+ code_sample, class_name,
+ is_constructor);
RETVAL = S_sv_eat_c_string(value);
OUTPUT: RETVAL
Modified: incubator/lucy/trunk/clownfish/lib/Clownfish/Binding/Perl/Class.pm
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/lib/Clownfish/Binding/Perl/Class.pm?rev=1195024&r1=1195023&r2=1195024&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/lib/Clownfish/Binding/Perl/Class.pm (original)
+++ incubator/lucy/trunk/clownfish/lib/Clownfish/Binding/Perl/Class.pm Sat Oct 29 20:41:53 2011
@@ -18,6 +18,7 @@ use warnings;
package Clownfish::Binding::Perl::Class;
use Clownfish::Util qw( verify_args );
+use Clownfish::Binding::Perl::Pod;
use Carp;
our %registry;
@@ -36,6 +37,7 @@ our %register_PARAMS = (
our %bind_methods;
our %bind_constructors;
our %make_pod;
+our %pod_spec;
sub register {
my ( $either, %args ) = @_;
@@ -67,6 +69,7 @@ sub register {
$bind_methods{$self} = $args{bind_methods};
$bind_constructors{$self} = $args{bind_constructors};
$make_pod{$self} = $args{make_pod};
+ $pod_spec{$self} = Clownfish::Binding::Perl::Pod->new;
# Add to registry.
$registry{ $args{class_name} } = $self;
@@ -79,12 +82,14 @@ sub DESTROY {
delete $bind_methods{$self};
delete $bind_constructors{$self};
delete $make_pod{$self};
+ delete $pod_spec{$self};
_destroy($self);
}
sub get_bind_methods { $bind_methods{ +shift } }
sub get_bind_constructors { $bind_constructors{ +shift } }
sub get_make_pod { $make_pod{ +shift } }
+sub get_pod_spec { $pod_spec{ +shift } }
sub constructor_bindings {
my $self = shift;
@@ -160,13 +165,14 @@ sub method_bindings {
sub create_pod {
my $self = shift;
my $pod_args = $self->get_make_pod or return;
+ my $pod_spec = $self->get_pod_spec;
my $class_name = $self->get_class_name;
my $class = $self->get_client or die "No client for $class_name";
my $docucom = $class->get_docucomment;
confess("No DocuComment for '$class_name'") unless $docucom;
- my $brief = $docucom->get_brief;
- my $description
- = _perlify_doc_text( $self, $pod_args->{description} || $docucom->get_long );
+ my $brief = $docucom->get_brief;
+ my $description = $pod_spec->_perlify_doc_text( $pod_args->{description}
+ || $docucom->get_long );
# Create SYNOPSIS.
my $synopsis_pod = '';
@@ -184,7 +190,7 @@ sub create_pod {
$constructor_pod = "=head1 CONSTRUCTORS\n\n";
for my $spec (@$constructors) {
if ( !ref $spec ) {
- $constructor_pod .= _perlify_doc_text( $self, $spec );
+ $constructor_pod .= $pod_spec->_perlify_doc_text($spec);
}
else {
my $func_name = $spec->{func} || 'init';
@@ -192,9 +198,9 @@ sub create_pod {
my $ctor_name = $spec->{name} || 'new';
my $code_sample = $spec->{sample};
my $sub_pod
- = _gen_subroutine_pod( $self, $init_func, $ctor_name,
+ = $pod_spec->_gen_subroutine_pod( $init_func, $ctor_name,
$class, $code_sample, $class_name, 1 );
- $constructor_pod .= _perlify_doc_text( $self, $sub_pod );
+ $constructor_pod .= $pod_spec->_perlify_doc_text($sub_pod);
}
}
}
@@ -215,14 +221,14 @@ sub create_pod {
}
else {
$method_pod
- = _gen_subroutine_pod( $self, $method, $meth_name, $class, '',
- $class_name, 0 );
+ = $pod_spec->_gen_subroutine_pod( $method, $meth_name, $class,
+ '', $class_name, 0 );
}
if ( $method->abstract ) {
- push @abstract_method_docs, _perlify_doc_text( $self, $method_pod );
+ push @abstract_method_docs, $pod_spec->_perlify_doc_text($method_pod);
}
else {
- push @method_docs, _perlify_doc_text( $self, $method_pod );
+ push @method_docs, $pod_spec->_perlify_doc_text($method_pod);
}
}
if (@method_docs) {
Modified: incubator/lucy/trunk/clownfish/src/CFCPerlClass.c
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/src/CFCPerlClass.c?rev=1195024&r1=1195023&r2=1195024&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/src/CFCPerlClass.c (original)
+++ incubator/lucy/trunk/clownfish/src/CFCPerlClass.c Sat Oct 29 20:41:53 2011
@@ -70,176 +70,6 @@ CFCPerlClass_get_client(CFCPerlClass *se
return self->client;
}
-static char*
-S_global_replace(const char *string, const char *match,
- const char *replacement) {
- char *found = (char*)string;
- int string_len = strlen(string);
- int match_len = strlen(match);
- int replacement_len = strlen(replacement);
- int len_diff = replacement_len - match_len;
-
- // Allocate space.
- unsigned count = 0;
- while (NULL != (found = strstr(found, match))) {
- count++;
- found += match_len;
- }
- int size = string_len + count * len_diff + 1;
- char *modified = (char*)MALLOCATE(size);
- modified[size - 1] = 0; // NULL-terminate.
-
- // Iterate through all matches.
- found = (char*)string;
- char *target = modified;
- size_t last_end = 0;
- if (count) {
- while (NULL != (found = strstr(found, match))) {
- size_t pos = found - string;
- size_t unchanged_len = pos - last_end;
- found += match_len;
- memcpy(target, string + last_end, unchanged_len);
- target += unchanged_len;
- last_end = pos + match_len;
- memcpy(target, replacement, replacement_len);
- target += replacement_len;
- }
- }
- size_t remaining = string_len - last_end;
- memcpy(target, string + string_len - remaining, remaining);
-
- return modified;
-}
-
-char*
-CFCPerlClass_gen_subroutine_pod(CFCPerlClass *self, CFCFunction *func,
- const char *sub_name, CFCClass *klass,
- const char *code_sample,
- const char *class_name, int is_constructor) {
- // Only allow "public" subs to be exposed as part of the public API.
- if (!CFCSymbol_public((CFCSymbol*)func)) {
- CFCUtil_die("%s#%s is not public", class_name, sub_name);
- }
-
- CFCParamList *param_list = CFCFunction_get_param_list(func);
- int num_vars = CFCParamList_num_vars(param_list);
- char *pod = CFCUtil_cat(CFCUtil_strdup(""), "=head2 ", sub_name, NULL);
-
- // Get documentation, which may be inherited.
- CFCDocuComment *docucomment = CFCFunction_get_docucomment(func);
- if (!docucomment) {
- const char *micro_sym = CFCFunction_micro_sym(func);
- CFCClass *parent = klass;
- while (NULL != (parent = CFCClass_get_parent(parent))) {
- CFCFunction *parent_func
- = (CFCFunction*)CFCClass_method(parent, micro_sym);
- if (!parent_func) { break; }
- docucomment = CFCFunction_get_docucomment(parent_func);
- if (docucomment) { break; }
- }
- }
- if (!docucomment) {
- CFCUtil_die("No DocuComment for '%s' in '%s'", sub_name, class_name);
- }
-
- // Build string summarizing arguments to use in header.
- if (num_vars > 2 || (is_constructor && num_vars > 1)) {
- pod = CFCUtil_cat(pod, "( I<[labeled params]> )\n\n", NULL);
- }
- else if (num_vars == 2) {
- // Kill self param.
- const char *name_list = CFCParamList_name_list(param_list);
- char *after_comma = strchr(name_list, ',') + 1;
- while (isspace(*after_comma)) { after_comma++; }
- pod = CFCUtil_cat(pod, "(", after_comma, ")\n\n", NULL);
- }
- else {
- // num_args == 1, leave off 'self'.
- pod = CFCUtil_cat(pod, "()\n\n", NULL);
- }
-
- // Add code sample.
- if (code_sample && strlen(code_sample)) {
- pod = CFCUtil_cat(pod, code_sample, "\n", NULL);
- }
-
- // Incorporate "description" text from DocuComment.
- const char *long_doc = CFCDocuComment_get_description(docucomment);
- if (long_doc && strlen(long_doc)) {
- char *perlified = CFCPerlClass_perlify_doc_text(self, long_doc);
- pod = CFCUtil_cat(pod, perlified, "\n\n", NULL);
- FREEMEM(perlified);
- }
-
- // Add params in a list.
- const char**param_names = CFCDocuComment_get_param_names(docucomment);
- const char**param_docs = CFCDocuComment_get_param_docs(docucomment);
- if (param_names[0]) {
- pod = CFCUtil_cat(pod, "=over\n\n", NULL);
- for (size_t i = 0; param_names[i] != NULL; i++) {
- pod = CFCUtil_cat(pod, "=item *\n\nB<", param_names[i], "> - ",
- param_docs[i], "\n\n", NULL);
- }
- pod = CFCUtil_cat(pod, "=back\n\n", NULL);
- }
-
- // Add return value description, if any.
- const char *retval_doc = CFCDocuComment_get_retval(docucomment);
- if (retval_doc && strlen(retval_doc)) {
- pod = CFCUtil_cat(pod, "Returns: ", retval_doc, "\n\n", NULL);
- }
-
- return pod;
-}
-
-char*
-CFCPerlClass_perlify_doc_text(CFCPerlClass *self, const char *source) {
- (void)self; // unused
-
- // Remove double-equals hack needed to fool perldoc, PAUSE, etc. :P
- // char *copy = S_global_replace(source, "==", "=");
- char *copy = CFCUtil_strdup(source);
-
- // Change <code>foo</code> to C<< foo >>.
- char *orig = copy;
- copy = S_global_replace(orig, "<code>", "C<< ");
- FREEMEM(orig);
- orig = copy;
- copy = S_global_replace(orig, "</code>", " >>");
- FREEMEM(orig);
-
- // Lowercase all method names: Open_In() => open_in()
- for (size_t i = 0, max = strlen(copy); i < max; i++) {
- if (isupper(copy[i])) {
- size_t mark = i;
- for (; i < max; i++) {
- char c = copy[i];
- if (!(isalpha(c) || c == '_')) {
- if (memcmp(copy + i, "()", 2) == 0) {
- for (size_t j = mark; j < i; j++) {
- copy[j] = tolower(copy[j]);
- }
- i += 2; // go past parens.
- }
- break;
- }
- }
- }
- }
-
- // Change all instances of NULL to 'undef'
- orig = copy;
- copy = S_global_replace(orig, "NULL", "undef");
- FREEMEM(orig);
-
- // Change "Err_error" to "Lucy->error".
- orig = copy;
- copy = S_global_replace(orig, "Err_error", "Lucy->error");
- FREEMEM(orig);
-
- return copy;
-}
-
const char*
CFCPerlClass_get_class_name(CFCPerlClass *self) {
return self->class_name;
Modified: incubator/lucy/trunk/clownfish/src/CFCPerlClass.h
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/src/CFCPerlClass.h?rev=1195024&r1=1195023&r2=1195024&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/src/CFCPerlClass.h (original)
+++ incubator/lucy/trunk/clownfish/src/CFCPerlClass.h Sat Oct 29 20:41:53 2011
@@ -38,15 +38,6 @@ CFCPerlClass_init(CFCPerlClass *self, st
void
CFCPerlClass_destroy(CFCPerlClass *self);
-char*
-CFCPerlClass_perlify_doc_text(CFCPerlClass *self, const char *source);
-
-char*
-CFCPerlClass_gen_subroutine_pod(CFCPerlClass *self, struct CFCFunction *func,
- const char *sub_name, struct CFCClass *klass,
- const char *code_sample,
- const char *class_name, int is_constructor);
-
struct CFCClass*
CFCPerlClass_get_client(CFCPerlClass *self);
Copied: incubator/lucy/trunk/clownfish/src/CFCPerlPod.c (from r1194918, incubator/lucy/trunk/clownfish/src/CFCPerlClass.c)
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/src/CFCPerlPod.c?p2=incubator/lucy/trunk/clownfish/src/CFCPerlPod.c&p1=incubator/lucy/trunk/clownfish/src/CFCPerlClass.c&r1=1194918&r2=1195024&rev=1195024&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/src/CFCPerlClass.c (original)
+++ incubator/lucy/trunk/clownfish/src/CFCPerlPod.c Sat Oct 29 20:41:53 2011
@@ -18,7 +18,7 @@
#include <ctype.h>
#define CFC_NEED_BASE_STRUCT_DEF
#include "CFCBase.h"
-#include "CFCPerlClass.h"
+#include "CFCPerlPod.h"
#include "CFCUtil.h"
#include "CFCClass.h"
#include "CFCParcel.h"
@@ -27,49 +27,28 @@
#include "CFCDocuComment.h"
#include "CFCSymbol.h"
-struct CFCPerlClass {
+struct CFCPerlPod {
CFCBase base;
- CFCParcel *parcel;
- char *class_name;
- CFCClass *client;
- char *xs_code;
};
-CFCPerlClass*
-CFCPerlClass_new(CFCParcel *parcel, const char *class_name, CFCClass *client,
- const char *xs_code) {
- CFCPerlClass *self
- = (CFCPerlClass*)CFCBase_allocate(sizeof(CFCPerlClass),
- "Clownfish::Binding::Perl::Class");
- return CFCPerlClass_init(self, parcel, class_name, client, xs_code);
-}
-
-CFCPerlClass*
-CFCPerlClass_init(CFCPerlClass *self, CFCParcel *parcel, const char *class_name,
- CFCClass *client, const char *xs_code) {
- CFCUTIL_NULL_CHECK(parcel);
- CFCUTIL_NULL_CHECK(class_name);
- self->parcel = (CFCParcel*)CFCBase_incref((CFCBase*)parcel);
- self->client = (CFCClass*)CFCBase_incref((CFCBase*)client);
- self->class_name = CFCUtil_strdup(class_name);
- self->xs_code = xs_code ? CFCUtil_strdup(xs_code) : NULL;
+CFCPerlPod*
+CFCPerlPod_new(void) {
+ CFCPerlPod *self
+ = (CFCPerlPod*)CFCBase_allocate(sizeof(CFCPerlPod),
+ "Clownfish::Binding::Perl::Pod");
+ return CFCPerlPod_init(self);
+}
+
+CFCPerlPod*
+CFCPerlPod_init(CFCPerlPod *self) {
return self;
}
void
-CFCPerlClass_destroy(CFCPerlClass *self) {
- CFCBase_decref((CFCBase*)self->parcel);
- CFCBase_decref((CFCBase*)self->client);
- FREEMEM(self->class_name);
- FREEMEM(self->xs_code);
+CFCPerlPod_destroy(CFCPerlPod *self) {
CFCBase_destroy((CFCBase*)self);
}
-CFCClass*
-CFCPerlClass_get_client(CFCPerlClass *self) {
- return self->client;
-}
-
static char*
S_global_replace(const char *string, const char *match,
const char *replacement) {
@@ -112,10 +91,10 @@ S_global_replace(const char *string, con
}
char*
-CFCPerlClass_gen_subroutine_pod(CFCPerlClass *self, CFCFunction *func,
- const char *sub_name, CFCClass *klass,
- const char *code_sample,
- const char *class_name, int is_constructor) {
+CFCPerlPod_gen_subroutine_pod(CFCPerlPod *self, CFCFunction *func,
+ const char *sub_name, CFCClass *klass,
+ const char *code_sample,
+ const char *class_name, int is_constructor) {
// Only allow "public" subs to be exposed as part of the public API.
if (!CFCSymbol_public((CFCSymbol*)func)) {
CFCUtil_die("%s#%s is not public", class_name, sub_name);
@@ -166,7 +145,7 @@ CFCPerlClass_gen_subroutine_pod(CFCPerlC
// Incorporate "description" text from DocuComment.
const char *long_doc = CFCDocuComment_get_description(docucomment);
if (long_doc && strlen(long_doc)) {
- char *perlified = CFCPerlClass_perlify_doc_text(self, long_doc);
+ char *perlified = CFCPerlPod_perlify_doc_text(self, long_doc);
pod = CFCUtil_cat(pod, perlified, "\n\n", NULL);
FREEMEM(perlified);
}
@@ -193,7 +172,7 @@ CFCPerlClass_gen_subroutine_pod(CFCPerlC
}
char*
-CFCPerlClass_perlify_doc_text(CFCPerlClass *self, const char *source) {
+CFCPerlPod_perlify_doc_text(CFCPerlPod *self, const char *source) {
(void)self; // unused
// Remove double-equals hack needed to fool perldoc, PAUSE, etc. :P
@@ -240,13 +219,3 @@ CFCPerlClass_perlify_doc_text(CFCPerlCla
return copy;
}
-const char*
-CFCPerlClass_get_class_name(CFCPerlClass *self) {
- return self->class_name;
-}
-
-const char*
-CFCPerlClass_get_xs_code(CFCPerlClass *self) {
- return self->xs_code;
-}
-
Copied: incubator/lucy/trunk/clownfish/src/CFCPerlPod.h (from r1194918, incubator/lucy/trunk/clownfish/src/CFCPerlClass.h)
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/src/CFCPerlPod.h?p2=incubator/lucy/trunk/clownfish/src/CFCPerlPod.h&p1=incubator/lucy/trunk/clownfish/src/CFCPerlClass.h&r1=1194918&r2=1195024&rev=1195024&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/src/CFCPerlClass.h (original)
+++ incubator/lucy/trunk/clownfish/src/CFCPerlPod.h Sat Oct 29 20:41:53 2011
@@ -14,52 +14,42 @@
* limitations under the License.
*/
-#ifndef H_CFCPERLCLASS
-#define H_CFCPERLCLASS
+#ifndef H_CFCPERLPOD
+#define H_CFCPERLPOD
#ifdef __cplusplus
extern "C" {
#endif
-typedef struct CFCPerlClass CFCPerlClass;
-struct CFCParcel;
-struct CFCClass;
+/** Spec for generating POD for a single class.
+ */
+
+typedef struct CFCPerlPod CFCPerlPod;
struct CFCFunction;
+struct CFCClass;
-CFCPerlClass*
-CFCPerlClass_new(struct CFCParcel *parcel, const char *class_name,
- struct CFCClass *client, const char *xs_code);
-
-CFCPerlClass*
-CFCPerlClass_init(CFCPerlClass *self, struct CFCParcel *parcel,
- const char *class_name, struct CFCClass *client,
- const char *xs_code);
+CFCPerlPod*
+CFCPerlPod_new(void);
+
+CFCPerlPod*
+CFCPerlPod_init(CFCPerlPod *self);
void
-CFCPerlClass_destroy(CFCPerlClass *self);
+CFCPerlPod_destroy(CFCPerlPod *self);
char*
-CFCPerlClass_perlify_doc_text(CFCPerlClass *self, const char *source);
+CFCPerlPod_perlify_doc_text(CFCPerlPod *self, const char *source);
char*
-CFCPerlClass_gen_subroutine_pod(CFCPerlClass *self, struct CFCFunction *func,
- const char *sub_name, struct CFCClass *klass,
- const char *code_sample,
- const char *class_name, int is_constructor);
-
-struct CFCClass*
-CFCPerlClass_get_client(CFCPerlClass *self);
-
-const char*
-CFCPerlClass_get_class_name(CFCPerlClass *self);
-
-const char*
-CFCPerlClass_get_xs_code(CFCPerlClass *self);
+CFCPerlPod_gen_subroutine_pod(CFCPerlPod *self, struct CFCFunction *func,
+ const char *sub_name, struct CFCClass *klass,
+ const char *code_sample,
+ const char *class_name, int is_constructor);
#ifdef __cplusplus
}
#endif
-#endif /* H_CFCPERLCLASS */
+#endif /* H_CFCPERLPOD */
Modified: incubator/lucy/trunk/clownfish/typemap
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/typemap?rev=1195024&r1=1195023&r2=1195024&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/typemap (original)
+++ incubator/lucy/trunk/clownfish/typemap Sat Oct 29 20:41:53 2011
@@ -36,6 +36,7 @@ CFCPerlSub* CLOWNFISH_BINDING_PERL_SUBRO
CFCPerlClass* CLOWNFISH_BINDING_PERL_COMMON
CFCPerlConstructor* CLOWNFISH_BINDING_PERL_COMMON
CFCPerlMethod* CLOWNFISH_BINDING_PERL_COMMON
+CFCPerlPod* CLOWNFISH_BINDING_PERL_COMMON
INPUT