inih: INIReaderDispose

This commit is contained in:
xushiwei
2024-07-13 18:11:34 +08:00
parent b026bfc71b
commit af54a22d16
6 changed files with 24 additions and 3 deletions

View File

@@ -12,6 +12,8 @@ username=admin
timeout=100 timeout=100
` `
reader := inih.NewReader(c.Str(buf), uintptr(len(buf))) reader := inih.NewReader(c.Str(buf), uintptr(len(buf)))
defer reader.Dispose()
println(reader.ParseError()) println(reader.ParseError())
sec := std.Str("settings") sec := std.Str("settings")
name := std.Str("timeout") name := std.Str("timeout")
@@ -19,6 +21,8 @@ timeout=100
println("value:", value) println("value:", value)
reader = inih.NewReaderFile(std.Str("config.ini")) reader = inih.NewReaderFile(std.Str("config.ini"))
defer reader.Dispose()
if ret := reader.ParseError(); ret != 0 { if ret := reader.ParseError(); ret != 0 {
println("Error parsing config file:", ret) println("Error parsing config file:", ret)
return return

13
cpp/inih/_wrap/reader.cpp Normal file
View File

@@ -0,0 +1,13 @@
#include <INIReader.h>
extern "C" {
// -----------------------------------------------------------------------------
void INIReaderDispose(INIReader* r) {
r->~INIReader();
}
// -----------------------------------------------------------------------------
} // extern "C"

View File

@@ -23,7 +23,8 @@ import (
) )
const ( const (
LLGoPackage = "link: $(pkg-config --libs inih INIReader); -linih -lINIReader" LLGoFiles = "_wrap/reader.cpp"
LLGoPackage = "link: $(pkg-config --cflags --libs inih INIReader); -linih -lINIReader"
) )
//go:linkname Parse C.ini_parse //go:linkname Parse C.ini_parse

View File

@@ -36,6 +36,9 @@ func (r *Reader) InitFromBuffer(buffer *c.Char, bufferSize uintptr) {}
// llgo:link (*Reader).InitFromFile C._ZN9INIReaderC1ERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE // llgo:link (*Reader).InitFromFile C._ZN9INIReaderC1ERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE
func (r *Reader) InitFromFile(fileName *std.String) {} func (r *Reader) InitFromFile(fileName *std.String) {}
// llgo:link (*Reader).Dispose C.INIReaderDispose
func (s *Reader) Dispose() {}
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
func NewReader(buffer *c.Char, bufferSize uintptr) (ret Reader) { func NewReader(buffer *c.Char, bufferSize uintptr) (ret Reader) {

View File

@@ -20,7 +20,7 @@ void stdStringInitFromCStrLen(std::string* s, const char* cstr, size_t len) {
new(s) std::string(cstr, len); new(s) std::string(cstr, len);
} }
void stdStringDispose(const std::string* s) { void stdStringDispose(std::string* s) {
s->~basic_string(); s->~basic_string();
} }

View File

@@ -17,7 +17,7 @@
package std package std
const ( const (
LLGoFiles = "_cppstd/string.cpp" LLGoFiles = "_wrap/string.cpp"
LLGoPackage = "link: c++" LLGoPackage = "link: c++"
) )