X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=flower%2Finclude%2Ffile-path.hh;h=1c039cf4ab0dd51efdcf0966d8edc424338b66ea;hb=47db9a3883d726ca53e2133a3b2298f78dd6a32e;hp=d5fed491ff4ff45a895727b164fe1ba8505ae83d;hpb=1cf3d59c1559fb9774c4c1c8cae155cfe54a927c;p=lilypond.git diff --git a/flower/include/file-path.hh b/flower/include/file-path.hh index d5fed491ff..1c039cf4ab 100644 --- a/flower/include/file-path.hh +++ b/flower/include/file-path.hh @@ -1,47 +1,53 @@ /* - path.hh -- declare File_path + This file is part of LilyPond, the GNU music typesetter. - source file of the Flower Library + Copyright (C) 1997--2015 Han-Wen Nienhuys - (c) 1997--1998 Han-Wen Nienhuys + LilyPond is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + LilyPond is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with LilyPond. If not, see . */ -#ifndef PATH_HH -#define PATH_HH -#include "string.hh" -#include "array.hh" +#ifndef FILE_PATH_HH +#define FILE_PATH_HH +#include "std-vector.hh" +#include "std-string.hh" -/** - search in directories for a file. +/** + search in directories for a file. Abstraction of PATH variable. An interface for searching input files. Search a number of dirs for a file. - TODO: add a unix style PATH interface - Should use kpathsea? - + TODO: add a unix style PATH interface */ -class File_path : private Array +class File_path { -public: - /// locate a file in the search path - String find (String nm) const; + vector dirs_; - /// add to end of path. - Array::push; - void add (String str); - void parse_path (String); +public: + vector directories () const; + string find (const string &name) const; + string find (const string &name, char const *extensions[]); + string to_string () const; + bool try_append (string str); + void append (const string&); + void parse_path (const string&); + void prepend (const string&); }; -/** split a path into its components. - - @params path - - @return - String &drive, String &dirs, String &filebase, String &extension - */ -void split_path (String path, String &drive, String &dirs, String &filebase, String &extension); +bool is_file (const string &file_name); +bool is_dir (string file_name); -#endif +#endif /* FILE_PATH */