library: cpp/std; cpp/inih demo: inihreader

This commit is contained in:
xushiwei
2024-07-13 17:51:06 +08:00
parent dbecf33924
commit 80d80ad8aa
14 changed files with 363 additions and 129 deletions

View File

@@ -1,61 +0,0 @@
package main
import (
"github.com/goplus/llgo/c"
"github.com/goplus/llgo/cpp/inih"
)
/*
expected output:
section: owner name: name value: John Doe
section: owner name: organization value: Acme Widgets Inc.
section: database name: server value: 192.0.2.62
section: database name: port value: 143
section: database name: file value: "payroll.dat"
section: database name: enabled value: true
section: owner name: name value: John Doe
section: owner name: organization value: Acme Widgets Inc.
section: database name: server value: 192.0.2.62
section: database name: port value: 143
section: database name: file value: "payroll.dat"
section: database name: enabled value: true
section: settings name: username value: lee
section: settings name: timeout value: 20
Config file parsed successfully
s : 192.0.2.62
isDatabaseEnabled: true port: 143
0x109f54da0
0
value: 100
*/
func main() {
demo1()
reader := inih.NewReaderFile(inih.Str("config.ini"))
if reader.ParseError() != 0 {
println("Error parsing config file")
return
}
isDatabaseEnabled := reader.GetBoolean(inih.Str("database"), inih.Str("enabled"), false)
port := reader.GetInteger(inih.Str("database"), inih.Str("port"), 0)
s := reader.GetString(inih.Str("database"), inih.Str("server"), inih.Str("unknown"))
println("s :", s.String())
println("isDatabaseEnabled:", isDatabaseEnabled, "port:", port)
demo2()
}
func demo2() {
buf := `[settings]
username=admin
timeout=100
`
reader := inih.NewReader(c.Str(buf), c.Ulong(len(buf)))
println(&reader)
println(reader.ParseError())
sec := inih.Str("settings")
name := inih.Str("timeout")
value := reader.GetInteger(sec, name, 0)
println("value:", value)
}

View File

@@ -5,7 +5,7 @@ import (
"github.com/goplus/llgo/cpp/inih"
)
func demo1() {
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 {

View File

@@ -0,0 +1,10 @@
; example.ini
[owner]
name = John Doe
organization = Acme Widgets Inc.
[database]
server = 192.0.2.62
port = 143
file = "payroll.dat"
enabled = true

View File

@@ -0,0 +1,31 @@
package main
import (
"github.com/goplus/llgo/c"
"github.com/goplus/llgo/cpp/inih"
"github.com/goplus/llgo/cpp/std"
)
func main() {
buf := `[settings]
username=admin
timeout=100
`
reader := inih.NewReader(c.Str(buf), uintptr(len(buf)))
println(reader.ParseError())
sec := std.Str("settings")
name := std.Str("timeout")
value := reader.GetInteger(sec, name, 0)
println("value:", value)
reader = inih.NewReaderFile(std.Str("config.ini"))
if ret := reader.ParseError(); ret != 0 {
println("Error parsing config file:", ret)
return
}
isDatabaseEnabled := reader.GetBoolean(std.Str("database"), std.Str("enabled"), false)
port := reader.GetInteger(std.NewString("database"), std.Str("port"), 0)
s := reader.GetString(std.Str("database"), std.Str("server"), std.Str("unknown"))
println("s:", s.Str())
println("isDatabaseEnabled:", isDatabaseEnabled, "port:", port)
}