Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/shaderc
Path: blob/main/libshaderc_util/src/version_profile.cc
1560 views
1
// Copyright 2015 The Shaderc Authors. All rights reserved.
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
6
//
7
// http://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
14
15
#include "libshaderc_util/version_profile.h"
16
17
#include <cctype>
18
#include <sstream>
19
20
namespace {
21
22
const int kVersionNumberLength = 3;
23
const int kMaxProfileLength = 13; // strlen(compatibility)
24
const int kMaxVersionProfileLength = kVersionNumberLength + kMaxProfileLength;
25
const int kMinVersionProfileLength = kVersionNumberLength;
26
27
} // anonymous namespace
28
29
namespace shaderc_util {
30
31
bool ParseVersionProfile(const std::string& version_profile, int* version,
32
EProfile* profile) {
33
if (version_profile.size() < kMinVersionProfileLength ||
34
version_profile.size() > kMaxVersionProfileLength ||
35
!::isdigit(version_profile.front()))
36
return false;
37
38
std::string profile_string;
39
std::istringstream(version_profile) >> *version >> profile_string;
40
41
if (!IsKnownVersion(*version)) {
42
return false;
43
}
44
if (profile_string.empty()) {
45
*profile = ENoProfile;
46
} else if (profile_string == "core") {
47
*profile = ECoreProfile;
48
} else if (profile_string == "es") {
49
*profile = EEsProfile;
50
} else if (profile_string == "compatibility") {
51
*profile = ECompatibilityProfile;
52
} else {
53
return false;
54
}
55
56
return true;
57
}
58
59
} // namespace shaderc_util
60
61