Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gogensig:linux skip file test #95

Open
wants to merge 79 commits into
base: gogensig/update
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
2d2454b
add unmarshaller
tsingbx Sep 11, 2024
8de697e
gogensig:basic unmarshal & vistor
luoliwoshang Aug 29, 2024
a55bcb9
Revert "add visitor"
tsingbx Sep 11, 2024
20939fc
add unmarshaller & visitor
tsingbx Sep 11, 2024
f439e69
gogensig:functype simple struct
luoliwoshang Sep 11, 2024
c4835df
write result to go file
tsingbx Sep 12, 2024
85b0d48
gogensig:function result
luoliwoshang Sep 12, 2024
0a9a96d
add go:linkname for func decl
tsingbx Sep 12, 2024
371e4bf
gogensig:get ctype from llgo/c
luoliwoshang Sep 12, 2024
c1d94f7
modify NewFuncDocComments
tsingbx Sep 12, 2024
488f03c
gogensig:test basic funcdecl
luoliwoshang Sep 12, 2024
6aa1e06
remove ADoc interface
tsingbx Sep 12, 2024
cb47fcc
gogensig:pointer type & cover func test
luoliwoshang Sep 12, 2024
234d375
gogensig:void* to c.Pointer
luoliwoshang Sep 12, 2024
38689ab
gogensig:array in param
luoliwoshang Sep 12, 2024
d8a250e
add SymbleTable & SetupSymbolTable
tsingbx Sep 13, 2024
12a1006
gogensig:basic struct with bulitin type & pointer field
luoliwoshang Sep 13, 2024
1081d0b
add NewFuncDeclWithSymbolTable, UnmarshalBytes, UnmarshalRawDocFile
tsingbx Sep 13, 2024
7a7e733
fix TestUnmarshalAnyNode fail and fix symbol name error
tsingbx Sep 13, 2024
b50048b
add VisitClass, VisitMethod
tsingbx Sep 14, 2024
24ed859
gogensig:struct example
luoliwoshang Sep 14, 2024
c1da42f
gogensig:typedef builtin,pointer,func pointer
luoliwoshang Sep 14, 2024
2202d42
convert enum
tsingbx Sep 14, 2024
c6f32cf
gogensig:typedef array
luoliwoshang Sep 14, 2024
73836b6
gogensig:llcppsigfetch util
luoliwoshang Sep 14, 2024
a37536f
refactoring
tsingbx Sep 14, 2024
3745356
gogensig:link func, named typeref, default field
luoliwoshang Sep 18, 2024
ea61577
add EqualIgnoreSpace for TestSpectrum of enum_test.go
tsingbx Sep 18, 2024
b21a2d0
gogensig:filter func, refine visitor test
luoliwoshang Sep 19, 2024
513332b
gogensig:symbol name prefix
luoliwoshang Sep 19, 2024
0ef8e4b
gogensig:config util & link full operation
luoliwoshang Sep 20, 2024
0b719d0
handle panic
tsingbx Sep 20, 2024
19738cc
gogensig:Add SplitLineIgnoreSpace
luoliwoshang Sep 20, 2024
5f1c969
change enum convert to const (spec...) style
tsingbx Sep 22, 2024
1379318
Add c++/c struct or function comment
tsingbx Sep 23, 2024
fb04c0f
gogensig:config get llcppg.sigfetch.json
luoliwoshang Sep 23, 2024
0b5b1b8
modify comparePackageOutput
tsingbx Sep 24, 2024
558b40f
workflow and update test case
tsingbx Sep 25, 2024
4f0fa6a
add test cases to fix coverage test error
tsingbx Sep 26, 2024
7b00a49
gogensig:decouple json ummarshaller from the main process
luoliwoshang Sep 26, 2024
03ec6d6
gogensig:patch unmarshal_test
luoliwoshang Sep 26, 2024
9d22c2f
gogensig: refactor processor package
luoliwoshang Sep 26, 2024
fa73bfb
gogensig:mock file to test
luoliwoshang Sep 26, 2024
f0c38d0
fix compile error
tsingbx Sep 26, 2024
58274ab
add TestBasicLitFail to fix coverage test
tsingbx Sep 26, 2024
0f69aed
remove unmarshaller.go
tsingbx Sep 27, 2024
99e9291
add ast_test to fix coverage test fail
tsingbx Sep 27, 2024
9996918
gogensig:package func decl error test
luoliwoshang Sep 27, 2024
08761f9
add TestLookupSymbleError test function
tsingbx Sep 27, 2024
99b530c
modify TestIsVoidType & NewBuiltinTypeMap
tsingbx Sep 27, 2024
3b07f2b
gogensig:abstract testGenDecl
luoliwoshang Sep 27, 2024
560afd1
gogensig:package enum test
luoliwoshang Sep 27, 2024
76b57c4
gogensig:test redef typedef & package write
luoliwoshang Sep 27, 2024
8da1838
gogensig:remove unuse function
luoliwoshang Sep 27, 2024
7b5e168
gogensig:remove builtin package
luoliwoshang Sep 27, 2024
a1eedf3
gogensig:remove ast_convert & genpkg to converter package
luoliwoshang Sep 27, 2024
a4d5e49
gogensig:move testvistor to convert_test
luoliwoshang Sep 27, 2024
6acb676
gogensig:move util,symb,file to config package
luoliwoshang Sep 27, 2024
e0461d7
gogensig:config test
luoliwoshang Sep 28, 2024
b4f7e5b
add ast_convert_test
tsingbx Sep 28, 2024
19ee3d1
gogensig:llcppsigfetch test
luoliwoshang Sep 29, 2024
50ee241
chore:rename
luoliwoshang Sep 29, 2024
9ca4b4f
gogensig:test error in type convert
luoliwoshang Sep 29, 2024
2c0d6ce
gogensig:ident refer test
luoliwoshang Sep 29, 2024
7a7c7ea
gogensig:clean regen typedef
luoliwoshang Sep 30, 2024
288c765
ci:test all branch
luoliwoshang Sep 30, 2024
452253f
add NewBuiltinTypeMapWithPkgRefS
tsingbx Sep 30, 2024
d6e0b3f
add import _ "unsafe" to expected string
tsingbx Sep 30, 2024
d33ff43
gogensig:fileset to manager multiple file
luoliwoshang Sep 30, 2024
bf26fbb
gogensig:remove same package clean type
luoliwoshang Sep 30, 2024
63ffa71
gogensig:refine writeToBuffer
luoliwoshang Sep 30, 2024
d939e8e
gogensig:builtin type alias ref
luoliwoshang Oct 8, 2024
e7fa9f3
gogensig:skip headerfile
luoliwoshang Oct 8, 2024
2b26ba3
gogensig:package output dir config
luoliwoshang Oct 8, 2024
9dfadda
gogensig:write to file test
luoliwoshang Oct 9, 2024
54976da
gogensig:skip headerfile gen test
luoliwoshang Oct 9, 2024
34a71d2
gogensig:use stdint.h for test skip
luoliwoshang Oct 9, 2024
980d1cc
gogensig:sigfetch error output
luoliwoshang Oct 9, 2024
2d1a79a
gogensig:linux skip file test
luoliwoshang Oct 14, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 12 additions & 8 deletions .github/workflows/go.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ name: Go

on:
push:
branches: [ "*" ]
branches: [ "**" ]
pull_request:
branches: [ "*" ]
branches: [ "**" ]

jobs:

Expand Down Expand Up @@ -45,7 +45,7 @@ jobs:
echo "deb http://apt.llvm.org/$(lsb_release -cs)/ llvm-toolchain-$(lsb_release -cs)-${{matrix.llvm}} main" | sudo tee /etc/apt/sources.list.d/llvm.list
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
sudo apt-get update
sudo apt-get install -y llvm-${{matrix.llvm}}-dev clang-${{matrix.llvm}} lld-${{matrix.llvm}} pkg-config libgc-dev libssl-dev zlib1g-dev
sudo apt-get install -y llvm-${{matrix.llvm}}-dev clang-${{matrix.llvm}} libclang-${{matrix.llvm}}-dev lld-${{matrix.llvm}} pkg-config libgc-dev libssl-dev zlib1g-dev --fix-missing
echo "/usr/lib/llvm-${{matrix.llvm}}/bin" >> $GITHUB_PATH

# Install optional deps for demos.
Expand Down Expand Up @@ -80,18 +80,22 @@ jobs:

- name: Build
run: go build -v ./...


- name: Install
run: go install ./...

- name: Install llcppsigfetch
run: bash .github/workflows/install_llcppsigfetch.sh

- name: Test
if: ${{!startsWith(matrix.os, 'macos')}}
run: go test -v ./...

- name: Test with coverage
if: startsWith(matrix.os, 'macos')
run: go test -v -coverprofile="coverage.txt" -covermode=atomic ./...

- name: Install
run: go install ./...


- name: LLGO tests
if: ${{!startsWith(matrix.os, 'ubuntu')}}
run: |
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/install_llcppsigfetch.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#!/bin/bash
set -e
llgo install ./chore/_xtool/llcppsymg
llgo install ./chore/_xtool/llcppsigfetch

79 changes: 79 additions & 0 deletions chore/gogensig/cmp/cmp.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
package cmp

import (
"bufio"
"bytes"
"strings"
"unicode"

"github.com/google/go-cmp/cmp"
)

func skipSpace(data []byte, from int) int {
dataBuf := bytes.NewBuffer(data[from:])
index := from
for {
rn, sz, err := dataBuf.ReadRune()
if err != nil {
break
}
if !unicode.IsSpace(rn) {
break
}
index = index + sz
}
return index
}

func SplitLineIgnoreSpace(s string) []string {
buf := bytes.NewBufferString(s)
scan := bufio.NewScanner(buf)
results := make([]string, 0)
for scan.Scan() {
lineText := scan.Text()
lineTextBuf := bytes.NewBufferString(lineText)
lineTextScan := bufio.NewScanner(lineTextBuf)
lineTextScan.Split(func(data []byte, atEOF bool) (advance int, token []byte, err error) {
if atEOF && len(data) == 0 {
return 0, nil, nil
}
if i := bytes.IndexAny(data, " \t"); i >= 0 {
ii := skipSpace(data, i+1)
return ii, data[0:i], nil
}
if atEOF {
return len(data), data, nil
}
return 0, nil, nil
})

strBuilder := strings.Builder{}
writeSpace := false
total := 0
for lineTextScan.Scan() {
word := lineTextScan.Text()
if writeSpace {
strBuilder.WriteRune(' ')
}
n, err := strBuilder.WriteString(word)
if err != nil {
break
}
total += n
writeSpace = total > 0
}
if total > 0 {
results = append(results, strBuilder.String())
}
}
return results
}

func EqualStringIgnoreSpace(s1 string, s2 string) (bool, string) {
arr1 := SplitLineIgnoreSpace(s1)
arr2 := SplitLineIgnoreSpace(s2)
if !cmp.Equal(arr1, arr2) {
return false, cmp.Diff(arr1, arr2)
}
return true, ""
}
111 changes: 111 additions & 0 deletions chore/gogensig/cmptest/test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
package cmptest

import (
"encoding/json"
"log"
"os"
"path/filepath"
"strings"
"testing"

"github.com/goplus/llgo/chore/gogensig/config"
"github.com/goplus/llgo/chore/gogensig/convert"
"github.com/goplus/llgo/chore/gogensig/processor"
"github.com/goplus/llgo/chore/gogensig/unmarshal"
"github.com/goplus/llgo/chore/gogensig/visitor"
cppgtypes "github.com/goplus/llgo/chore/llcppg/types"
)

// The validateFunc is used to validate the generated file,
func RunTest(t *testing.T, pkgName string, isCpp bool, symbolEntries []config.SymbolEntry, cppgConf *cppgtypes.Config, originalCode, expectedOutput string, validateFunc func(t *testing.T, pkg *convert.Package)) {
t.Helper()

tempDir, err := os.MkdirTemp("", "gogensig-test")
if err != nil {
t.Fatal("failed to create temp dir")
}
defer os.RemoveAll(tempDir)

symbolpath, err := CreateAndWriteTempSymbFile(symbolEntries)
if err != nil {
t.Fatal(err)
}
cfgPath, err := CreateCppgConfFile(cppgConf)
if err != nil {
t.Fatal(err)
}
astConvert, err := convert.NewAstConvert(&convert.AstConvertConfig{
PkgName: pkgName,
SymbFile: symbolpath,
CfgFile: cfgPath,
OutputDir: tempDir,
})
if err != nil {
t.Fatal(err)
}

// The result file will be generated in a directory based on the package name.
// For example, if the package name is "typeref", the result file will be generated in a directory named "typeref".
rootDir := filepath.Join(tempDir, pkgName)
files, err := os.ReadDir(rootDir)
if err != nil {
t.Fatalf("Fail to read temp dir: %v", err)
}

for _, file := range files {
log.Println("Generated file:", file.Name())
}

p := processor.NewDocFileSetProcessor([]visitor.DocVisitor{astConvert})

// Fetch the signature file
// The signature file is generated by llcppsigfetch
bytes, err := config.Sigfetch(originalCode, true, isCpp)
if err != nil {
t.Fatal(err)
}

inputdata, err := unmarshal.UnmarshalFileSet(bytes)
if err != nil {
t.Fatal(err)
}

p.ProcessFileSet(inputdata)

// Note: The converted file path for llcppsigfetch's temp header file is temp.h,
genFilePath := filepath.Join(rootDir, "temp.go")
content, err := os.ReadFile(genFilePath)
if err != nil {
t.Fatalf("Fail to read generated file: %v", err)
}

if strings.TrimSpace(expectedOutput) != strings.TrimSpace(string(content)) {
t.Errorf("does not match expected.\nExpected:\n%s\nGot:\n%s", expectedOutput, string(content))
}

if validateFunc != nil {
validateFunc(t, astConvert.GetPackage())
}
}

func CreateAndWriteTempSymbFile(entries []config.SymbolEntry) (string, error) {
return CreateJSONFile("llcppg.symb.json", entries)
}

func CreateCppgConfFile(config *cppgtypes.Config) (string, error) {
return CreateJSONFile("llcppg.cfg", config)
}

func CreateJSONFile(filename string, data interface{}) (string, error) {
filePath := filepath.Join(os.TempDir(), filename)

file, err := os.Create(filePath)
if err != nil {
return "", err
}
defer file.Close()

encoder := json.NewEncoder(file)
encoder.SetIndent("", " ")
return filePath, encoder.Encode(data)
}
61 changes: 61 additions & 0 deletions chore/gogensig/config/_testinput/llcppg.symb.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
[{
"mangle": "_ZN9INIReader12ValueHandlerEPvPKcS2_S2_",
"c++": "INIReader::ValueHandler(void*, char const*, char const*, char const*)",
"go": "(*Reader).ValueHandler"
}, {
"mangle": "_ZN9INIReader7MakeKeyERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEES8_",
"c++": "INIReader::MakeKey(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&)",
"go": "(*Reader).MakeKey"
}, {
"mangle": "_ZN9INIReaderC1EPKcm",
"c++": "INIReader::INIReader(char const*, unsigned long)",
"go": "(*Reader).Init__1"
}, {
"mangle": "_ZN9INIReaderC1ERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE",
"c++": "INIReader::INIReader(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&)",
"go": "(*Reader).Init"
}, {
"mangle": "_ZNK9INIReader10GetBooleanERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEES8_b",
"c++": "INIReader::GetBoolean(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, bool) const",
"go": "(*Reader).GetBoolean"
}, {
"mangle": "_ZNK9INIReader10GetIntegerERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEES8_l",
"c++": "INIReader::GetInteger(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, long) const",
"go": "(*Reader).GetInteger"
}, {
"mangle": "_ZNK9INIReader10HasSectionERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE",
"c++": "INIReader::HasSection(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) const",
"go": "(*Reader).HasSection"
}, {
"mangle": "_ZNK9INIReader10ParseErrorEv",
"c++": "INIReader::ParseError() const",
"go": "(*Reader).ParseError"
}, {
"mangle": "_ZNK9INIReader11GetUnsignedERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEES8_m",
"c++": "INIReader::GetUnsigned(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned long) const",
"go": "(*Reader).GetUnsigned"
}, {
"mangle": "_ZNK9INIReader12GetInteger64ERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEES8_x",
"c++": "INIReader::GetInteger64(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, long long) const",
"go": "(*Reader).GetInteger64"
}, {
"mangle": "_ZNK9INIReader13GetUnsigned64ERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEES8_y",
"c++": "INIReader::GetUnsigned64(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned long long) const",
"go": "(*Reader).GetUnsigned64"
}, {
"mangle": "_ZNK9INIReader3GetERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEES8_S8_",
"c++": "INIReader::Get(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) const",
"go": "(*Reader).Get"
}, {
"mangle": "_ZNK9INIReader7GetRealERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEES8_d",
"c++": "INIReader::GetReal(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, double) const",
"go": "(*Reader).GetReal"
}, {
"mangle": "_ZNK9INIReader8HasValueERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEES8_",
"c++": "INIReader::HasValue(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) const",
"go": "(*Reader).HasValue"
}, {
"mangle": "_ZNK9INIReader9GetStringERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEES8_S8_",
"c++": "INIReader::GetString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) const",
"go": "(*Reader).GetString"
}]
61 changes: 61 additions & 0 deletions chore/gogensig/config/_testinput/llcppg.symb.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
[{
: "_ZN9INIReader12ValueHandlerEPvPKcS2_S2_",
"c++": "INIReader::ValueHandler(void*, char const*, char const*, char const*)",
"go": "(*Reader).ValueHandler"
}, {
"mangle": "_ZN9INIReader7MakeKeyERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEES8_",
"c++": "INIReader::MakeKey(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&)",
"go": "(*Reader).MakeKey"
}, {
"mangle": "_ZN9INIReaderC1EPKcm",
"c++": "INIReader::INIReader(char const*, unsigned long)",
"go": "(*Reader).Init__1"
}, {
"mangle": "_ZN9INIReaderC1ERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE",
"c++": "INIReader::INIReader(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&)",
"go": "(*Reader).Init"
}, {
"mangle": "_ZNK9INIReader10GetBooleanERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEES8_b",
"c++": "INIReader::GetBoolean(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, bool) const",
"go": "(*Reader).GetBoolean"
}, {
"mangle": "_ZNK9INIReader10GetIntegerERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEES8_l",
"c++": "INIReader::GetInteger(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, long) const",
"go": "(*Reader).GetInteger"
}, {
"mangle": "_ZNK9INIReader10HasSectionERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE",
"c++": "INIReader::HasSection(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) const",
"go": "(*Reader).HasSection"
}, {
"mangle": "_ZNK9INIReader10ParseErrorEv",
"c++": "INIReader::ParseError() const",
"go": "(*Reader).ParseError"
}, {
"mangle": "_ZNK9INIReader11GetUnsignedERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEES8_m",
"c++": "INIReader::GetUnsigned(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned long) const",
"go": "(*Reader).GetUnsigned"
}, {
"mangle": "_ZNK9INIReader12GetInteger64ERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEES8_x",
"c++": "INIReader::GetInteger64(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, long long) const",
"go": "(*Reader).GetInteger64"
}, {
"mangle": "_ZNK9INIReader13GetUnsigned64ERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEES8_y",
"c++": "INIReader::GetUnsigned64(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned long long) const",
"go": "(*Reader).GetUnsigned64"
}, {
"mangle": "_ZNK9INIReader3GetERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEES8_S8_",
"c++": "INIReader::Get(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) const",
"go": "(*Reader).Get"
}, {
"mangle": "_ZNK9INIReader7GetRealERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEES8_d",
"c++": "INIReader::GetReal(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, double) const",
"go": "(*Reader).GetReal"
}, {
"mangle": "_ZNK9INIReader8HasValueERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEES8_",
"c++": "INIReader::HasValue(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) const",
"go": "(*Reader).HasValue"
}, {
"mangle": "_ZNK9INIReader9GetStringERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEES8_S8_",
"c++": "INIReader::GetString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) const",
"go": "(*Reader).GetString"
}]
Loading
Loading