Author: nwellnhof
Date: Thu Mar 22 18:45:38 2012
New Revision: 1303972
URL: http://svn.apache.org/viewvc?rev=1303972&view=rev
Log:
Store source_dir in CFCFile
Modified:
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/CFCFile.c
incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCFile.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.xs
URL:
http://svn.apache.org/viewvc/incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/perl/lib/Clownfish/CFC.xs?rev=1303972&r1=1303971&r2=1303972&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
Thu Mar 22 18:45:38 2012
@@ -509,10 +509,11 @@ PPCODE:
MODULE = Clownfish::CFC PACKAGE = Clownfish::CFC::Model::File
SV*
-_new(source_class)
+_new(source_class, source_dir)
const char *source_class;
+ const char *source_dir;
CODE:
- CFCFile *self = CFCFile_new(source_class);
+ CFCFile *self = CFCFile_new(source_class, source_dir);
RETVAL = S_cfcbase_to_perlref(self);
CFCBase_decref((CFCBase*)self);
OUTPUT: RETVAL
@@ -2241,12 +2242,13 @@ CODE:
OUTPUT: RETVAL
SV*
-_parse_file(self, string, source_class)
+_parse_file(self, string, source_class, source_dir)
CFCParser *self;
const char *string;
const char *source_class;
+ const char *source_dir;
CODE:
- CFCFile *got = CFCParser_parse_file(self, string, source_class);
+ CFCFile *got = CFCParser_parse_file(self, string, source_class,
source_dir);
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=1303972&r1=1303971&r2=1303972&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
Thu Mar 22 18:45:38 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', '.' );
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', '.' );
($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/CFCFile.c
URL:
http://svn.apache.org/viewvc/incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCFile.c?rev=1303972&r1=1303971&r2=1303972&view=diff
==============================================================================
--- incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCFile.c
(original)
+++ incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCFile.c Thu
Mar 22 18:45:38 2012
@@ -35,6 +35,7 @@ struct CFCFile {
CFCClass **classes;
int modified;
char *source_class;
+ char *source_dir;
char *guard_name;
char *guard_start;
char *guard_close;
@@ -48,17 +49,18 @@ const static CFCMeta CFCFILE_META = {
};
CFCFile*
-CFCFile_new(const char *source_class) {
+CFCFile_new(const char *source_class, const char *source_dir) {
CFCFile *self = (CFCFile*)CFCBase_allocate(&CFCFILE_META);
- return CFCFile_init(self, source_class);
+ return CFCFile_init(self, source_class, source_dir);
}
CFCFile*
-CFCFile_init(CFCFile *self, const char *source_class) {
+CFCFile_init(CFCFile *self, const char *source_class, const char *source_dir) {
CFCUTIL_NULL_CHECK(source_class);
self->modified = false;
self->source_class = CFCUtil_strdup(source_class);
+ self->source_dir = CFCUtil_strdup(source_dir);
self->blocks = (CFCBase**)CALLOCATE(1, sizeof(CFCBase*));
self->classes = (CFCClass**)CALLOCATE(1, sizeof(CFCBase*));
@@ -116,6 +118,7 @@ CFCFile_destroy(CFCFile *self) {
FREEMEM(self->guard_start);
FREEMEM(self->guard_close);
FREEMEM(self->source_class);
+ FREEMEM(self->source_dir);
FREEMEM(self->path_part);
CFCBase_destroy((CFCBase*)self);
}
@@ -242,6 +245,11 @@ CFCFile_get_source_class(CFCFile *self)
}
const char*
+CFCFile_get_source_dir(CFCFile *self) {
+ return self->source_dir;
+}
+
+const char*
CFCFile_guard_name(CFCFile *self) {
return self->guard_name;
}
Modified: incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCFile.h
URL:
http://svn.apache.org/viewvc/incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCFile.h?rev=1303972&r1=1303971&r2=1303972&view=diff
==============================================================================
--- incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCFile.h
(original)
+++ incubator/lucy/branches/LUCY-215-cf-extensions/clownfish/src/CFCFile.h Thu
Mar 22 18:45:38 2012
@@ -39,10 +39,10 @@ struct CFCClass;
* header file should be 'Foo/Bar.h' within the target include directory.
*/
CFCFile*
-CFCFile_new(const char *source_class);
+CFCFile_new(const char *source_class, const char *source_dir);
CFCFile*
-CFCFile_init(CFCFile *self, const char *source_class);
+CFCFile_init(CFCFile *self, const char *source_class, const char *source_dir);
void
CFCFile_destroy(CFCFile *self);
@@ -100,6 +100,9 @@ CFCFile_get_modified(CFCFile *self);
const char*
CFCFile_get_source_class(CFCFile *self);
+const char*
+CFCFile_get_source_dir(CFCFile *self);
+
/** Return a string used for an include guard in a C header (e.g.
* "H_CRUSTACEAN_LOBSTER"), unique per file.
*/
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=1303972&r1=1303971&r2=1303972&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
Thu Mar 22 18:45:38 2012
@@ -206,7 +206,8 @@ S_parse_cf_files(CFCHierarchy *self, con
// Slurp, parse, add parsed file to pool.
size_t unused;
char *content = CFCUtil_slurp_text(source_path, &unused);
- CFCFile *file = CFCParser_parse_file(self->parser, content,
source_class);
+ CFCFile *file = CFCParser_parse_file(self->parser, content,
+ source_class, source_dir);
FREEMEM(content);
if (!file) {
CFCUtil_die("parser error for %s", source_path);
@@ -282,9 +283,10 @@ int
S_do_propagate_modified(CFCHierarchy *self, CFCClass *klass, int modified) {
const char *source_class = CFCClass_get_source_class(klass);
CFCFile *file = S_fetch_file(self, source_class);
- size_t cfh_buf_size = CFCFile_path_buf_size(file, self->source);
+ const char *source_dir = CFCFile_get_source_dir(file);
+ size_t cfh_buf_size = CFCFile_path_buf_size(file, source_dir);
char *source_path = (char*)MALLOCATE(cfh_buf_size);
- CFCFile_cfh_path(file, source_path, cfh_buf_size, self->source);
+ CFCFile_cfh_path(file, source_path, cfh_buf_size, source_dir);
size_t h_buf_size = CFCFile_path_buf_size(file, self->dest);
char *h_path = (char*)MALLOCATE(h_buf_size);
CFCFile_h_path(file, h_path, h_buf_size, self->dest);
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=1303972&r1=1303971&r2=1303972&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
Thu Mar 22 18:45:38 2012
@@ -295,7 +295,8 @@ result ::= file(A).
file(A) ::= FILE_START. /* Pseudo token, not passed by lexer. */
{
- A = CFCFile_new(CFCParser_get_source_class(state));
+ A = CFCFile_new(CFCParser_get_source_class(state),
+ CFCParser_get_source_dir(state));
}
file(A) ::= file(B) major_block(C).
{
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=1303972&r1=1303971&r2=1303972&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
Thu Mar 22 18:45:38 2012
@@ -40,6 +40,7 @@ struct CFCParser {
char *class_name;
char *class_cnick;
char *source_class;
+ char *source_dir;
CFCMemPool *pool;
CFCParcel *parcel;
};
@@ -115,13 +116,16 @@ CFCParser_parse(CFCParser *self, const c
CFCFile*
CFCParser_parse_file(CFCParser *self, const char *string,
- const char *source_class) {
+ const char *source_class, const char *source_dir) {
CFCParser_set_parcel(self, NULL);
self->source_class = CFCUtil_strdup(source_class);
+ self->source_dir = CFCUtil_strdup(source_dir);
CFCParseHeader(self->header_parser, CFC_TOKENTYPE_FILE_START, NULL, self);
CFCFile *result = (CFCFile*)CFCParser_parse(self, string);
FREEMEM(self->source_class);
+ FREEMEM(self->source_dir);
self->source_class = NULL;
+ self->source_dir = NULL;
return result;
}
@@ -209,3 +213,8 @@ CFCParser_get_source_class(CFCParser *se
return self->source_class;
}
+const char*
+CFCParser_get_source_dir(CFCParser *self) {
+ return self->source_dir;
+}
+
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=1303972&r1=1303971&r2=1303972&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
Thu Mar 22 18:45:38 2012
@@ -50,7 +50,7 @@ CFCParser_parse(CFCParser *self, const c
struct CFCFile*
CFCParser_parse_file(CFCParser *self, const char *string,
- const char *source_class);
+ const char *source_class, const char *source_dir);
char*
CFCParser_dupe(CFCParser *self, const char *string);
@@ -94,6 +94,9 @@ CFCParser_set_source_class(CFCParser *se
const char*
CFCParser_get_source_class(CFCParser *self);
+const char*
+CFCParser_get_source_dir(CFCParser *self);
+
/* Routines generated by Lemon. */
void*
CFCParseHeaderAlloc(void * (*allocate)(size_t));