MCPcopy Create free account
hub / github.com/colbymchenry/codegraph / alias_line

Function alias_line

codegraph-kernel/src/cfnptr.rs:712–762  ·  view source on GitHub ↗
(line: &[u8])

Source from the content-addressed store, hash-verified

710 i
711}
712
713fn alias_line(line: &[u8]) -> Option<&[u8]> {
714 let mut i = skip_sp_tab(line, 0);
715 if line.get(i) != Some(&b'#') {
716 return None;
717 }
718 i = skip_sp_tab(line, i + 1);
719 if line.len() < i + 6 || &line[i..i + 6] != b"define" {
720 return None;
721 }
722 i += 6;
723 let w = skip_sp_tab(line, i);
724 if w == i || !is_word_at(line, w) {
725 return None;
726 }
727 let name_end = word_end(line, w);
728 let name = &line[w..name_end];
729 let v0 = skip_sp_tab(line, name_end);
730 if v0 == name_end {
731 return None; // [ \t]+ before the value
732 }
733 // (?:struct[ \t]+)* greedy, k-descending on value failure.
734 let mut stack = vec![v0];
735 loop {
736 let cur = *stack.last().unwrap();
737 if line.len() >= cur + 6 && &line[cur..cur + 6] == b"struct" {
738 let e = cur + 6;
739 let w2 = skip_sp_tab(line, e);
740 if w2 > e {
741 stack.push(w2);
742 continue;
743 }
744 }
745 break;
746 }
747 for &vp in stack.iter().rev() {
748 let Some(&b0) = line.get(vp) else { continue };
749 if !(b0.is_ascii_alphabetic() || b0 == b'_') {
750 continue; // value must start [A-Za-z_]
751 }
752 let ve = word_end(line, vp);
753 // [ \t\r]*$
754 let mut t = ve;
755 while t < line.len() && (line[t] == b' ' || line[t] == b'\t' || line[t] == b'\r') {
756 t += 1;
757 }
758 if t == line.len() {
759 return Some(name);
760 }
761 }
762 None
763}
764
765/// FIELD_ASSIGN_RE: /(\w+)\s*(?:->|\.)\s*(\w+)\s*=\s*(\w+)\s*(?:->|\.)\s*(\w+)/g

Callers 1

scan_alias_namesFunction · 0.85

Calls 6

skip_sp_tabFunction · 0.85
is_word_atFunction · 0.85
word_endFunction · 0.85
lenMethod · 0.80
getMethod · 0.65
unwrapMethod · 0.60

Tested by

no test coverage detected