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 13class RootObject; 14 15template <typename TYPE> struct Array; 16typedef Array<const char *> Strings; 17 18struct 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