Home | History | Annotate | Line # | Download | only in root
      1 
      2 /* Copyright (C) 1999-2022 by The D Language Foundation, All Rights Reserved
      3  * written by Walter Bright
      4  * https://www.digitalmars.com
      5  * Distributed under the Boost Software License, Version 1.0.
      6  * https://www.boost.org/LICENSE_1_0.txt
      7  * https://github.com/dlang/dmd/blob/master/src/dmd/root/filename.h
      8  */
      9 
     10 #pragma once
     11 
     12 #include "array.h"
     13 #include "dcompat.h"
     14 
     15 typedef Array<const char *> Strings;
     16 
     17 struct FileName
     18 {
     19 private:
     20     DString str;
     21 public:
     22     static bool equals(const char *name1, const char *name2);
     23     static bool absolute(const char *name);
     24     static const char *toAbsolute(const char *name, const char *base = NULL);
     25     static const char *ext(const char *);
     26     const char *ext();
     27     static const char *removeExt(const char *str);
     28     static const char *name(const char *);
     29     const char *name();
     30     static const char *path(const char *);
     31 
     32     static const char *combine(const char *path, const char *name);
     33     static Strings *splitPath(const char *path);
     34     static const char *defaultExt(const char *name, const char *ext);
     35     static const char *forceExt(const char *name, const char *ext);
     36     static bool equalsExt(const char *name, const char *ext);
     37 
     38     bool equalsExt(const char *ext);
     39 
     40     static const char *searchPath(Strings *path, const char *name, bool cwd);
     41     static int exists(const char *name);
     42     static bool ensurePathExists(const char *path);
     43     static const char *canonicalName(const char *name);
     44 
     45     static void free(const char *str);
     46     const char *toChars() const;
     47 };
     48