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