internal/cabi: fix arch amd64
This commit is contained in:
@@ -121,15 +121,20 @@ func main() {
|
||||
|
||||
types := []string{"char", "short", "int", "long long", "float", "double", "void*"}
|
||||
ids := []string{"int8", "int16", "int32", "int64", "float32", "float64", "uintptr"}
|
||||
idTypes := make(map[string]string)
|
||||
for i, id := range ids {
|
||||
idTypes[id] = types[i]
|
||||
}
|
||||
|
||||
// write cbasic
|
||||
// write cbasic
|
||||
var cbuf bytes.Buffer
|
||||
for nid, id := range ids {
|
||||
data := strings.NewReplacer("int", types[nid], "basic", "basic_"+id).Replace(cbasic)
|
||||
cbuf.WriteString(data)
|
||||
}
|
||||
os.WriteFile("./wrap/basic.c", cbuf.Bytes(), 0666)
|
||||
// write basic
|
||||
|
||||
// write go basic
|
||||
var buf bytes.Buffer
|
||||
buf.WriteString(ghead_basic)
|
||||
for _, id := range ids {
|
||||
@@ -138,6 +143,7 @@ func main() {
|
||||
}
|
||||
os.WriteFile("./demo/basic.go", buf.Bytes(), 0666)
|
||||
|
||||
// write c array
|
||||
for nid, id := range ids {
|
||||
f := filepath.Join("./wrap/array_" + id + ".c")
|
||||
var buf bytes.Buffer
|
||||
@@ -150,7 +156,7 @@ func main() {
|
||||
os.WriteFile(f, buf.Bytes(), 0666)
|
||||
}
|
||||
|
||||
// write struct
|
||||
// write c struct
|
||||
for nid, id := range ids {
|
||||
f := filepath.Join("./wrap/struct_" + id + ".c")
|
||||
var buf bytes.Buffer
|
||||
@@ -167,7 +173,7 @@ func main() {
|
||||
os.WriteFile(f, buf.Bytes(), 0666)
|
||||
}
|
||||
|
||||
// write go demo array
|
||||
// write go array
|
||||
for _, id := range ids {
|
||||
f := filepath.Join("./demo/array_" + id + ".go")
|
||||
var buf bytes.Buffer
|
||||
@@ -185,7 +191,7 @@ func main() {
|
||||
os.WriteFile(f, buf.Bytes(), 0666)
|
||||
}
|
||||
|
||||
// write go demo struct
|
||||
// write go struct
|
||||
for _, id := range ids {
|
||||
f := filepath.Join("./demo/struct_" + id + ".go")
|
||||
var buf bytes.Buffer
|
||||
@@ -206,4 +212,72 @@ func main() {
|
||||
}
|
||||
os.WriteFile(f, buf.Bytes(), 0666)
|
||||
}
|
||||
var mixeds []string
|
||||
for _, id1 := range ids {
|
||||
for _, id2 := range ids {
|
||||
if id1 == id2 {
|
||||
continue
|
||||
}
|
||||
mixeds = append(mixeds, id1+","+id2)
|
||||
}
|
||||
}
|
||||
ids2 := []string{"int8", "int16", "int32", "float32"}
|
||||
for _, id1 := range ids2 {
|
||||
for _, id2 := range ids2 {
|
||||
if id1 == id2 {
|
||||
continue
|
||||
}
|
||||
for _, id3 := range ids2 {
|
||||
if id1 == id2 && id2 == id3 {
|
||||
continue
|
||||
}
|
||||
mixeds = append(mixeds, id1+","+id2+","+id3)
|
||||
for _, id4 := range ids2 {
|
||||
if id1 == id2 && id2 == id3 && id3 == id4 {
|
||||
continue
|
||||
}
|
||||
mixeds = append(mixeds, id1+","+id2+","+id3+","+id4)
|
||||
for _, id5 := range ids2 {
|
||||
if id1 == id2 && id2 == id3 && id3 == id4 && id4 == id5 {
|
||||
continue
|
||||
}
|
||||
mixeds = append(mixeds, id1+","+id2+","+id3+","+id4+","+id5)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// write c mixed
|
||||
cbuf.Reset()
|
||||
for i, mixed := range mixeds {
|
||||
N := strconv.Itoa(i + 1)
|
||||
ids := strings.Split(mixed, ",")
|
||||
ar := make([]string, len(ids))
|
||||
for j, id := range ids {
|
||||
ar[j] = idTypes[id] + " x" + strconv.Itoa(j) + ";"
|
||||
}
|
||||
data := strings.NewReplacer("int x;", strings.Join(ar, "\n\t"), "N", N,
|
||||
"point", "point"+N, "demo", "demo"+N).Replace(cstruct)
|
||||
cbuf.WriteString(data)
|
||||
}
|
||||
os.WriteFile("./wrap/struct_mixed.c", cbuf.Bytes(), 0666)
|
||||
// write go mixed
|
||||
buf.Reset()
|
||||
buf.WriteString(strings.Replace(ghead_basic, "basic", "struct_mixed", -1))
|
||||
for i, mixed := range mixeds {
|
||||
N := strconv.Itoa(i + 1)
|
||||
ids := strings.Split(mixed, ",")
|
||||
ar := make([]string, len(ids))
|
||||
for j, id := range ids {
|
||||
ar[j] = "x" + strconv.Itoa(j) + " " + id
|
||||
}
|
||||
M := make([]string, len(ids))
|
||||
for j := 0; j < len(ids); j++ {
|
||||
M[j] = strconv.Itoa(j + 1)
|
||||
}
|
||||
data := strings.NewReplacer("x int", strings.Join(ar, "\n\t"), "N", N, "M", strings.Join(M, ", "),
|
||||
"point", "point"+N, "demo", "demo"+N).Replace(gstruct)
|
||||
buf.WriteString(data)
|
||||
}
|
||||
os.WriteFile("./demo/struct_mixed.go", buf.Bytes(), 0666)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user