mirror of
https://github.com/fumiama/gozel.git
synced 2026-06-22 11:30:29 +08:00
feat(gen): add more comments & support _t enum
This commit is contained in:
21
gen/scan.go
21
gen/scan.go
@@ -251,6 +251,27 @@ func scanBlocks(
|
||||
fsb.WriteString(us2camel(strings.TrimSuffix(strings.TrimSpace(vname), ";")))
|
||||
fsb.WriteString(" byte")
|
||||
}
|
||||
case strings.Contains(stat, "_t "):
|
||||
tname, remains, ok := strings.Cut(stat, "_t ")
|
||||
if !ok {
|
||||
panic(fmt.Sprintf("%s L%d: unexpected statement %s", name, ln, stat))
|
||||
}
|
||||
szc, sz := "", ""
|
||||
vname, szc, ok = strings.Cut(remains, "[")
|
||||
vname = us2camel(strings.TrimSpace(vname))
|
||||
if ok { // is array
|
||||
sz, c, _ = strings.Cut(szc, "//")
|
||||
fsb.WriteString("\t")
|
||||
fsb.WriteString(vname)
|
||||
fsb.WriteString(" [")
|
||||
fsb.WriteString(strings.TrimSuffix(strings.TrimSpace(sz), ";"))
|
||||
fsb.WriteString(strings.TrimSpace(tname))
|
||||
} else {
|
||||
vname, c, _ = strings.Cut(vname, "//")
|
||||
fsb.WriteString(us2camel(strings.TrimSuffix(strings.TrimSpace(vname), ";")))
|
||||
fsb.WriteString(" ")
|
||||
fsb.WriteString(strings.TrimSpace(tname))
|
||||
}
|
||||
default:
|
||||
panic(fmt.Sprintf("%s L%d: unexpected statement %s", name, ln, stat))
|
||||
}
|
||||
|
||||
@@ -81,19 +81,22 @@ func (s *symbol) replace(txt string) string {
|
||||
return strings.ReplaceAll(txt, s.name, s.fields[0])
|
||||
case symbolTypeFunc:
|
||||
paras := strings.Split(s.fields[0], ",")
|
||||
txts := []string{}
|
||||
for {
|
||||
args, a, b, err := s.extract1stFunc(txt)
|
||||
if err == errNoSuchSymbol {
|
||||
return txt
|
||||
txts = append(txts, txt)
|
||||
return strings.Join(txts, "")
|
||||
}
|
||||
if len(paras) != len(args) {
|
||||
panic("args " + strings.Join(args, ", ") + " count " + strconv.Itoa(len(args)) + " is different from recorded " + s.fields[0])
|
||||
}
|
||||
txts := []string{txt[:a], "(", s.fields[1], txt[b:]}
|
||||
n := len(txts)
|
||||
txts = append(txts, []string{txt[:a], "/* ", txt[a:b], ") */(", s.fields[1]}...)
|
||||
for i, p := range paras {
|
||||
txts[2] = strings.ReplaceAll(txts[2], strings.TrimSpace(p), args[i])
|
||||
txts[n+4] = strings.ReplaceAll(txts[n+4], strings.TrimSpace(p), args[i])
|
||||
}
|
||||
txt = strings.Join(txts, "")
|
||||
txt = txt[b:]
|
||||
}
|
||||
}
|
||||
panic("unsupported symbol type " + strconv.Itoa(int(s.stype)))
|
||||
|
||||
Reference in New Issue
Block a user