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/03/07 05:16:09 UTC

[lucy-commits] svn commit: r1078674 - in /incubator/lucy/trunk/clownfish: lib/Clownfish.xs lib/Clownfish/Hierarchy.pm src/CFCHierarchy.c src/CFCHierarchy.h

Author: marvin
Date: Mon Mar  7 04:16:09 2011
New Revision: 1078674

URL: http://svn.apache.org/viewvc?rev=1078674&view=rev
Log:
Finish porting CFCHierarchy to C.  Make several routines internal now that
more tasks are accomplished within one C file rather than shared across Perl
and C.

Modified:
    incubator/lucy/trunk/clownfish/lib/Clownfish.xs
    incubator/lucy/trunk/clownfish/lib/Clownfish/Hierarchy.pm
    incubator/lucy/trunk/clownfish/src/CFCHierarchy.c
    incubator/lucy/trunk/clownfish/src/CFCHierarchy.h

Modified: incubator/lucy/trunk/clownfish/lib/Clownfish.xs
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/lib/Clownfish.xs?rev=1078674&r1=1078673&r2=1078674&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/lib/Clownfish.xs (original)
+++ incubator/lucy/trunk/clownfish/lib/Clownfish.xs Mon Mar  7 04:16:09 2011
@@ -726,50 +726,26 @@ DESTROY(self)
 PPCODE:
     CFCHierarchy_destroy(self);
 
-int
-propagate_modified(self, ...)
-    CFCHierarchy *self;
-CODE:
-    int modified = items > 1 ? !!SvTRUE(ST(1)) : 0;
-    RETVAL = CFCHierarchy_propagate_modified(self, modified);
-OUTPUT: RETVAL
-
-void
-_add_tree(self, klass)
-    CFCHierarchy *self;
-    CFCClass *klass;
-PPCODE:
-    CFCHierarchy_add_tree(self, klass);
-
 void
-_add_file(self, file)
+build(self)
     CFCHierarchy *self;
-    CFCFile *file;
 PPCODE:
-    CFCHierarchy_add_file(self, file);
+    CFCHierarchy_build(self);
 
-SV*
-_fetch_file(self, source_class)
+int
+propagate_modified(self, ...)
     CFCHierarchy *self;
-    const char *source_class;
 CODE:
-    CFCFile *file = CFCHierarchy_fetch_file(self, source_class);
-    RETVAL = S_cfcbase_to_perlref(file);
+    int modified = items > 1 ? !!SvTRUE(ST(1)) : 0;
+    RETVAL = CFCHierarchy_propagate_modified(self, modified);
 OUTPUT: RETVAL
 
 void
-_parse_cf_files(self)
-    CFCHierarchy *self;
-PPCODE:
-    CFCHierarchy_parse_cf_files(self);
-
-void
 _set_or_get(self, ...)
     CFCHierarchy *self;
 ALIAS:
     get_source        = 2
     get_dest          = 4
-    _trees            = 6
     files             = 8
     ordered_classes   = 10
 PPCODE:
@@ -785,10 +761,6 @@ PPCODE:
                 retval = newSVpv(value, strlen(value));
             }
             break;
-        case 6:
-            retval = S_array_of_cfcbase_to_av(
-                (CFCBase**)CFCHierarchy_trees(self));
-            break;
         case 8:
             retval = S_array_of_cfcbase_to_av(
                 (CFCBase**)CFCHierarchy_files(self));

Modified: incubator/lucy/trunk/clownfish/lib/Clownfish/Hierarchy.pm
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/lib/Clownfish/Hierarchy.pm?rev=1078674&r1=1078673&r2=1078674&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/lib/Clownfish/Hierarchy.pm (original)
+++ incubator/lucy/trunk/clownfish/lib/Clownfish/Hierarchy.pm Mon Mar  7 04:16:09 2011
@@ -36,14 +36,6 @@ sub new {
     return $package->_new( @args{qw( source dest )}, $parser );
 }
 
-# Slurp all Clownfish header files.
-# Arrange the class objects into inheritance trees.
-sub build {
-    my $self = shift;
-    $self->_parse_cf_files();
-    $_->grow_tree for @{ $self->_trees };
-}
-
 sub _do_parse_file {
     my ( $parser, $content, $source_class ) = @_;
     $content = $parser->strip_plain_comments($content);

Modified: incubator/lucy/trunk/clownfish/src/CFCHierarchy.c
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/src/CFCHierarchy.c?rev=1078674&r1=1078673&r2=1078674&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/src/CFCHierarchy.c (original)
+++ incubator/lucy/trunk/clownfish/src/CFCHierarchy.c Mon Mar  7 04:16:09 2011
@@ -50,8 +50,20 @@ struct CFCHierarchy {
     size_t num_files;
 };
 
+static void
+S_parse_cf_files(CFCHierarchy *self);
+
+static void
+S_add_file(CFCHierarchy *self, CFCFile *file);
+
+static void
+S_add_tree(CFCHierarchy *self, CFCClass *klass);
+
+static CFCFile*
+S_fetch_file(CFCHierarchy *self, const char *source_class);
+
 // Recursive helper function for CFCUtil_propagate_modified.
-int
+static int
 S_do_propagate_modified(CFCHierarchy *self, CFCClass *klass, int modified);
 
 // Platform-agnostic opendir wrapper.
@@ -128,6 +140,16 @@ CFCHierarchy_destroy(CFCHierarchy *self)
     CFCBase_destroy((CFCBase*)self);
 }
 
+void
+CFCHierarchy_build(CFCHierarchy *self)
+{
+    S_parse_cf_files(self);
+    size_t i;
+    for (i = 0; self->trees[i] != NULL; i++) {
+        CFCClass_grow_tree(self->trees[i]);
+    }
+}
+
 static CFCFile*
 S_parse_file(void *parser, const char *content, const char *source_class)
 {
@@ -206,8 +228,8 @@ S_find_cfh(char *dir, char **cfh_list, s
     return cfh_list;
 }
 
-void
-CFCHierarchy_parse_cf_files(CFCHierarchy *self)
+static void
+S_parse_cf_files(CFCHierarchy *self)
 {
     char **all_source_paths = (char**)CALLOCATE(1, sizeof(char*));
     all_source_paths = S_find_cfh(self->source, all_source_paths, 0);
@@ -257,7 +279,7 @@ CFCHierarchy_parse_cf_files(CFCHierarchy
         if (!file) {
             croak("parser error for %s", source_path);
         }
-        CFCHierarchy_add_file(self, file);
+        S_add_file(self, file);
         
         CFCClass **classes_in_file = CFCFile_classes(file);
         for (j = 0; classes_in_file[j] != NULL; j++) {
@@ -291,7 +313,7 @@ CFCHierarchy_parse_cf_files(CFCHierarchy
             }
         }
         else {
-            CFCHierarchy_add_tree(self, klass);
+            S_add_tree(self, klass);
         }
     }
 
@@ -327,7 +349,7 @@ int
 S_do_propagate_modified(CFCHierarchy *self, CFCClass *klass, int modified)
 {
     const char *source_class = CFCClass_get_source_class(klass);
-    CFCFile *file = CFCHierarchy_fetch_file(self, source_class);
+    CFCFile *file = S_fetch_file(self, source_class);
     size_t cfh_buf_size = CFCFile_path_buf_size(file, self->source);
     char *source_path = (char*)MALLOCATE(cfh_buf_size);
     CFCFile_cfh_path(file, source_path, cfh_buf_size, self->source);
@@ -361,8 +383,8 @@ S_do_propagate_modified(CFCHierarchy *se
     return somebody_is_modified;
 }
 
-void
-CFCHierarchy_add_tree(CFCHierarchy *self, CFCClass *klass)
+static void
+S_add_tree(CFCHierarchy *self, CFCClass *klass)
 {
     CFCUTIL_NULL_CHECK(klass);
     const char *full_struct_sym = CFCClass_full_struct_sym(klass);
@@ -382,12 +404,6 @@ CFCHierarchy_add_tree(CFCHierarchy *self
 }
 
 CFCClass**
-CFCHierarchy_trees(CFCHierarchy *self)
-{
-    return self->trees;
-}
-
-CFCClass**
 CFCHierarchy_ordered_classes(CFCHierarchy *self)
 {
     size_t num_classes = 0;
@@ -412,8 +428,8 @@ CFCHierarchy_ordered_classes(CFCHierarch
     return ladder;
 }
 
-CFCFile*
-CFCHierarchy_fetch_file(CFCHierarchy *self, const char *source_class)
+static CFCFile*
+S_fetch_file(CFCHierarchy *self, const char *source_class)
 {
     size_t i;
     for (i = 0; self->files[i] != NULL; i++) {
@@ -425,8 +441,8 @@ CFCHierarchy_fetch_file(CFCHierarchy *se
     return NULL;
 }
 
-void
-CFCHierarchy_add_file(CFCHierarchy *self, CFCFile *file)
+static void
+S_add_file(CFCHierarchy *self, CFCFile *file)
 {
     CFCUTIL_NULL_CHECK(file);
     const char *source_class = CFCFile_get_source_class(file);
@@ -577,3 +593,4 @@ S_closedir(void *dirhandle, const char *
 }
 
 #endif
+

Modified: incubator/lucy/trunk/clownfish/src/CFCHierarchy.h
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/src/CFCHierarchy.h?rev=1078674&r1=1078673&r2=1078674&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/src/CFCHierarchy.h (original)
+++ incubator/lucy/trunk/clownfish/src/CFCHierarchy.h Mon Mar  7 04:16:09 2011
@@ -35,27 +35,12 @@ CFCHierarchy_init(CFCHierarchy *self, co
 void
 CFCHierarchy_destroy(CFCHierarchy *self);
 
-void
-CFCHierarchy_parse_cf_files(CFCHierarchy *self);
-
 int
 CFCHierarchy_propagate_modified(CFCHierarchy *self, int modified);
 
-void
-CFCHierarchy_add_tree(CFCHierarchy *self, struct CFCClass *klass);
-
-struct CFCClass**
-CFCHierarchy_trees(CFCHierarchy *self);
-
 struct CFCClass**
 CFCHierarchy_ordered_classes(CFCHierarchy *self);
 
-struct CFCFile*
-CFCHierarchy_fetch_file(CFCHierarchy *self, const char *source_class);
-
-void
-CFCHierarchy_add_file(CFCHierarchy *self, struct CFCFile *file);
-
 struct CFCFile**
 CFCHierarchy_files(CFCHierarchy *self);