]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/sources.cc
Web-ja: update introduction
[lilypond.git] / lily / sources.cc
index dc784d2bdb5f20c17058f2219309d2e6e44c08b2..5d865fe706e565e1fa03365a24daa3ee3174a8a3 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2015 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -29,11 +29,6 @@ Sources::Sources ()
   path_ = 0;
 }
 
-Sources::Sources (Sources const &)
-{
-  assert (false);
-}
-
 void
 Sources::set_path (File_path *f)
 {
@@ -91,3 +86,28 @@ Sources::~Sources ()
     }
 }
 
+#include "lily-parser.hh"
+#include "lily-lexer.hh"
+#include "lily-imports.hh"
+#include "fluid.hh"
+
+LY_DEFINE (ly_source_files, "ly:source-files", 0, 1, 0,
+           (SCM parser_smob),
+           "A list of LilyPond files being processed;"
+           "a PARSER may optionally be specified.")
+{
+
+  if (SCM_UNBNDP (parser_smob))
+    parser_smob = scm_fluid_ref (Lily::f_parser);
+  Lily_parser *parser = LY_ASSERT_SMOB (Lily_parser, parser_smob, 1);
+  Includable_lexer *lex = parser->lexer_;
+
+  SCM lst = SCM_EOL;
+  for (vector<string>::const_iterator
+       i = lex->file_name_strings_.begin();
+       i != lex->file_name_strings_.end(); ++i)
+       {
+         lst = scm_cons (ly_string2scm (*i), lst);
+       }
+  return scm_reverse_x (lst, SCM_EOL);
+}