FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
DirectXShaderCompiler/lib/Support/StringExtras.cpp at main · microsoft/DirectXShaderCompiler · GitHub
Uh oh!
There was an error while loading.
Please reload this page
.
microsoft
/
DirectXShaderCompiler
Public
Notifications
You must be signed in to change notification settings
Fork
897
Star
3.6k
Code
Issues
654
Pull requests
140
Discussions
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Discussions
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
DirectXShaderCompiler
/
lib
/
Support
/
StringExtras.cpp
Copy path
More file actions
More file actions
Latest commit
History
History
History
58 lines (52 loc) · 2.32 KB
Breadcrumbs
DirectXShaderCompiler
/
lib
/
Support
/
StringExtras.cpp
Copy path
File metadata and controls
58 lines (52 loc) · 2.32 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
//
===-- StringExtras.cpp - Implement the StringExtras header --------------===//
//
//
The LLVM Compiler Infrastructure
//
//
This file is distributed under the University of Illinois Open Source
//
License. See LICENSE.TXT for details.
//
//
===----------------------------------------------------------------------===//
//
//
This file implements the StringExtras.h header
//
//
===----------------------------------------------------------------------===//
#
include
"
llvm/ADT/SmallVector.h
"
#
include
"
llvm/ADT/StringExtras.h
"
using
namespace
llvm
;
//
/ StrInStrNoCase - Portable version of strcasestr. Locates the first
//
/ occurrence of string 's1' in string 's2', ignoring case. Returns
//
/ the offset of s2 in s1 or npos if s2 cannot be found.
StringRef::size_type
llvm::StrInStrNoCase
(StringRef s1, StringRef s2) {
size_t
N = s2.
size
(), M = s1.
size
();
if
(N > M)
return
StringRef::npos;
for
(
size_t
i =
0
, e = M - N +
1
; i != e; ++i)
if
(s1.
substr
(i, N).
equals_lower
(s2))
return
i;
return
StringRef::npos;
}
//
/ getToken - This function extracts one token from source, ignoring any
//
/ leading characters that appear in the Delimiters string, and ending the
//
/ token at any of the characters that appear in the Delimiters string. If
//
/ there are no tokens in the source string, an empty string is returned.
//
/ The function returns a pair containing the extracted token and the
//
/ remaining tail string.
std::pair<StringRef, StringRef>
llvm::getToken
(StringRef Source,
StringRef Delimiters) {
//
Figure out where the token starts.
StringRef::size_type Start = Source.
find_first_not_of
(Delimiters);
//
Find the next occurrence of the delimiter.
StringRef::size_type End = Source.
find_first_of
(Delimiters, Start);
return
std::make_pair
(Source.
slice
(Start, End), Source.
substr
(End));
}
//
/ SplitString - Split up the specified string according to the specified
//
/ delimiters, appending the result fragments to the output list.
void
llvm::SplitString
(StringRef Source,
SmallVectorImpl<StringRef> &OutFragments,
StringRef Delimiters) {
std::pair<StringRef, StringRef> S =
getToken
(Source, Delimiters);
while
(!S.
first
.
empty
()) {
OutFragments.
push_back
(S.
first
);
S =
getToken
(S.
second
, Delimiters);
}
}
Back
|
FazBrowse Home
|
New Git URL