1// Copyright 2013 The Flutter Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef FLUTTER_FML_PATHS_H_
6#define FLUTTER_FML_PATHS_H_
7
8#include <string>
9#include <utility>
10
11#include "flutter/fml/unique_fd.h"
12
13namespace fml {
14namespace paths {
15
16std::pair<bool, std::string> GetExecutableDirectoryPath();
17
18// Get the directory to the application's caches directory.
19fml::UniqueFD GetCachesDirectory();
20
21std::string JoinPaths(std::initializer_list<std::string> components);
22
23// Returns the absolute path of a possibly relative path.
24// It doesn't consult the filesystem or simplify the path.
25std::string AbsolutePath(const std::string& path);
26
27// Returns the directory name component of the given path.
28std::string GetDirectoryName(const std::string& path);
29
30// Decodes a URI encoded string.
31std::string SanitizeURIEscapedCharacters(const std::string& str);
32
33// Converts a file URI to a path.
34std::string FromURI(const std::string& uri);
35
36} // namespace paths
37} // namespace fml
38
39#endif // FLUTTER_FML_PATHS_H_
40