stage4/stage4.cc
changeset 46 fc1b78ea6d84
parent 41 8998c8b24b60
child 55 8b7a21820737
--- a/stage4/stage4.cc	Fri Jul 20 22:07:15 2007 +0200
+++ b/stage4/stage4.cc	Wed Jul 25 18:03:27 2007 +0200
@@ -53,11 +53,17 @@
   this->indent_spaces = "";
 }
 
-stage4out_c::stage4out_c(const char *radix, const char *extension, std::string indent_level) {	
+stage4out_c::stage4out_c(const char *dir, const char *radix, const char *extension, std::string indent_level) {	
   std::string filename(radix);
   filename += ".";
   filename += extension;
-  std::fstream *file = new std::fstream(filename.c_str(), std::fstream::out);
+  std::string filepath("");
+  if (dir != NULL) {
+    filepath += dir;
+    filepath += "/";
+  }
+  filepath += filename;
+  std::fstream *file = new std::fstream(filepath.c_str(), std::fstream::out);
   if(file->fail()){
     std::cerr << "Cannot open " << filename << " for write access \n";
     exit(EXIT_FAILURE);
@@ -157,13 +163,13 @@
 
 /* forward declarations... */
 /* These functions will be implemented in generate_XXX.cc */
-visitor_c *new_code_generator(stage4out_c *s4o);
+visitor_c *new_code_generator(stage4out_c *s4o, const char *builddir);
 void delete_code_generator(visitor_c *code_generator);
 
 
-int stage4(symbol_c *tree_root) {
+int stage4(symbol_c *tree_root, const char *builddir) {
   stage4out_c s4o;
-  visitor_c *generate_code = new_code_generator(&s4o);
+  visitor_c *generate_code = new_code_generator(&s4o, builddir);
 
   if (NULL == generate_code)
     return -1;