1 
2 /* Copyright (C) 1999-2021 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 *toAbsolute(const char *name, const char *base = NULL);
28     static const char *ext(const char *);
29     const char *ext();
30     static const char *removeExt(const char *str);
31     static const char *name(const char *);
32     const char *name();
33     static const char *path(const char *);
34     static const char *replaceName(const char *path, const char *name);
35 
36     static const char *combine(const char *path, const char *name);
37     static Strings *splitPath(const char *path);
38     static const char *defaultExt(const char *name, const char *ext);
39     static const char *forceExt(const char *name, const char *ext);
40     static bool equalsExt(const char *name, const char *ext);
41 
42     bool equalsExt(const char *ext);
43 
44     static const char *searchPath(Strings *path, const char *name, bool cwd);
45     static const char *safeSearchPath(Strings *path, const char *name);
46     static int exists(const char *name);
47     static bool ensurePathExists(const char *path);
48     static const char *canonicalName(const char *name);
49 
50     static void free(const char *str);
51     const char *toChars() const;
52 };
53