feat(cpp/inih): add inih parser_1

This commit is contained in:
morpingsss
2024-07-12 11:13:15 +08:00
parent 4bba3bf1d2
commit 39533e4209
7 changed files with 116 additions and 5 deletions

View File

@@ -1,3 +0,0 @@
[settings]
username=admin
timeout=30

View File

@@ -1,44 +0,0 @@
package main
import (
"github.com/goplus/llgo/c"
"github.com/goplus/llgo/c/inih"
)
func main() {
filename := c.Str("config.ini")
if inih.Parse(filename, func(user c.Pointer, section *c.Char, name *c.Char, value *c.Char) c.Int {
println("section:", c.GoString(section), "name:", c.GoString(name), "value:", c.GoString(value))
return 1
}, nil) < 0 {
println("Error parsing config file")
return
}
file := c.Fopen(c.Str("config.ini"), c.Str("r"))
if file == nil {
println("Error opening config file")
return
} else {
if inih.ParseFile(file, func(user c.Pointer, section *c.Char, name *c.Char, value *c.Char) c.Int {
println("section:", c.GoString(section), "name:", c.GoString(name), "value:", c.GoString(value))
return 1
}, nil) < 0 {
println("Error parsing config file")
return
}
c.Fclose(file)
}
configData := "[settings]\nusername=lee\ntimeout=20"
if inih.ParseString(c.Str(configData), func(user c.Pointer, section *c.Char, name *c.Char, value *c.Char) c.Int {
println("section:", c.GoString(section), "name:", c.GoString(name), "value:", c.GoString(value))
return 1
}, nil) < 0 {
println("Error parsing config file")
return
} else {
println("Config file parsed successfully")
}
}

View File

@@ -1,20 +0,0 @@
package inih
import (
_ "unsafe"
"github.com/goplus/llgo/c"
)
const (
LLGoPackage = "link: $(pkg-config --libs inih); -linih"
)
//go:linkname Parse C.ini_parse
func Parse(filename *c.Char, handler func(user c.Pointer, section *c.Char, name *c.Char, value *c.Char) c.Int, user c.Pointer) c.Int
//go:linkname ParseFile C.ini_parse_file
func ParseFile(file c.FilePtr, handler func(user c.Pointer, section *c.Char, name *c.Char, value *c.Char) c.Int, user c.Pointer) c.Int
//go:linkname ParseString C.ini_parse_string
func ParseString(str *c.Char, handler func(user c.Pointer, section *c.Char, name *c.Char, value *c.Char) c.Int, user c.Pointer) c.Int