1 
2 /* Copyright (C) 1999-2019 by The D Language Foundation, All Rights Reserved
3  * http://www.digitalmars.com
4  * Distributed under the Boost Software License, Version 1.0.
5  * http://www.boost.org/LICENSE_1_0.txt
6  * https://github.com/dlang/dmd/blob/master/src/dmd/root/filename.h
7  */
8 
9 #pragma once
10 
11 #include "array.h"
12 
13 class RootObject;
14 
15 template <typename TYPE> struct Array;
16 typedef Array<const char *> Strings;
17 
18 struct FileName
19 {
20     const char *str;
21     FileName(const char *str);
22     bool equals(RootObject *obj);
23     static bool equals(const char *name1, const char *name2);
24     int compare(RootObject *obj);
25     static int compare(const char *name1, const char *name2);
26     static bool absolute(const char *name);
27     static const char *ext(const char *);
28     const char *ext();
29     static const char *removeExt(const char *str);
30     static const char *name(const char *);
31     const char *name();
32     static const char *path(const char *);
33     static const char *replaceName(const char *path, const char *name);
34 
35     static const char *combine(const char *path, const char *name);
36     static Strings *splitPath(const char *path);
37     static const char *defaultExt(const char *name, const char *ext);
38     static const char *forceExt(const char *name, const char *ext);
39     static bool equalsExt(const char *name, const char *ext);
40 
41     bool equalsExt(const char *ext);
42 
43     static const char *searchPath(Strings *path, const char *name, bool cwd);
44     static const char *safeSearchPath(Strings *path, const char *name);
45     static int exists(const char *name);
46     static bool ensurePathExists(const char *path);
47     static const char *canonicalName(const char *name);
48 
49     static void free(const char *str);
50     const char *toChars() const;
51 };
52