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);