/
/
opt
/
golang
/
1.19.4
/
src
/
index
/
suffixarray
Server: in-mum-web1112.main-hosting.eu (62.72.28.111)
You: 216.73.216.137
PHP 8.3.16
Dir:
/opt/golang/1.19.4/src/index/suffixarray
Edit:
/opt/golang/1.19.4/src/index/suffixarray/gen.go
// Copyright 2019 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. //go:build ignore // Gen generates sais2.go by duplicating functions in sais.go // using different input types. // See the comment at the top of sais.go for details. package main import ( "bytes" "log" "os" "strings" ) func main() { log.SetPrefix("gen: ") log.SetFlags(0) data, err := os.ReadFile("sais.go") if err != nil { log.Fatal(err) } x := bytes.Index(data, []byte("\n\n")) if x < 0 { log.Fatal("cannot find blank line after copyright comment") } var buf bytes.Buffer buf.Write(data[:x]) buf.WriteString("\n\n// Code generated by go generate; DO NOT EDIT.\n\npackage suffixarray\n") for { x := bytes.Index(data, []byte("\nfunc ")) if x < 0 { break } data = data[x:] p := bytes.IndexByte(data, '(') if p < 0 { p = len(data) } name := string(data[len("\nfunc "):p]) x = bytes.Index(data, []byte("\n}\n")) if x < 0 { log.Fatalf("cannot find end of func %s", name) } fn := string(data[:x+len("\n}\n")]) data = data[x+len("\n}"):] if strings.HasSuffix(name, "_32") { buf.WriteString(fix32.Replace(fn)) } if strings.HasSuffix(name, "_8_32") { // x_8_32 -> x_8_64 done above fn = fix8_32.Replace(stripByteOnly(fn)) buf.WriteString(fn) buf.WriteString(fix32.Replace(fn)) } } if err := os.WriteFile("sais2.go", buf.Bytes(), 0666); err != nil { log.Fatal(err) } } var fix32 = strings.NewReplacer( "32", "64", "int32", "int64", ) var fix8_32 = strings.NewReplacer( "_8_32", "_32", "byte", "int32", ) func stripByteOnly(s string) string { lines := strings.SplitAfter(s, "\n") w := 0 for _, line := range lines { if !strings.Contains(line, "256") && !strings.Contains(line, "byte-only") { lines[w] = line w++ } } return strings.Join(lines[:w], "") }
Ukuran: 1.9 KB