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