MCPcopy Create free account
hub / github.com/Snapchat/Valdi / forEachCSSClass

Function forEachCSSClass

valdi/src/valdi/runtime/CSS/CSSNode.cpp:22–54  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

20
21template<typename T>
22void forEachCSSClass(const StringBox& cssClasses, T&& callback) {
23 size_t rangeStart = 0;
24 size_t i = 0;
25 auto length = cssClasses.length();
26
27 const char* str = cssClasses.getCStr();
28
29 while (i < length) {
30 if (*str == ' ') {
31 // Ignore empty range.
32 if (rangeStart != i) {
33 auto subStr =
34 Valdi::StringCache::getGlobal().makeString(cssClasses.getCStr() + rangeStart, i - rangeStart);
35 callback(subStr);
36 }
37
38 rangeStart = i + 1;
39 }
40
41 str++;
42 i++;
43 }
44
45 if (rangeStart != i) {
46 if (rangeStart == 0) {
47 // We had no multiple, pass the original string
48 callback(cssClasses);
49 } else {
50 auto subStr = Valdi::StringCache::getGlobal().makeString(cssClasses.getCStr() + rangeStart, i - rangeStart);
51 callback(subStr);
52 }
53 }
54}
55
56CSSNode::CSSNode() = default;
57

Callers 1

setClassMethod · 0.85

Calls 5

getGlobalFunction · 0.85
callbackFunction · 0.85
makeStringMethod · 0.80
lengthMethod · 0.45
getCStrMethod · 0.45

Tested by

no test coverage detected