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