]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/source.cc
Fix some bugs in the dynamic engraver and PostScript backend
[lilypond.git] / lily / source.cc
index 462bfcffa090a9232138db397d594c6b5c38adb8..002768038c0069a8b33fd2f649dfc35c72655a24 100644 (file)
@@ -8,13 +8,11 @@
 
 #include "source.hh"
 
-#include "killing-cons.tcc"
 #include "source-file.hh"
 #include "file-path.hh"
 
 Sources::Sources ()
 {
-  sourcefile_list_ = 0;
   path_ = 0;
   is_binary_ = false;
 }
@@ -34,22 +32,20 @@ Sources::set_path (File_path *f)
 /**
    open a file
 
-   @param file_string the file to be opened, name might be changed if it
-   is found in a search path. UGH!
-
-   @return 0 if no file found
+   File_string the file to be opened, name might be changed if it is
+   found in a search path.
 */
 Source_file *
-Sources::get_file (string &file_string) //UGH
+Sources::get_file (string *file_string) //UGH
 {
-  if ((file_string != "-") && path_)
+  if (*file_string != "-" && path_)
     {
-      string file_string_o = path_->find (file_string);
-      if ((file_string_o == "") && (file_string != ""))
+      string file_string_o = path_->find (*file_string);
+      if ((file_string_o == "") && (*file_string != ""))
        return 0;
-      file_string = file_string_o;
+      *file_string = file_string_o;
     }
-  Source_file *f = new Source_file (file_string);
+  Source_file *f = new Source_file (*file_string);
   add (f);
   return f;
 }
@@ -57,25 +53,24 @@ Sources::get_file (string &file_string) //UGH
 void
 Sources::add (Source_file *sourcefile)
 {
-  sourcefile_list_ = new Killing_cons<Source_file> (sourcefile, sourcefile_list_);
+  sourcefiles_.push_back (sourcefile);
 }
 
 Sources::~Sources ()
 {
-  delete sourcefile_list_;
+  junk_pointers (sourcefiles_);
 }
-/**
-   search the list for file whose map contains pointer #str0#
 
-   @return 0 if not found.
-*/
 Source_file *
 Sources::get_sourcefile (char const *str0)
 {
+  for (vector<Source_file*>::iterator i = sourcefiles_.begin();
+       i != sourcefiles_.end (); i++)
+    {
+      if ((*i)->contains (str0))
+       return *i;
+    }
 
-  for (Cons<Source_file> *i = sourcefile_list_; i; i = i->next_)
-    if (i->car_->contains (str0))
-      return i->car_;
   return 0;
 }