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 2012/03/24 12:12:55 UTC

[lucy-commits] svn commit: r1304764 - in /incubator/lucy/branches/LUCY-215-cf-extensions/clownfish: perl/lib/Clownfish/ perl/t/ src/

Author: nwellnhof
Date: Sat Mar 24 11:12:54 2012
New Revision: 1304764

URL: http://svn.apache.org/viewvc?rev=1304764&view=rev
Log:
Add 'is_included' member var to CFCClass

Modified:
    incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/perl/lib/Clownfish/CFC.pm
    incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/perl/lib/Clownfish/CFC.xs
    incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/perl/t/403-file.t
    incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCClass.c
    incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCClass.h
    incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCHierarchy.c
    incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCParseHeader.y
    incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCParser.c
    incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCParser.h

Modified: incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/perl/lib/Clownfish/CFC.pm
URL: http://svn.apache.org/viewvc/incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/perl/lib/Clownfish/CFC.pm?rev=1304764&r1=1304763&r2=1304764&view=diff
==============================================================================
--- incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/perl/lib/Clownfish/CFC.pm (original)
+++ incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/perl/lib/Clownfish/CFC.pm Sat Mar 24 11:12:54 2012
@@ -121,6 +121,7 @@ BEGIN { XSLoader::load( 'Clownfish::CFC'
         docucomment       => undef,
         inert             => undef,
         final             => undef,
+        included          => undef,
         parcel            => undef,
         exposure          => 'parcel',
     );
@@ -157,8 +158,8 @@ BEGIN { XSLoader::load( 'Clownfish::CFC'
             = Clownfish::CFC::Model::Parcel->acquire( $args{parcel} );
         return _create(
             @args{
-                qw( parcel exposure class_name cnick micro_sym
-                    docucomment source_class parent_class_name final inert )
+                qw( parcel exposure class_name cnick micro_sym docucomment
+                    source_class parent_class_name final inert included)
                 }
         );
     }

Modified: incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/perl/lib/Clownfish/CFC.xs
URL: http://svn.apache.org/viewvc/incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/perl/lib/Clownfish/CFC.xs?rev=1304764&r1=1304763&r2=1304764&view=diff
==============================================================================
--- incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/perl/lib/Clownfish/CFC.xs (original)
+++ incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/perl/lib/Clownfish/CFC.xs Sat Mar 24 11:12:54 2012
@@ -123,7 +123,7 @@ PPCODE:
 MODULE = Clownfish::CFC   PACKAGE = Clownfish::CFC::Model::Class
 
 SV*
-_create(parcel, exposure_sv, class_name_sv, cnick_sv, micro_sym_sv, docucomment, source_class_sv, parent_class_name_sv, is_final, is_inert)
+_create(parcel, exposure_sv, class_name_sv, cnick_sv, micro_sym_sv, docucomment, source_class_sv, parent_class_name_sv, is_final, is_inert, is_included)
     CFCParcel *parcel;
     SV *exposure_sv;
     SV *class_name_sv;
@@ -134,6 +134,7 @@ _create(parcel, exposure_sv, class_name_
     SV *parent_class_name_sv;
     bool is_final;
     bool is_inert;
+    bool is_included;
 CODE:
     const char *exposure =
         SvOK(exposure_sv) ? SvPV_nolen(exposure_sv) : NULL;
@@ -149,7 +150,8 @@ CODE:
         SvOK(parent_class_name_sv) ? SvPV_nolen(parent_class_name_sv) : NULL;
     CFCClass *self = CFCClass_create(parcel, exposure, class_name, cnick,
                                      micro_sym, docucomment, source_class,
-                                     parent_class_name, is_final, is_inert);
+                                     parent_class_name, is_final, is_inert,
+                                     is_included);
     RETVAL = S_cfcbase_to_perlref(self);
     CFCBase_decref((CFCBase*)self);
 OUTPUT: RETVAL
@@ -2273,13 +2275,15 @@ CODE:
 OUTPUT: RETVAL
 
 SV*
-_parse_file(self, string, source_class, source_dir)
+_parse_file(self, string, source_class, source_dir, included)
     CFCParser  *self;
     const char *string;
     const char *source_class;
     const char *source_dir;
+    bool included;
 CODE:
-    CFCFile *got = CFCParser_parse_file(self, string, source_class, source_dir);
+    CFCFile *got = CFCParser_parse_file(self, string, source_class, source_dir,
+                                        included);
     RETVAL = S_cfcbase_to_perlref(got);
     CFCBase_decref((CFCBase*)got);
 OUTPUT: RETVAL

Modified: incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/perl/t/403-file.t
URL: http://svn.apache.org/viewvc/incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/perl/t/403-file.t?rev=1304764&r1=1304763&r2=1304764&view=diff
==============================================================================
--- incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/perl/t/403-file.t (original)
+++ incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/perl/t/403-file.t Sat Mar 24 11:12:54 2012
@@ -34,7 +34,7 @@ my $c_block = "__C__\nint foo;\n__END_C_
 
 my $file
     = $parser->_parse_file( "$parcel_declaration\n$class_content\n$c_block",
-    'Stuff::Thing', '.' );
+    'Stuff::Thing', '.', 0 );
 
 is( $file->get_source_class, "Stuff::Thing", "get_source_class" );
 
@@ -68,7 +68,7 @@ isa_ok( $blocks->[0], "Clownfish::CFC::M
 isa_ok( $blocks->[1], "Clownfish::CFC::Model::Class" );
 isa_ok( $blocks->[2], "Clownfish::CFC::Model::CBlock" );
 
-$file = $parser->_parse_file( $class_content, 'Stuff::Thing', '.' );
+$file = $parser->_parse_file( $class_content, 'Stuff::Thing', '.', 0 );
 ($class) = @{ $file->classes };
 ( $foo, $bar ) = @{ $class->member_vars };
 is( $foo->get_type->get_specifier, 'Foo', 'file production resets parcel' );

Modified: incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCClass.c
URL: http://svn.apache.org/viewvc/incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCClass.c?rev=1304764&r1=1304763&r2=1304764&view=diff
==============================================================================
--- incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCClass.c (original)
+++ incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCClass.c Sat Mar 24 11:12:54 2012
@@ -74,6 +74,7 @@ struct CFCClass {
     char *parent_class_name;
     int is_final;
     int is_inert;
+    int is_included;
     char *struct_sym;
     char *full_struct_sym;
     char *short_vtable_var;
@@ -116,11 +117,12 @@ CFCClass_create(struct CFCParcel *parcel
                 const char *class_name, const char *cnick,
                 const char *micro_sym, CFCDocuComment *docucomment,
                 const char *source_class, const char *parent_class_name,
-                int is_final, int is_inert) {
+                int is_final, int is_inert, int is_included) {
     CFCClass *self = (CFCClass*)CFCBase_allocate(&CFCCLASS_META);
     return CFCClass_do_create(self, parcel, exposure, class_name, cnick,
                               micro_sym, docucomment, source_class,
-                              parent_class_name, is_final, is_inert);
+                              parent_class_name, is_final, is_inert,
+                              is_included);
 }
 
 CFCClass*
@@ -128,7 +130,8 @@ CFCClass_do_create(CFCClass *self, struc
                    const char *exposure, const char *class_name,
                    const char *cnick, const char *micro_sym,
                    CFCDocuComment *docucomment, const char *source_class,
-                   const char *parent_class_name, int is_final, int is_inert) {
+                   const char *parent_class_name, int is_final, int is_inert,
+                   int is_included) {
     CFCUTIL_NULL_CHECK(class_name);
     exposure  = exposure  ? exposure  : "parcel";
     micro_sym = micro_sym ? micro_sym : "class";
@@ -203,8 +206,9 @@ CFCClass_do_create(CFCClass *self, struc
     self->include_h[j] = '\0';
     strcat(self->include_h, ".h");
 
-    self->is_final = !!is_final;
-    self->is_inert = !!is_inert;
+    self->is_final    = !!is_final;
+    self->is_inert    = !!is_inert;
+    self->is_included = !!is_included;
 
     // Store in registry.
     S_register(self);
@@ -753,6 +757,11 @@ CFCClass_inert(CFCClass *self) {
     return self->is_inert;
 }
 
+int
+CFCClass_included(CFCClass *self) {
+    return self->is_included;
+}
+
 const char*
 CFCClass_get_struct_sym(CFCClass *self) {
     return self->struct_sym;

Modified: incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCClass.h
URL: http://svn.apache.org/viewvc/incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCClass.h?rev=1304764&r1=1304763&r2=1304764&view=diff
==============================================================================
--- incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCClass.h (original)
+++ incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCClass.h Sat Mar 24 11:12:54 2012
@@ -61,7 +61,7 @@ CFCClass_create(struct CFCParcel *parcel
                 const char *class_name, const char *cnick,
                 const char *micro_sym, struct CFCDocuComment *docucomment,
                 const char *source_class, const char *parent_class_name,
-                int is_final, int is_inert);
+                int is_final, int is_inert, int is_included);
 
 CFCClass*
 CFCClass_do_create(CFCClass *self, struct CFCParcel *parcel,
@@ -69,7 +69,7 @@ CFCClass_do_create(CFCClass *self, struc
                    const char *cnick, const char *micro_sym,
                    struct CFCDocuComment *docucomment,
                    const char *source_class, const char *parent_class_name,
-                   int is_final, int is_inert);
+                   int is_final, int is_inert, int is_included);
 
 void
 CFCClass_destroy(CFCClass *self);
@@ -230,6 +230,9 @@ CFCClass_final(CFCClass *self);
 int
 CFCClass_inert(CFCClass *self);
 
+int
+CFCClass_included(CFCClass *self);
+
 const char*
 CFCClass_get_struct_sym(CFCClass *self);
 

Modified: incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCHierarchy.c
URL: http://svn.apache.org/viewvc/incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCHierarchy.c?rev=1304764&r1=1304763&r2=1304764&view=diff
==============================================================================
--- incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCHierarchy.c (original)
+++ incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCHierarchy.c Sat Mar 24 11:12:54 2012
@@ -53,7 +53,7 @@ struct CFCHierarchy {
 };
 
 static void
-S_parse_cf_files(CFCHierarchy *self, const char *source_dir);
+S_parse_cf_files(CFCHierarchy *self, const char *source_dir, int is_included);
 
 static void
 S_connect_classes(CFCHierarchy *self);
@@ -153,7 +153,7 @@ CFCHierarchy_add_include_dir(CFCHierarch
 void
 CFCHierarchy_build(CFCHierarchy *self) {
     for (size_t i = 0; self->sources[i] != NULL; i++) {
-        S_parse_cf_files(self, self->sources[i]);
+        S_parse_cf_files(self, self->sources[i], 0);
     }
     S_connect_classes(self);
     for (size_t i = 0; self->trees[i] != NULL; i++) {
@@ -204,7 +204,7 @@ S_find_cfh(const char *dir, char **cfh_l
 }
 
 static void
-S_parse_cf_files(CFCHierarchy *self, const char *source_dir) {
+S_parse_cf_files(CFCHierarchy *self, const char *source_dir, int is_included) {
     char **all_source_paths = (char**)CALLOCATE(1, sizeof(char*));
     all_source_paths = S_find_cfh(source_dir, all_source_paths, 0);
     size_t source_dir_len  = strlen(source_dir);
@@ -243,7 +243,8 @@ S_parse_cf_files(CFCHierarchy *self, con
         size_t unused;
         char *content = CFCUtil_slurp_text(source_path, &unused);
         CFCFile *file = CFCParser_parse_file(self->parser, content,
-                                             source_class, source_dir);
+                                             source_class, source_dir,
+                                             is_included);
         FREEMEM(content);
         if (!file) {
             CFCUtil_die("parser error for %s", source_path);

Modified: incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCParseHeader.y
URL: http://svn.apache.org/viewvc/incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCParseHeader.y?rev=1304764&r1=1304763&r2=1304764&view=diff
==============================================================================
--- incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCParseHeader.y (original)
+++ incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCParseHeader.y Sat Mar 24 11:12:54 2012
@@ -43,12 +43,13 @@ S_start_class(CFCParser *state, CFCDocuC
         is_final = !!strstr(declaration_modifier_list, "final");
         is_inert = !!strstr(declaration_modifier_list, "inert");
     }
+    int is_included = CFCParser_included(state);
     CFCParser_set_class_name(state, class_name);
     CFCParser_set_class_cnick(state, class_cnick);
     CFCClass *klass = CFCClass_create(CFCParser_get_parcel(state), exposure,
                                       class_name, class_cnick, NULL,
                                       docucomment, source_class, inheritance,
-                                      is_final, is_inert);
+                                      is_final, is_inert, is_included);
     CFCBase_decref((CFCBase*)docucomment);
     return klass;
 }

Modified: incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCParser.c
URL: http://svn.apache.org/viewvc/incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCParser.c?rev=1304764&r1=1304763&r2=1304764&view=diff
==============================================================================
--- incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCParser.c (original)
+++ incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCParser.c Sat Mar 24 11:12:54 2012
@@ -41,6 +41,7 @@ struct CFCParser {
     char *class_cnick;
     char *source_class;
     char *source_dir;
+    int is_included;
     CFCMemPool *pool;
     CFCParcel  *parcel;
 };
@@ -116,10 +117,12 @@ CFCParser_parse(CFCParser *self, const c
 
 CFCFile*
 CFCParser_parse_file(CFCParser *self, const char *string,
-                     const char *source_class, const char *source_dir) {
+                     const char *source_class, const char *source_dir,
+                     int is_included) {
     CFCParser_set_parcel(self, NULL);
     self->source_class = CFCUtil_strdup(source_class);
     self->source_dir   = CFCUtil_strdup(source_dir);
+    self->is_included  = is_included;
     CFCParseHeader(self->header_parser, CFC_TOKENTYPE_FILE_START, NULL, self);
     CFCFile *result = (CFCFile*)CFCParser_parse(self, string);
     FREEMEM(self->source_class);
@@ -218,3 +221,8 @@ CFCParser_get_source_dir(CFCParser *self
     return self->source_dir;
 }
 
+int
+CFCParser_included(CFCParser *self) {
+    return self->is_included;
+}
+

Modified: incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCParser.h
URL: http://svn.apache.org/viewvc/incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCParser.h?rev=1304764&r1=1304763&r2=1304764&view=diff
==============================================================================
--- incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCParser.h (original)
+++ incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCParser.h Sat Mar 24 11:12:54 2012
@@ -50,7 +50,8 @@ CFCParser_parse(CFCParser *self, const c
 
 struct CFCFile*
 CFCParser_parse_file(CFCParser *self, const char *string,
-                     const char *source_class, const char *source_dir);
+                     const char *source_class, const char *source_dir,
+                     int is_included);
 
 char*
 CFCParser_dupe(CFCParser *self, const char *string);
@@ -97,6 +98,9 @@ CFCParser_get_source_class(CFCParser *se
 const char*
 CFCParser_get_source_dir(CFCParser *self);
 
+int
+CFCParser_included(CFCParser *self);
+
 /* Routines generated by Lemon. */
 void*
 CFCParseHeaderAlloc(void * (*allocate)(size_t));