Flutter Engine
The Flutter Engine
utilities.cc
Go to the documentation of this file.
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
6
7#include <algorithm>
8#include <cctype>
9#include <filesystem>
10#include <iostream>
11#include <sstream>
12
13namespace impeller {
14namespace compiler {
15
17 auto permissions =
18 std::filesystem::perms::owner_read | std::filesystem::perms::owner_write |
19 std::filesystem::perms::group_read | std::filesystem::perms::others_read;
20 std::error_code error;
21 std::filesystem::permissions(p, permissions, error);
22 if (error) {
23 std::cerr << "Failed to set access on file '" << p
24 << "': " << error.message() << std::endl;
25 return false;
26 }
27 return true;
28}
29
31 return reinterpret_cast<const char*>(path.u8string().c_str());
32}
33
34std::string InferShaderNameFromPath(std::string_view path) {
35 auto p = std::filesystem::path{path}.stem();
36 return Utf8FromPath(p);
37}
38
39std::string ToCamelCase(std::string_view string) {
40 if (string.empty()) {
41 return "";
42 }
43
44 std::stringstream stream;
45 bool next_upper = true;
46 for (size_t i = 0, count = string.length(); i < count; i++) {
47 auto ch = string.data()[i];
48 if (next_upper) {
49 next_upper = false;
50 stream << static_cast<char>(std::toupper(ch));
51 continue;
52 }
53 if (ch == '_') {
54 next_upper = true;
55 continue;
56 }
57 stream << ch;
58 }
59 return stream.str();
60}
61
62std::string ToLowerCase(std::string_view string) {
63 std::string result = std::string(string);
64 std::transform(result.begin(), result.end(), result.begin(),
65 [](char x) { return std::tolower(x); });
66 return result;
67}
68
69std::string ConvertToEntrypointName(std::string_view string) {
70 if (string.empty()) {
71 return "";
72 }
73 std::stringstream stream;
74 // Append a prefix if the first character is not a letter.
75 if (!std::isalpha(string.data()[0])) {
76 stream << "i_";
77 }
78 for (size_t i = 0, count = string.length(); i < count; i++) {
79 auto ch = string.data()[i];
80 if (std::isalnum(ch) || ch == '_') {
81 stream << ch;
82 }
83 }
84 return stream.str();
85}
86
87bool StringStartsWith(const std::string& target, const std::string& prefix) {
88 if (prefix.length() > target.length()) {
89 return false;
90 }
91 for (size_t i = 0; i < prefix.length(); i++) {
92 if (target[i] != prefix[i]) {
93 return false;
94 }
95 }
96 return true;
97}
98
99} // namespace compiler
100} // namespace impeller
int count
Definition: FontMgrTest.cpp:50
EMSCRIPTEN_KEEPALIVE void empty()
const uint8_t uint32_t uint32_t GError ** error
GAsyncResult * result
uint32_t * target
size_t length
double x
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot The VM snapshot data that will be memory mapped as read only SnapshotAssetPath must be present isolate snapshot The isolate snapshot data that will be memory mapped as read only SnapshotAssetPath must be present cache dir path
Definition: switches.h:57
std::string ConvertToEntrypointName(std::string_view string)
Ensure that the entrypoint name is a valid identifier in the target language.
Definition: utilities.cc:69
std::string ToLowerCase(std::string_view string)
Definition: utilities.cc:62
bool SetPermissiveAccess(const std::filesystem::path &p)
Sets the file access mode of the file at path 'p' to 0644.
Definition: utilities.cc:16
std::string ToCamelCase(std::string_view string)
Definition: utilities.cc:39
std::string Utf8FromPath(const std::filesystem::path &path)
Converts a native format path to a utf8 string.
Definition: utilities.cc:30
bool StringStartsWith(const std::string &target, const std::string &prefix)
Definition: utilities.cc:87
std::string InferShaderNameFromPath(std::string_view path)
Definition: utilities.cc:34
static SkColor4f transform(SkColor4f c, SkColorSpace *src, SkColorSpace *dst)
Definition: p3.cpp:47
std::shared_ptr< const fml::Mapping > data
Definition: texture_gles.cc:63