diff --git a/.gitignore b/.gitignore index 2d83890..81c02ce 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,7 @@ examples/foundation/foundation examples/foundation/ns examples/simple/simple examples/simple/ClassOne +examples/memory/memory +examples/memory/ns +examples/gc/gc +examples/gc/ns diff --git a/ast/aligned_attr_test.go b/ast/aligned_attr_test.go index f610337..44bb88a 100644 --- a/ast/aligned_attr_test.go +++ b/ast/aligned_attr_test.go @@ -6,23 +6,22 @@ import ( func TestAlignedAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7f8a1d8ccfd0 aligned`: - testNode{&AlignedAttr{ + `0x7f8a1d8ccfd0 aligned`: testNode{&AlignedAttr{ Addr: 0x7f8a1d8ccfd0, Pos: NewPositionFromString("col:47, col:57"), IsAligned: true, ChildNodes: []Node{}, - }, + }, 0x7f8a1d8ccfd0, NewPositionFromString("col:47, col:57"), []Node{}, }, - `0x2c8ba10 `: testNode{ &AlignedAttr{ + `0x2c8ba10 `: testNode{&AlignedAttr{ Addr: 0x2c8ba10, Pos: NewPositionFromString("col:42"), IsAligned: false, ChildNodes: []Node{}, - }, + }, 0x2c8ba10, NewPositionFromString("col:42"), []Node{}, @@ -31,4 +30,3 @@ func TestAlignedAttr(t *testing.T) { runNodeTests(t, nodes) } - diff --git a/ast/alloc_size_attr.go b/ast/alloc_size_attr.go index 2e053db..64f833e 100644 --- a/ast/alloc_size_attr.go +++ b/ast/alloc_size_attr.go @@ -2,7 +2,6 @@ package ast import ( "strings" - //"git.wow.st/gmp/nswrap/util" ) diff --git a/ast/alloc_size_attr_test.go b/ast/alloc_size_attr_test.go index 1ec155d..8140e9d 100644 --- a/ast/alloc_size_attr_test.go +++ b/ast/alloc_size_attr_test.go @@ -6,20 +6,18 @@ import ( func TestAllocSizeAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7f8e390a5d38 1 2`: - testNode{&AllocSizeAttr{ + `0x7f8e390a5d38 1 2`: testNode{&AllocSizeAttr{ Addr: 0x7f8e390a5d38, Pos: NewPositionFromString("col:100, col:114"), A: "1", B: "2", ChildNodes: []Node{}, }, - 0x7f8e390a5d38, - NewPositionFromString("col:100, col:114"), - []Node{}, + 0x7f8e390a5d38, + NewPositionFromString("col:100, col:114"), + []Node{}, }, - `0x7fbd1a167f48 Inherited 1 0`: - testNode{&AllocSizeAttr{ + `0x7fbd1a167f48 Inherited 1 0`: testNode{&AllocSizeAttr{ Addr: 0x7fbd1a167f48, Pos: NewPositionFromString("/usr/include/stdlib.h:342:37"), Inherited: true, @@ -27,12 +25,11 @@ func TestAllocSizeAttr(t *testing.T) { B: "0", ChildNodes: []Node{}, }, - 0x7fbd1a167f48, - NewPositionFromString("/usr/include/stdlib.h:342:37"), - []Node{}, + 0x7fbd1a167f48, + NewPositionFromString("/usr/include/stdlib.h:342:37"), + []Node{}, }, - `0x7fbd1a167f48 Inherited 1`: - testNode{&AllocSizeAttr{ + `0x7fbd1a167f48 Inherited 1`: testNode{&AllocSizeAttr{ Addr: 0x7fbd1a167f48, Pos: NewPositionFromString("/usr/include/stdlib.h:342:37"), Inherited: true, @@ -40,9 +37,9 @@ func TestAllocSizeAttr(t *testing.T) { B: "", ChildNodes: []Node{}, }, - 0x7fbd1a167f48, - NewPositionFromString("/usr/include/stdlib.h:342:37"), - []Node{}, + 0x7fbd1a167f48, + NewPositionFromString("/usr/include/stdlib.h:342:37"), + []Node{}, }, } diff --git a/ast/always_inline_attr_test.go b/ast/always_inline_attr_test.go index 325b073..4ddbcb4 100644 --- a/ast/always_inline_attr_test.go +++ b/ast/always_inline_attr_test.go @@ -6,15 +6,14 @@ import ( func TestAlwaysInlineAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fce780f5018 always_inline`: - testNode{&AlwaysInlineAttr{ + `0x7fce780f5018 always_inline`: testNode{&AlwaysInlineAttr{ Addr: 0x7fce780f5018, Pos: NewPositionFromString("/usr/include/sys/cdefs.h:313:68"), ChildNodes: []Node{}, }, - 0x7fce780f5018, - NewPositionFromString("/usr/include/sys/cdefs.h:313:68"), - []Node{}, + 0x7fce780f5018, + NewPositionFromString("/usr/include/sys/cdefs.h:313:68"), + []Node{}, }, } diff --git a/ast/arc_weakref_unavailable_attr.go b/ast/arc_weakref_unavailable_attr.go index b55c88d..1ae5b72 100644 --- a/ast/arc_weakref_unavailable_attr.go +++ b/ast/arc_weakref_unavailable_attr.go @@ -12,9 +12,9 @@ func parseArcWeakrefUnavailableAttr(line string) Node { "<(?P.*)>", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &ArcWeakrefUnavailableAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/arc_weakref_unavailable_attr_test.go b/ast/arc_weakref_unavailable_attr_test.go index dc91b36..27e20ae 100644 --- a/ast/arc_weakref_unavailable_attr_test.go +++ b/ast/arc_weakref_unavailable_attr_test.go @@ -6,15 +6,14 @@ import ( func TestArcWeakrefUnavailableAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 `: - testNode{&ArcWeakrefUnavailableAttr{ + `0x7fc0a69091d1 `: testNode{&ArcWeakrefUnavailableAttr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/array_filler_test.go b/ast/array_filler_test.go index f8639b1..6be8804 100644 --- a/ast/array_filler_test.go +++ b/ast/array_filler_test.go @@ -7,7 +7,7 @@ import ( func TestArrayFiller(t *testing.T) { i := 0 runNodeTest(t, Parse(`array filler`), - testNode{ &ArrayFiller{ ChildNodes: []Node{} }, - 0,NewPositionFromString(""),[]Node{}}, + testNode{&ArrayFiller{ChildNodes: []Node{}}, + 0, NewPositionFromString(""), []Node{}}, &i) } diff --git a/ast/array_subscript_expr.go b/ast/array_subscript_expr.go index 47bf07d..d44b011 100644 --- a/ast/array_subscript_expr.go +++ b/ast/array_subscript_expr.go @@ -2,13 +2,13 @@ package ast // ArraySubscriptExpr is expression. type ArraySubscriptExpr struct { - Addr Address - Pos Position - Type string - Type2 string - IsLvalue bool + Addr Address + Pos Position + Type string + Type2 string + IsLvalue bool IsVectorComponent bool - ChildNodes []Node + ChildNodes []Node } func parseArraySubscriptExpr(line string) Node { @@ -23,13 +23,13 @@ func parseArraySubscriptExpr(line string) Node { } return &ArraySubscriptExpr{ - Addr: ParseAddress(groups["address"]), - Pos: NewPositionFromString(groups["position"]), - Type: groups["type"], - Type2: groups["type2"], - IsLvalue: len(groups["lvalue"]) > 0, + Addr: ParseAddress(groups["address"]), + Pos: NewPositionFromString(groups["position"]), + Type: groups["type"], + Type2: groups["type2"], + IsLvalue: len(groups["lvalue"]) > 0, IsVectorComponent: len(groups["vcomp"]) > 0, - ChildNodes: []Node{}, + ChildNodes: []Node{}, } } diff --git a/ast/array_subscript_expr_test.go b/ast/array_subscript_expr_test.go index b29f733..46d8a22 100644 --- a/ast/array_subscript_expr_test.go +++ b/ast/array_subscript_expr_test.go @@ -6,8 +6,7 @@ import ( func TestArraySubscriptExpr(t *testing.T) { nodes := map[string]testNode{ - `0x7fe35b85d180 'char *' lvalue`: - testNode{&ArraySubscriptExpr{ + `0x7fe35b85d180 'char *' lvalue`: testNode{&ArraySubscriptExpr{ Addr: 0x7fe35b85d180, Pos: NewPositionFromString("col:63, col:69"), Type: "char *", @@ -15,12 +14,11 @@ func TestArraySubscriptExpr(t *testing.T) { IsLvalue: true, ChildNodes: []Node{}, }, - 0x7fe35b85d180, - NewPositionFromString("col:63, col:69"), - []Node{}, + 0x7fe35b85d180, + NewPositionFromString("col:63, col:69"), + []Node{}, }, - `0x2416660 'u32':'unsigned int' lvalue`: - testNode{&ArraySubscriptExpr{ + `0x2416660 'u32':'unsigned int' lvalue`: testNode{&ArraySubscriptExpr{ Addr: 0x2416660, Pos: NewPositionFromString("col:2, col:5"), Type: "u32", @@ -28,12 +26,11 @@ func TestArraySubscriptExpr(t *testing.T) { IsLvalue: true, ChildNodes: []Node{}, }, - 0x2416660, - NewPositionFromString("col:2, col:5"), - []Node{}, + 0x2416660, + NewPositionFromString("col:2, col:5"), + []Node{}, }, - `0x3f147c0 'extCoord':'extCoord' lvalue`: - testNode{&ArraySubscriptExpr{ + `0x3f147c0 'extCoord':'extCoord' lvalue`: testNode{&ArraySubscriptExpr{ Addr: 0x3f147c0, Pos: NewPositionFromString("col:39, col:55"), Type: "extCoord", @@ -41,9 +38,9 @@ func TestArraySubscriptExpr(t *testing.T) { IsLvalue: true, ChildNodes: []Node{}, }, - 0x3f147c0, - NewPositionFromString("col:39, col:55"), - []Node{}, + 0x3f147c0, + NewPositionFromString("col:39, col:55"), + []Node{}, }, } diff --git a/ast/asm_label_attr_test.go b/ast/asm_label_attr_test.go index 40a0fe9..306779f 100644 --- a/ast/asm_label_attr_test.go +++ b/ast/asm_label_attr_test.go @@ -6,29 +6,27 @@ import ( func TestAsmLabelAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7ff26d8224e8 "_fopen"`: - testNode{&AsmLabelAttr{ + `0x7ff26d8224e8 "_fopen"`: testNode{&AsmLabelAttr{ Addr: 0x7ff26d8224e8, Pos: NewPositionFromString("/usr/include/sys/cdefs.h:569:36"), Inherited: false, FunctionName: "_fopen", ChildNodes: []Node{}, }, - 0x7ff26d8224e8, - NewPositionFromString("/usr/include/sys/cdefs.h:569:36"), - []Node{}, + 0x7ff26d8224e8, + NewPositionFromString("/usr/include/sys/cdefs.h:569:36"), + []Node{}, }, - `0x7fd55a169318 Inherited "_popen"`: - testNode{&AsmLabelAttr{ + `0x7fd55a169318 Inherited "_popen"`: testNode{&AsmLabelAttr{ Addr: 0x7fd55a169318, Pos: NewPositionFromString("/usr/include/stdio.h:325:47"), Inherited: true, FunctionName: "_popen", ChildNodes: []Node{}, }, - 0x7fd55a169318, - NewPositionFromString("/usr/include/stdio.h:325:47"), - []Node{}, + 0x7fd55a169318, + NewPositionFromString("/usr/include/stdio.h:325:47"), + []Node{}, }, } diff --git a/ast/ast.go b/ast/ast.go index a9b7f4e..7922ddb 100644 --- a/ast/ast.go +++ b/ast/ast.go @@ -11,7 +11,7 @@ import ( var ( TrackPositions bool = false - Debug = false + Debug = false ) // Node represents any node in the AST. @@ -252,9 +252,9 @@ func Parse(fullline string) Node { case "ObjCIndependentClassAttr": return parseObjCIndependentClassAttr(line) case "ObjCInterface": - return parseObjCInterface(line,false) + return parseObjCInterface(line, false) case "super ObjCInterface": - return parseObjCInterface(line,true) + return parseObjCInterface(line, true) case "ObjCInterfaceDecl": return parseObjCInterfaceDecl(line) case "ObjCInterfaceType": @@ -394,7 +394,7 @@ func Parse(fullline string) Node { case "NullStmt": return nil default: - return parseUnknown(nodeName,line) + return parseUnknown(nodeName, line) } } diff --git a/ast/ast_test.go b/ast/ast_test.go index 0b23f53..112cd2a 100644 --- a/ast/ast_test.go +++ b/ast/ast_test.go @@ -10,9 +10,9 @@ import ( ) type testNode struct { - n Node - addr Address - pos Position + n Node + addr Address + pos Position children []Node } @@ -30,24 +30,24 @@ func formatMultiLine(o interface{}) string { func runNodeTest(t *testing.T, actual Node, expected testNode, i *int) { testName := fmt.Sprintf("Example%d", *i) - t.Run(testName + "a", func(t *testing.T) { + t.Run(testName+"a", func(t *testing.T) { if !reflect.DeepEqual(expected.n, actual) { t.Errorf("%s", util.ShowDiff(formatMultiLine(expected.n), formatMultiLine(actual))) } }) t.Run(testName+"b", func(t *testing.T) { - if !reflect.DeepEqual(actual.Address(),expected.addr) { + if !reflect.DeepEqual(actual.Address(), expected.addr) { t.Errorf("Address mismatch") } }) t.Run(testName+"c", func(t *testing.T) { - if !reflect.DeepEqual(actual.Position(),expected.pos) { + if !reflect.DeepEqual(actual.Position(), expected.pos) { t.Errorf("Position mismatch") } }) t.Run(testName+"d", func(t *testing.T) { - if !reflect.DeepEqual(actual.Children(),expected.children) { + if !reflect.DeepEqual(actual.Children(), expected.children) { t.Errorf("Children mismatch") } }) @@ -55,8 +55,8 @@ func runNodeTest(t *testing.T, actual Node, expected testNode, i *int) { cs := expected.children node := &Unknown{} actual.AddChild(node) - cs = append(cs,node) - if !reflect.DeepEqual(actual.Children(),cs) { + cs = append(cs, node) + if !reflect.DeepEqual(actual.Children(), cs) { t.Errorf("Children mismatch") } }) @@ -71,7 +71,7 @@ func runNodeTests(t *testing.T, tests map[string]testNode) { name := reflect.TypeOf(expected.n).Elem().Name() actual := Parse(name + " " + line) - runNodeTest(t,actual,expected,&i) + runNodeTest(t, actual, expected, &i) } } @@ -96,7 +96,7 @@ func TestPrint(t *testing.T) { } var lines = []string{ -// c2go ast sqlite3.c | head -5000 | sed 's/^[ |`-]*//' | sed 's/<<>>/NullStmt/g' | gawk 'length > 0 {print "`" $0 "`,"}' + // c2go ast sqlite3.c | head -5000 | sed 's/^[ |`-]*//' | sed 's/<<>>/NullStmt/g' | gawk 'length > 0 {print "`" $0 "`,"}' } func BenchmarkParse(b *testing.B) { @@ -106,4 +106,3 @@ func BenchmarkParse(b *testing.B) { } } } - diff --git a/ast/attributed_type.go b/ast/attributed_type.go index abb3f7a..50c01fe 100644 --- a/ast/attributed_type.go +++ b/ast/attributed_type.go @@ -21,7 +21,7 @@ func parseAttributedType(line string) Node { return &AttributedType{ Addr: ParseAddress(groups["address"]), Type: groups["type"], - Sugar: len(groups["sugar"])>0, + Sugar: len(groups["sugar"]) > 0, ChildNodes: []Node{}, } } diff --git a/ast/attributed_type_test.go b/ast/attributed_type_test.go index 510a58a..a8ee656 100644 --- a/ast/attributed_type_test.go +++ b/ast/attributed_type_test.go @@ -6,82 +6,75 @@ import ( func TestAttributedType(t *testing.T) { nodes := map[string]testNode{ - `0x10c0d6770 'CVDisplayLinkRef _Nonnull' sugar`: - testNode{&AttributedType{ + `0x10c0d6770 'CVDisplayLinkRef _Nonnull' sugar`: testNode{&AttributedType{ Addr: 0x10c0d6770, Type: `CVDisplayLinkRef _Nonnull`, Sugar: true, ChildNodes: []Node{}, }, - 0x10c0d6770, - NewPositionFromString(""), - []Node{}, + 0x10c0d6770, + NewPositionFromString(""), + []Node{}, }, - `0x10c0d68b0 'const CVTimeStamp * _Nonnull' sugar`: - testNode{&AttributedType{ + `0x10c0d68b0 'const CVTimeStamp * _Nonnull' sugar`: testNode{&AttributedType{ Addr: 0x10c0d68b0, Type: `const CVTimeStamp * _Nonnull`, Sugar: true, ChildNodes: []Node{}, }, - 0x10c0d68b0, - NewPositionFromString(""), - []Node{}, + 0x10c0d68b0, + NewPositionFromString(""), + []Node{}, }, - `0x10c0d6ab0 'CVOptionFlags * _Nonnull' sugar`: - testNode{&AttributedType{ + `0x10c0d6ab0 'CVOptionFlags * _Nonnull' sugar`: testNode{&AttributedType{ Addr: 0x10c0d6ab0, Type: `CVOptionFlags * _Nonnull`, Sugar: true, ChildNodes: []Node{}, }, - 0x10c0d6ab0, - NewPositionFromString(""), - []Node{}, + 0x10c0d6ab0, + NewPositionFromString(""), + []Node{}, }, - `0x10c0fc7d0 'CVPixelBufferRef _Nonnull' sugar`: - testNode{&AttributedType{ + `0x10c0fc7d0 'CVPixelBufferRef _Nonnull' sugar`: testNode{&AttributedType{ Addr: 0x10c0fc7d0, Type: `CVPixelBufferRef _Nonnull`, Sugar: true, ChildNodes: []Node{}, }, - 0x10c0fc7d0, - NewPositionFromString(""), - []Node{}, + 0x10c0fc7d0, + NewPositionFromString(""), + []Node{}, }, - `0x7faa1906d680 'NSError * _Nullable' sugar`: - testNode{&AttributedType{ + `0x7faa1906d680 'NSError * _Nullable' sugar`: testNode{&AttributedType{ Addr: 0x7faa1906d680, Type: `NSError * _Nullable`, Sugar: true, ChildNodes: []Node{}, }, - 0x7faa1906d680, - NewPositionFromString(""), - []Node{}, + 0x7faa1906d680, + NewPositionFromString(""), + []Node{}, }, - `0x7faa19085760 'id _Nullable' sugar`: - testNode{&AttributedType{ + `0x7faa19085760 'id _Nullable' sugar`: testNode{&AttributedType{ Addr: 0x7faa19085760, Type: `id _Nullable`, Sugar: true, ChildNodes: []Node{}, }, - 0x7faa19085760, - NewPositionFromString(""), - []Node{}, + 0x7faa19085760, + NewPositionFromString(""), + []Node{}, }, - `0x7faa19085840 'NSError * _Null_unspecified' sugar`: - testNode{&AttributedType{ + `0x7faa19085840 'NSError * _Null_unspecified' sugar`: testNode{&AttributedType{ Addr: 0x7faa19085840, Type: `NSError * _Null_unspecified`, Sugar: true, ChildNodes: []Node{}, }, - 0x7faa19085840, - NewPositionFromString(""), - []Node{}, + 0x7faa19085840, + NewPositionFromString(""), + []Node{}, }, } diff --git a/ast/availability_attr_test.go b/ast/availability_attr_test.go index e85e285..70a2940 100644 --- a/ast/availability_attr_test.go +++ b/ast/availability_attr_test.go @@ -6,8 +6,7 @@ import ( func TestAvailabilityAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc5ff8e5d18 macos 10.10 0 0 "" ""`: - testNode{&AvailabilityAttr{ + `0x7fc5ff8e5d18 macos 10.10 0 0 "" ""`: testNode{&AvailabilityAttr{ Addr: 0x7fc5ff8e5d18, Pos: NewPositionFromString("/usr/include/AvailabilityInternal.h:21697:88, col:124"), OS: "macos", @@ -20,12 +19,11 @@ func TestAvailabilityAttr(t *testing.T) { IsInherited: false, ChildNodes: []Node{}, }, - 0x7fc5ff8e5d18, - NewPositionFromString("/usr/include/AvailabilityInternal.h:21697:88, col:124"), - []Node{}, + 0x7fc5ff8e5d18, + NewPositionFromString("/usr/include/AvailabilityInternal.h:21697:88, col:124"), + []Node{}, }, - `0x7fc5ff8e60d0 watchos 3.0 0 0 "" ""`: - testNode{&AvailabilityAttr{ + `0x7fc5ff8e60d0 watchos 3.0 0 0 "" ""`: testNode{&AvailabilityAttr{ Addr: 0x7fc5ff8e60d0, Pos: NewPositionFromString("/usr/include/Availability.h:215:81, col:115"), OS: "watchos", @@ -38,12 +36,11 @@ func TestAvailabilityAttr(t *testing.T) { IsInherited: false, ChildNodes: []Node{}, }, - 0x7fc5ff8e60d0, - NewPositionFromString("/usr/include/Availability.h:215:81, col:115"), - []Node{}, + 0x7fc5ff8e60d0, + NewPositionFromString("/usr/include/Availability.h:215:81, col:115"), + []Node{}, }, - `0x7fc5ff8e6170 tvos 10.0 0 0 "" ""`: - testNode{&AvailabilityAttr{ + `0x7fc5ff8e6170 tvos 10.0 0 0 "" ""`: testNode{&AvailabilityAttr{ Addr: 0x7fc5ff8e6170, Pos: NewPositionFromString("col:81, col:115"), OS: "tvos", @@ -56,12 +53,11 @@ func TestAvailabilityAttr(t *testing.T) { IsInherited: false, ChildNodes: []Node{}, }, - 0x7fc5ff8e6170, - NewPositionFromString("col:81, col:115"), - []Node{}, + 0x7fc5ff8e6170, + NewPositionFromString("col:81, col:115"), + []Node{}, }, - `0x7fc5ff8e61d8 ios 10.0 0 0 "" ""`: - testNode{&AvailabilityAttr{ + `0x7fc5ff8e61d8 ios 10.0 0 0 "" ""`: testNode{&AvailabilityAttr{ Addr: 0x7fc5ff8e61d8, Pos: NewPositionFromString("col:81, col:115"), OS: "ios", @@ -74,12 +70,11 @@ func TestAvailabilityAttr(t *testing.T) { IsInherited: false, ChildNodes: []Node{}, }, - 0x7fc5ff8e61d8, - NewPositionFromString("col:81, col:115"), - []Node{}, + 0x7fc5ff8e61d8, + NewPositionFromString("col:81, col:115"), + []Node{}, }, - `0x7fc5ff8f0e18 swift 0 0 0 Unavailable "Use snprintf instead." ""`: - testNode{&AvailabilityAttr{ + `0x7fc5ff8f0e18 swift 0 0 0 Unavailable "Use snprintf instead." ""`: testNode{&AvailabilityAttr{ Addr: 0x7fc5ff8f0e18, Pos: NewPositionFromString("/usr/include/sys/cdefs.h:275:50, col:99"), OS: "swift", @@ -92,12 +87,11 @@ func TestAvailabilityAttr(t *testing.T) { IsInherited: false, ChildNodes: []Node{}, }, - 0x7fc5ff8f0e18, - NewPositionFromString("/usr/include/sys/cdefs.h:275:50, col:99"), - []Node{}, + 0x7fc5ff8f0e18, + NewPositionFromString("/usr/include/sys/cdefs.h:275:50, col:99"), + []Node{}, }, - `0x7fc5ff8f1988 swift 0 0 0 Unavailable "Use mkstemp(3) instead." ""`: - testNode{&AvailabilityAttr{ + `0x7fc5ff8f1988 swift 0 0 0 Unavailable "Use mkstemp(3) instead." ""`: testNode{&AvailabilityAttr{ Addr: 0x7fc5ff8f1988, Pos: NewPositionFromString("line:275:50, col:99"), OS: "swift", @@ -110,12 +104,11 @@ func TestAvailabilityAttr(t *testing.T) { IsInherited: false, ChildNodes: []Node{}, }, - 0x7fc5ff8f1988, - NewPositionFromString("line:275:50, col:99"), - []Node{}, + 0x7fc5ff8f1988, + NewPositionFromString("line:275:50, col:99"), + []Node{}, }, - `0x104035438 macosx 10.10 0 0 ""`: - testNode{&AvailabilityAttr{ + `0x104035438 macosx 10.10 0 0 ""`: testNode{&AvailabilityAttr{ Addr: 0x104035438, Pos: NewPositionFromString("/usr/include/AvailabilityInternal.h:14571:88, col:124"), OS: "macosx", @@ -128,12 +121,11 @@ func TestAvailabilityAttr(t *testing.T) { IsInherited: false, ChildNodes: []Node{}, }, - 0x104035438, - NewPositionFromString("/usr/include/AvailabilityInternal.h:14571:88, col:124"), - []Node{}, + 0x104035438, + NewPositionFromString("/usr/include/AvailabilityInternal.h:14571:88, col:124"), + []Node{}, }, - `0x7f9bd588b1a8 Inherited macos 10.5 0 0 "" ""`: - testNode{&AvailabilityAttr{ + `0x7f9bd588b1a8 Inherited macos 10.5 0 0 "" ""`: testNode{&AvailabilityAttr{ Addr: 0x7f9bd588b1a8, Pos: NewPositionFromString("/usr/include/gethostuuid.h:39:65, col:100"), OS: "macos", @@ -146,9 +138,9 @@ func TestAvailabilityAttr(t *testing.T) { IsInherited: true, ChildNodes: []Node{}, }, - 0x7f9bd588b1a8, - NewPositionFromString("/usr/include/gethostuuid.h:39:65, col:100"), - []Node{}, + 0x7f9bd588b1a8, + NewPositionFromString("/usr/include/gethostuuid.h:39:65, col:100"), + []Node{}, }, } diff --git a/ast/binary_operator.go b/ast/binary_operator.go index 2cd938d..1ee80a0 100644 --- a/ast/binary_operator.go +++ b/ast/binary_operator.go @@ -20,9 +20,9 @@ func parseBinaryOperator(line string) Node { } return &BinaryOperator{ - Addr: ParseAddress(groups["address"]), - Pos: NewPositionFromString(groups["position"]), - Type: groups["type1"], + Addr: ParseAddress(groups["address"]), + Pos: NewPositionFromString(groups["position"]), + Type: groups["type1"], //Type2: groups["type2"], Operator: groups["operator"], ChildNodes: []Node{}, diff --git a/ast/binary_operator_test.go b/ast/binary_operator_test.go index d62fc6f..2f49a6f 100644 --- a/ast/binary_operator_test.go +++ b/ast/binary_operator_test.go @@ -6,20 +6,18 @@ import ( func TestBinaryOperator(t *testing.T) { nodes := map[string]testNode{ - `0x7fca2d8070e0 'unsigned char' '='`: - testNode{&BinaryOperator{ + `0x7fca2d8070e0 'unsigned char' '='`: testNode{&BinaryOperator{ Addr: 0x7fca2d8070e0, Pos: NewPositionFromString("col:11, col:23"), Type: "unsigned char", Operator: "=", ChildNodes: []Node{}, }, - 0x7fca2d8070e0, - NewPositionFromString("col:11, col:23"), - []Node{}, + 0x7fca2d8070e0, + NewPositionFromString("col:11, col:23"), + []Node{}, }, - `0x1ff95b8 'T_ENUM':'T_ENUM' '='`: - testNode{&BinaryOperator{ + `0x1ff95b8 'T_ENUM':'T_ENUM' '='`: testNode{&BinaryOperator{ Addr: 0x1ff95b8, Pos: NewPositionFromString("line:78:2, col:7"), Type: "T_ENUM", @@ -27,9 +25,9 @@ func TestBinaryOperator(t *testing.T) { Operator: "=", ChildNodes: []Node{}, }, - 0x1ff95b8, - NewPositionFromString("line:78:2, col:7"), - []Node{}, + 0x1ff95b8, + NewPositionFromString("line:78:2, col:7"), + []Node{}, }, } diff --git a/ast/block_command_comment_test.go b/ast/block_command_comment_test.go index d172df1..db68546 100644 --- a/ast/block_command_comment_test.go +++ b/ast/block_command_comment_test.go @@ -6,16 +6,15 @@ import ( func TestBlockCommandComment(t *testing.T) { nodes := map[string]testNode{ - `0x1069fae60 Name="abstract"`: - testNode{&BlockCommandComment{ + `0x1069fae60 Name="abstract"`: testNode{&BlockCommandComment{ Addr: 0x1069fae60, Pos: NewPositionFromString("col:4, line:163:57"), Name: "abstract", ChildNodes: []Node{}, }, - 0x1069fae60, - NewPositionFromString("col:4, line:163:57"), - []Node{}, + 0x1069fae60, + NewPositionFromString("col:4, line:163:57"), + []Node{}, }, } diff --git a/ast/block_pointer_type_test.go b/ast/block_pointer_type_test.go index 98605ec..630b899 100644 --- a/ast/block_pointer_type_test.go +++ b/ast/block_pointer_type_test.go @@ -6,25 +6,23 @@ import ( func TestBlockPointerType(t *testing.T) { nodes := map[string]testNode{ - `0x7fa3b88bbb30 'void (^)(void)'`: - testNode{&BlockPointerType{ + `0x7fa3b88bbb30 'void (^)(void)'`: testNode{&BlockPointerType{ Addr: 0x7fa3b88bbb30, Type: `void (^)(void)`, ChildNodes: []Node{}, }, - 0x7fa3b88bbb30, - NewPositionFromString(""), - []Node{}, + 0x7fa3b88bbb30, + NewPositionFromString(""), + []Node{}, }, - `0x7fa3b88bbb30 'NSComparisonResult (^)(id _Nonnull, id _Nonnull)'`: - testNode{&BlockPointerType{ + `0x7fa3b88bbb30 'NSComparisonResult (^)(id _Nonnull, id _Nonnull)'`: testNode{&BlockPointerType{ Addr: 0x7fa3b88bbb30, Type: `NSComparisonResult (^)(id _Nonnull, id _Nonnull)`, ChildNodes: []Node{}, }, - 0x7fa3b88bbb30, - NewPositionFromString(""), - []Node{}, + 0x7fa3b88bbb30, + NewPositionFromString(""), + []Node{}, }, } diff --git a/ast/break_stmt_test.go b/ast/break_stmt_test.go index a4136fd..bfcf0e4 100644 --- a/ast/break_stmt_test.go +++ b/ast/break_stmt_test.go @@ -6,15 +6,14 @@ import ( func TestBreakStmt(t *testing.T) { nodes := map[string]testNode{ - `0x7fca2d8070e0 `: - testNode{&BreakStmt{ + `0x7fca2d8070e0 `: testNode{&BreakStmt{ Addr: 0x7fca2d8070e0, Pos: NewPositionFromString("col:11, col:23"), ChildNodes: []Node{}, }, - 0x7fca2d8070e0, - NewPositionFromString("col:11, col:23"), - []Node{}, + 0x7fca2d8070e0, + NewPositionFromString("col:11, col:23"), + []Node{}, }, } diff --git a/ast/builtin_type_test.go b/ast/builtin_type_test.go index 865c059..3edf747 100644 --- a/ast/builtin_type_test.go +++ b/ast/builtin_type_test.go @@ -6,25 +6,23 @@ import ( func TestBuiltinType(t *testing.T) { nodes := map[string]testNode{ - `0x7f8a43023f40 '__int128'`: - testNode{&BuiltinType{ + `0x7f8a43023f40 '__int128'`: testNode{&BuiltinType{ Addr: 0x7f8a43023f40, Type: "__int128", ChildNodes: []Node{}, }, - 0x7f8a43023f40, - NewPositionFromString(""), - []Node{}, + 0x7f8a43023f40, + NewPositionFromString(""), + []Node{}, }, - `0x7f8a43023ea0 'unsigned long long'`: - testNode{&BuiltinType{ + `0x7f8a43023ea0 'unsigned long long'`: testNode{&BuiltinType{ Addr: 0x7f8a43023ea0, Type: "unsigned long long", ChildNodes: []Node{}, }, - 0x7f8a43023ea0, - NewPositionFromString(""), - []Node{}, + 0x7f8a43023ea0, + NewPositionFromString(""), + []Node{}, }, } diff --git a/ast/c_style_cast_expr.go b/ast/c_style_cast_expr.go index d828e0e..dd78988 100644 --- a/ast/c_style_cast_expr.go +++ b/ast/c_style_cast_expr.go @@ -26,9 +26,9 @@ func parseCStyleCastExpr(line string) Node { } return &CStyleCastExpr{ - Addr: ParseAddress(groups["address"]), - Pos: NewPositionFromString(groups["position"]), - Type: groups["type1"], + Addr: ParseAddress(groups["address"]), + Pos: NewPositionFromString(groups["position"]), + Type: groups["type1"], //Type2: groups["type2"], Kind: groups["kind"], ChildNodes: []Node{}, diff --git a/ast/c_style_cast_expr_test.go b/ast/c_style_cast_expr_test.go index 3c35c73..f51986e 100644 --- a/ast/c_style_cast_expr_test.go +++ b/ast/c_style_cast_expr_test.go @@ -6,20 +6,18 @@ import ( func TestCStyleCastExpr(t *testing.T) { nodes := map[string]testNode{ - `0x7fddc18fb2e0 'char' `: - testNode{&CStyleCastExpr{ + `0x7fddc18fb2e0 'char' `: testNode{&CStyleCastExpr{ Addr: 0x7fddc18fb2e0, Pos: NewPositionFromString("col:50, col:56"), Type: "char", Kind: "IntegralCast", ChildNodes: []Node{}, }, - 0x7fddc18fb2e0, - NewPositionFromString("col:50, col:56"), - []Node{}, + 0x7fddc18fb2e0, + NewPositionFromString("col:50, col:56"), + []Node{}, }, - `0x2781518 'T_ENUM':'T_ENUM' `: - testNode{&CStyleCastExpr{ + `0x2781518 'T_ENUM':'T_ENUM' `: testNode{&CStyleCastExpr{ Addr: 0x2781518, Pos: NewPositionFromString("col:7, col:17"), Type: "T_ENUM", @@ -27,9 +25,9 @@ func TestCStyleCastExpr(t *testing.T) { Kind: "IntegralCast", ChildNodes: []Node{}, }, - 0x2781518, - NewPositionFromString("col:7, col:17"), - []Node{}, + 0x2781518, + NewPositionFromString("col:7, col:17"), + []Node{}, }, } diff --git a/ast/call_expr_test.go b/ast/call_expr_test.go index 58acbc0..04171ac 100644 --- a/ast/call_expr_test.go +++ b/ast/call_expr_test.go @@ -6,27 +6,25 @@ import ( func TestCallExpr(t *testing.T) { nodes := map[string]testNode{ - `0x7f9bf3033240 'int'`: - testNode{&CallExpr{ + `0x7f9bf3033240 'int'`: testNode{&CallExpr{ Addr: 0x7f9bf3033240, Pos: NewPositionFromString("col:11, col:25"), Type: "int", ChildNodes: []Node{}, }, - 0x7f9bf3033240, - NewPositionFromString("col:11, col:25"), - []Node{}, + 0x7f9bf3033240, + NewPositionFromString("col:11, col:25"), + []Node{}, }, - `0x7f9bf3035c20 'int'`: - testNode{&CallExpr{ + `0x7f9bf3035c20 'int'`: testNode{&CallExpr{ Addr: 0x7f9bf3035c20, Pos: NewPositionFromString("line:7:4, col:64"), Type: "int", ChildNodes: []Node{}, }, - 0x7f9bf3035c20, - NewPositionFromString("line:7:4, col:64"), - []Node{}, + 0x7f9bf3035c20, + NewPositionFromString("line:7:4, col:64"), + []Node{}, }, } diff --git a/ast/case_stmt_test.go b/ast/case_stmt_test.go index 0668763..33a5b98 100644 --- a/ast/case_stmt_test.go +++ b/ast/case_stmt_test.go @@ -6,15 +6,14 @@ import ( func TestCaseStmt(t *testing.T) { nodes := map[string]testNode{ - `0x7fc8b5094688 `: - testNode{&CaseStmt{ + `0x7fc8b5094688 `: testNode{&CaseStmt{ Addr: 0x7fc8b5094688, Pos: NewPositionFromString("line:11:5, line:12:21"), ChildNodes: []Node{}, }, - 0x7fc8b5094688, - NewPositionFromString("line:11:5, line:12:21"), - []Node{}, + 0x7fc8b5094688, + NewPositionFromString("line:11:5, line:12:21"), + []Node{}, }, } diff --git a/ast/cf_audited_transfer_attr.go b/ast/cf_audited_transfer_attr.go index 0e0e9f8..8fb5555 100644 --- a/ast/cf_audited_transfer_attr.go +++ b/ast/cf_audited_transfer_attr.go @@ -13,9 +13,9 @@ func parseCFAuditedTransferAttr(line string) Node { "<(?P.*)>(?P.*)", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &CFAuditedTransferAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/cf_audited_transfer_attr_test.go b/ast/cf_audited_transfer_attr_test.go index ac49f1c..ca79589 100644 --- a/ast/cf_audited_transfer_attr_test.go +++ b/ast/cf_audited_transfer_attr_test.go @@ -6,16 +6,15 @@ import ( func TestCFAuditedTransferAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 content`: - testNode{&CFAuditedTransferAttr{ + `0x7fc0a69091d1 content`: testNode{&CFAuditedTransferAttr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), Content: " content", ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/cf_consumed_attr.go b/ast/cf_consumed_attr.go index b1b2fa8..c35ac7e 100644 --- a/ast/cf_consumed_attr.go +++ b/ast/cf_consumed_attr.go @@ -13,9 +13,9 @@ func parseCFConsumedAttr(line string) Node { "<(?P.*)>(?P.*)", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &CFConsumedAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/cf_consumed_attr_test.go b/ast/cf_consumed_attr_test.go index 428c16f..099cd56 100644 --- a/ast/cf_consumed_attr_test.go +++ b/ast/cf_consumed_attr_test.go @@ -6,16 +6,15 @@ import ( func TestCFConsumedAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 content`: - testNode{&CFConsumedAttr{ + `0x7fc0a69091d1 content`: testNode{&CFConsumedAttr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), Content: " content", ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/cf_returns_not_retained_attr.go b/ast/cf_returns_not_retained_attr.go index 4226aa8..95ad9ef 100644 --- a/ast/cf_returns_not_retained_attr.go +++ b/ast/cf_returns_not_retained_attr.go @@ -12,9 +12,9 @@ func parseCFReturnsNotRetainedAttr(line string) Node { "<(?P.*)>", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &CFReturnsNotRetainedAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/cf_returns_not_retained_attr_test.go b/ast/cf_returns_not_retained_attr_test.go index 575603c..0f7e0c3 100644 --- a/ast/cf_returns_not_retained_attr_test.go +++ b/ast/cf_returns_not_retained_attr_test.go @@ -6,15 +6,14 @@ import ( func TestCFReturnsNotRetainedAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 `: - testNode{&CFReturnsNotRetainedAttr{ + `0x7fc0a69091d1 `: testNode{&CFReturnsNotRetainedAttr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/cf_returns_retained_attr.go b/ast/cf_returns_retained_attr.go index 7db9e1a..7bad08f 100644 --- a/ast/cf_returns_retained_attr.go +++ b/ast/cf_returns_retained_attr.go @@ -12,9 +12,9 @@ func parseCFReturnsRetainedAttr(line string) Node { "<(?P.*)>", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &CFReturnsRetainedAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/cf_returns_retained_attr_test.go b/ast/cf_returns_retained_attr_test.go index 2763ad8..116ec98 100644 --- a/ast/cf_returns_retained_attr_test.go +++ b/ast/cf_returns_retained_attr_test.go @@ -6,15 +6,14 @@ import ( func TestCFReturnsRetainedAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 `: - testNode{&CFReturnsRetainedAttr{ + `0x7fc0a69091d1 `: testNode{&CFReturnsRetainedAttr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/character_literal_test.go b/ast/character_literal_test.go index baa4c89..97ca168 100644 --- a/ast/character_literal_test.go +++ b/ast/character_literal_test.go @@ -6,17 +6,16 @@ import ( func TestCharacterLiteral(t *testing.T) { nodes := map[string]testNode{ - `0x7f980b858308 'int' 10`: - testNode{&CharacterLiteral{ + `0x7f980b858308 'int' 10`: testNode{&CharacterLiteral{ Addr: 0x7f980b858308, Pos: NewPositionFromString("col:62"), Type: "int", Value: 10, ChildNodes: []Node{}, }, - 0x7f980b858308, - NewPositionFromString("col:62"), - []Node{}, + 0x7f980b858308, + NewPositionFromString("col:62"), + []Node{}, }, } diff --git a/ast/compound_assign_operator_test.go b/ast/compound_assign_operator_test.go index bfacc66..f6185fb 100644 --- a/ast/compound_assign_operator_test.go +++ b/ast/compound_assign_operator_test.go @@ -6,8 +6,7 @@ import ( func TestCompoundAssignOperator(t *testing.T) { nodes := map[string]testNode{ - `0x2dc5758 'int' '+=' ComputeLHSTy='int' ComputeResultTy='int'`: - testNode{&CompoundAssignOperator{ + `0x2dc5758 'int' '+=' ComputeLHSTy='int' ComputeResultTy='int'`: testNode{&CompoundAssignOperator{ Addr: 0x2dc5758, Pos: NewPositionFromString("line:5:2, col:7"), Type: "int", @@ -16,9 +15,9 @@ func TestCompoundAssignOperator(t *testing.T) { ComputationResultType: "int", ChildNodes: []Node{}, }, - 0x2dc5758, - NewPositionFromString("line:5:2, col:7"), - []Node{}, + 0x2dc5758, + NewPositionFromString("line:5:2, col:7"), + []Node{}, }, } diff --git a/ast/compound_literal_expr_test.go b/ast/compound_literal_expr_test.go index 2180cb6..89fbcf3 100644 --- a/ast/compound_literal_expr_test.go +++ b/ast/compound_literal_expr_test.go @@ -6,17 +6,16 @@ import ( func TestCompoundLiteralExpr(t *testing.T) { nodes := map[string]testNode{ - `0x5575acce81f0 'struct node':'struct node' lvalue`: - testNode{&CompoundLiteralExpr{ + `0x5575acce81f0 'struct node':'struct node' lvalue`: testNode{&CompoundLiteralExpr{ Addr: 0x5575acce81f0, Pos: NewPositionFromString("col:21, col:40"), Type1: "struct node", Type2: "struct node", ChildNodes: []Node{}, }, - 0x5575acce81f0, - NewPositionFromString("col:21, col:40"), - []Node{}, + 0x5575acce81f0, + NewPositionFromString("col:21, col:40"), + []Node{}, }, } diff --git a/ast/compound_stmt_test.go b/ast/compound_stmt_test.go index 4e9cc47..014eb09 100644 --- a/ast/compound_stmt_test.go +++ b/ast/compound_stmt_test.go @@ -6,25 +6,23 @@ import ( func TestCompoundStmt(t *testing.T) { nodes := map[string]testNode{ - `0x7fbd0f014f18 `: - testNode{&CompoundStmt{ + `0x7fbd0f014f18 `: testNode{&CompoundStmt{ Addr: 0x7fbd0f014f18, Pos: NewPositionFromString("col:54, line:358:1"), ChildNodes: []Node{}, }, - 0x7fbd0f014f18, - NewPositionFromString("col:54, line:358:1"), - []Node{}, + 0x7fbd0f014f18, + NewPositionFromString("col:54, line:358:1"), + []Node{}, }, - `0x7fbd0f8360b8 `: - testNode{&CompoundStmt{ + `0x7fbd0f8360b8 `: testNode{&CompoundStmt{ Addr: 0x7fbd0f8360b8, Pos: NewPositionFromString("line:4:1, line:13:1"), ChildNodes: []Node{}, }, - 0x7fbd0f8360b8, - NewPositionFromString("line:4:1, line:13:1"), - []Node{}, + 0x7fbd0f8360b8, + NewPositionFromString("line:4:1, line:13:1"), + []Node{}, }, } diff --git a/ast/conditional_operator_test.go b/ast/conditional_operator_test.go index 9707998..19761bd 100644 --- a/ast/conditional_operator_test.go +++ b/ast/conditional_operator_test.go @@ -6,16 +6,15 @@ import ( func TestConditionalOperator(t *testing.T) { nodes := map[string]testNode{ - `0x7fc6ae0bc678 'void'`: - testNode{&ConditionalOperator{ + `0x7fc6ae0bc678 'void'`: testNode{&ConditionalOperator{ Addr: 0x7fc6ae0bc678, Pos: NewPositionFromString("col:6, col:89"), Type: "void", ChildNodes: []Node{}, }, - 0x7fc6ae0bc678, - NewPositionFromString("col:6, col:89"), - []Node{}, + 0x7fc6ae0bc678, + NewPositionFromString("col:6, col:89"), + []Node{}, }, } diff --git a/ast/const_attr_test.go b/ast/const_attr_test.go index aff898b..098ce1f 100644 --- a/ast/const_attr_test.go +++ b/ast/const_attr_test.go @@ -6,16 +6,15 @@ import ( func TestConstAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fa3b88bbb38 foo`: - testNode{&ConstAttr{ + `0x7fa3b88bbb38 foo`: testNode{&ConstAttr{ Addr: 0x7fa3b88bbb38, Pos: NewPositionFromString("line:4:1, line:13:1"), Tags: "foo", ChildNodes: []Node{}, }, - 0x7fa3b88bbb38, - NewPositionFromString("line:4:1, line:13:1"), - []Node{}, + 0x7fa3b88bbb38, + NewPositionFromString("line:4:1, line:13:1"), + []Node{}, }, } diff --git a/ast/constant_array_type_test.go b/ast/constant_array_type_test.go index 4fa737d..cf193fe 100644 --- a/ast/constant_array_type_test.go +++ b/ast/constant_array_type_test.go @@ -6,27 +6,25 @@ import ( func TestConstantArrayType(t *testing.T) { nodes := map[string]testNode{ - `0x7f94ad016a40 'struct __va_list_tag [1]' 1 `: - testNode{&ConstantArrayType{ + `0x7f94ad016a40 'struct __va_list_tag [1]' 1 `: testNode{&ConstantArrayType{ Addr: 0x7f94ad016a40, Type: "struct __va_list_tag [1]", Size: 1, ChildNodes: []Node{}, }, - 0x7f94ad016a40, - NewPositionFromString(""), - []Node{}, + 0x7f94ad016a40, + NewPositionFromString(""), + []Node{}, }, - `0x7f8c5f059d20 'char [37]' 37 `: - testNode{&ConstantArrayType{ + `0x7f8c5f059d20 'char [37]' 37 `: testNode{&ConstantArrayType{ Addr: 0x7f8c5f059d20, Type: "char [37]", Size: 37, ChildNodes: []Node{}, }, - 0x7f8c5f059d20, - NewPositionFromString(""), - []Node{}, + 0x7f8c5f059d20, + NewPositionFromString(""), + []Node{}, }, } diff --git a/ast/continue_stmt_test.go b/ast/continue_stmt_test.go index 5a7fe3b..2fde677 100644 --- a/ast/continue_stmt_test.go +++ b/ast/continue_stmt_test.go @@ -6,15 +6,14 @@ import ( func TestContinueStmt(t *testing.T) { nodes := map[string]testNode{ - `0x1e044e0 `: - testNode{&ContinueStmt{ + `0x1e044e0 `: testNode{&ContinueStmt{ Addr: 0x1e044e0, Pos: NewPositionFromString("col:20"), ChildNodes: []Node{}, }, - 0x1e044e0, - NewPositionFromString("col:20"), - []Node{}, + 0x1e044e0, + NewPositionFromString("col:20"), + []Node{}, }, } diff --git a/ast/convert_vector_expr.go b/ast/convert_vector_expr.go index 1e92496..fddb490 100644 --- a/ast/convert_vector_expr.go +++ b/ast/convert_vector_expr.go @@ -2,11 +2,11 @@ package ast // ConvertVectorExpr type ConvertVectorExpr struct { - Addr Address - Pos Position - Type string - Type2 string - ChildNodes []Node + Addr Address + Pos Position + Type string + Type2 string + ChildNodes []Node } func parseConvertVectorExpr(line string) Node { @@ -16,16 +16,16 @@ func parseConvertVectorExpr(line string) Node { (?P:'.*?')?`, line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &ConvertVectorExpr{ - Addr: ParseAddress(groups["address"]), - Pos: NewPositionFromString(groups["position"]), - Type: removeQuotes(groups["type"]), - Type2: groups["type2"], - ChildNodes: []Node{}, + Addr: ParseAddress(groups["address"]), + Pos: NewPositionFromString(groups["position"]), + Type: removeQuotes(groups["type"]), + Type2: groups["type2"], + ChildNodes: []Node{}, } } diff --git a/ast/convert_vector_expr_test.go b/ast/convert_vector_expr_test.go index 6e12a03..9236f69 100644 --- a/ast/convert_vector_expr_test.go +++ b/ast/convert_vector_expr_test.go @@ -6,29 +6,27 @@ import ( func TestConvertVectorExpr(t *testing.T) { nodes := map[string]testNode{ - `0x7fdef0862430 `: - testNode{&ConvertVectorExpr{ - Addr: 0x7fdef0862430, - Pos: NewPositionFromString("line:120:1, col:16"), - Type: "", - Type2: "", - ChildNodes: []Node{}, + `0x7fdef0862430 `: testNode{&ConvertVectorExpr{ + Addr: 0x7fdef0862430, + Pos: NewPositionFromString("line:120:1, col:16"), + Type: "", + Type2: "", + ChildNodes: []Node{}, }, - 0x7fdef0862430, - NewPositionFromString("line:120:1, col:16"), - []Node{}, + 0x7fdef0862430, + NewPositionFromString("line:120:1, col:16"), + []Node{}, }, - `0x113368318 '__v2df':'__attribute__((__vector_size__(2 * sizeof(double)))) double'`: - testNode{&ConvertVectorExpr{ - Addr: 0x113368318, - Pos: NewPositionFromString("line:1354:20, line:1355:70"), - Type: `__v2df`, - Type2: `:'__attribute__((__vector_size__(2 * sizeof(double)))) double'`, - ChildNodes: []Node{}, + `0x113368318 '__v2df':'__attribute__((__vector_size__(2 * sizeof(double)))) double'`: testNode{&ConvertVectorExpr{ + Addr: 0x113368318, + Pos: NewPositionFromString("line:1354:20, line:1355:70"), + Type: `__v2df`, + Type2: `:'__attribute__((__vector_size__(2 * sizeof(double)))) double'`, + ChildNodes: []Node{}, }, - 0x113368318, - NewPositionFromString("line:1354:20, line:1355:70"), - []Node{}, + 0x113368318, + NewPositionFromString("line:1354:20, line:1355:70"), + []Node{}, }, } diff --git a/ast/decayed_type_test.go b/ast/decayed_type_test.go index e919acc..90b1e6b 100644 --- a/ast/decayed_type_test.go +++ b/ast/decayed_type_test.go @@ -6,15 +6,14 @@ import ( func TestDecayedType(t *testing.T) { nodes := map[string]testNode{ - `0x7f1234567890 'struct __va_list_tag *' sugar`: - testNode{&DecayedType{ + `0x7f1234567890 'struct __va_list_tag *' sugar`: testNode{&DecayedType{ Addr: 0x7f1234567890, Type: "struct __va_list_tag *", ChildNodes: []Node{}, }, - 0x7f1234567890, - NewPositionFromString(""), - []Node{}, + 0x7f1234567890, + NewPositionFromString(""), + []Node{}, }, } diff --git a/ast/decl_ref_expr_test.go b/ast/decl_ref_expr_test.go index 64a9db8..1a6f9a3 100644 --- a/ast/decl_ref_expr_test.go +++ b/ast/decl_ref_expr_test.go @@ -6,8 +6,7 @@ import ( func TestDeclRefExpr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc972064460 'FILE *' lvalue ParmVar 0x7fc9720642d0 '_p' 'FILE *'`: - testNode{&DeclRefExpr{ + `0x7fc972064460 'FILE *' lvalue ParmVar 0x7fc9720642d0 '_p' 'FILE *'`: testNode{&DeclRefExpr{ Addr: 0x7fc972064460, Pos: NewPositionFromString("col:8"), Type: "FILE *", @@ -20,12 +19,11 @@ func TestDeclRefExpr(t *testing.T) { Type3: "", ChildNodes: []Node{}, }, - 0x7fc972064460, - NewPositionFromString("col:8"), - []Node{}, + 0x7fc972064460, + NewPositionFromString("col:8"), + []Node{}, }, - `0x7fc97206a958 'int (int, FILE *)' Function 0x7fc972064198 '__swbuf' 'int (int, FILE *)'`: - testNode{&DeclRefExpr{ + `0x7fc97206a958 'int (int, FILE *)' Function 0x7fc972064198 '__swbuf' 'int (int, FILE *)'`: testNode{&DeclRefExpr{ Addr: 0x7fc97206a958, Pos: NewPositionFromString("col:11"), Type: "int (int, FILE *)", @@ -38,12 +36,11 @@ func TestDeclRefExpr(t *testing.T) { Type3: "", ChildNodes: []Node{}, }, - 0x7fc97206a958, - NewPositionFromString("col:11"), - []Node{}, + 0x7fc97206a958, + NewPositionFromString("col:11"), + []Node{}, }, - `0x7fa36680f170 'struct programming':'struct programming' lvalue Var 0x7fa36680dc20 'variable' 'struct programming':'struct programming'`: - testNode{&DeclRefExpr{ + `0x7fa36680f170 'struct programming':'struct programming' lvalue Var 0x7fa36680dc20 'variable' 'struct programming':'struct programming'`: testNode{&DeclRefExpr{ Addr: 0x7fa36680f170, Pos: NewPositionFromString("col:19"), Type: "struct programming", @@ -56,12 +53,11 @@ func TestDeclRefExpr(t *testing.T) { Type3: "struct programming", ChildNodes: []Node{}, }, - 0x7fa36680f170, - NewPositionFromString("col:19"), - []Node{}, + 0x7fa36680f170, + NewPositionFromString("col:19"), + []Node{}, }, - `0x35cb438 'int' EnumConstant 0x35ca300 'Jan' 'int'`: - testNode{&DeclRefExpr{ + `0x35cb438 'int' EnumConstant 0x35ca300 'Jan' 'int'`: testNode{&DeclRefExpr{ Addr: 0x35cb438, Pos: NewPositionFromString("col:13"), Type: "int", @@ -74,12 +70,11 @@ func TestDeclRefExpr(t *testing.T) { Type3: "", ChildNodes: []Node{}, }, - 0x35cb438, - NewPositionFromString("col:13"), - []Node{}, + 0x35cb438, + NewPositionFromString("col:13"), + []Node{}, }, - `0x1ff8770 'T_ENUM':'T_ENUM' lvalue Var 0x1ff8600 'cc' 'T_ENUM':'T_ENUM'`: - testNode{&DeclRefExpr{ + `0x1ff8770 'T_ENUM':'T_ENUM' lvalue Var 0x1ff8600 'cc' 'T_ENUM':'T_ENUM'`: testNode{&DeclRefExpr{ Addr: 0x1ff8770, Pos: NewPositionFromString("col:33"), Type: "T_ENUM", @@ -92,9 +87,9 @@ func TestDeclRefExpr(t *testing.T) { Type3: "T_ENUM", ChildNodes: []Node{}, }, - 0x1ff8770, - NewPositionFromString("col:33"), - []Node{}, + 0x1ff8770, + NewPositionFromString("col:33"), + []Node{}, }, } diff --git a/ast/decl_stmt_test.go b/ast/decl_stmt_test.go index 1f53831..3352704 100644 --- a/ast/decl_stmt_test.go +++ b/ast/decl_stmt_test.go @@ -6,15 +6,14 @@ import ( func TestDeclStmt(t *testing.T) { nodes := map[string]testNode{ - `0x7fb791846e80 `: - testNode{&DeclStmt{ + `0x7fb791846e80 `: testNode{&DeclStmt{ Addr: 0x7fb791846e80, Pos: NewPositionFromString("line:11:4, col:31"), ChildNodes: []Node{}, }, - 0x7fb791846e80, - NewPositionFromString("line:11:4, col:31"), - []Node{}, + 0x7fb791846e80, + NewPositionFromString("line:11:4, col:31"), + []Node{}, }, } diff --git a/ast/default_stmt_test.go b/ast/default_stmt_test.go index e8ff92c..2bc4bf3 100644 --- a/ast/default_stmt_test.go +++ b/ast/default_stmt_test.go @@ -6,15 +6,14 @@ import ( func TestDefaultStmt(t *testing.T) { nodes := map[string]testNode{ - `0x7f951308bfb0 `: - testNode{&DefaultStmt{ + `0x7f951308bfb0 `: testNode{&DefaultStmt{ Addr: 0x7f951308bfb0, Pos: NewPositionFromString("line:17:5, line:18:34"), ChildNodes: []Node{}, }, - 0x7f951308bfb0, - NewPositionFromString("line:17:5, line:18:34"), - []Node{}, + 0x7f951308bfb0, + NewPositionFromString("line:17:5, line:18:34"), + []Node{}, }, } diff --git a/ast/deprecated_attr_test.go b/ast/deprecated_attr_test.go index 3f90733..6b8b287 100644 --- a/ast/deprecated_attr_test.go +++ b/ast/deprecated_attr_test.go @@ -6,8 +6,7 @@ import ( func TestDeprecatedAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fec4b0ab9c0 "This function is provided for compatibility reasons only. Due to security concerns inherent in the design of tempnam(3), it is highly recommended that you use mkstemp(3) instead." ""`: - testNode{&DeprecatedAttr{ + `0x7fec4b0ab9c0 "This function is provided for compatibility reasons only. Due to security concerns inherent in the design of tempnam(3), it is highly recommended that you use mkstemp(3) instead." ""`: testNode{&DeprecatedAttr{ Addr: 0x7fec4b0ab9c0, Pos: NewPositionFromString("line:180:48, col:63"), Message1: "This function is provided for compatibility reasons only. Due to security concerns inherent in the design of tempnam(3), it is highly recommended that you use mkstemp(3) instead.", @@ -15,12 +14,11 @@ func TestDeprecatedAttr(t *testing.T) { IsInherited: false, ChildNodes: []Node{}, }, - 0x7fec4b0ab9c0, - NewPositionFromString("line:180:48, col:63"), - []Node{}, + 0x7fec4b0ab9c0, + NewPositionFromString("line:180:48, col:63"), + []Node{}, }, - `0xb75d00 "This function or variable may be unsafe. Consider using _snwprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details." ""`: - testNode{&DeprecatedAttr{ + `0xb75d00 "This function or variable may be unsafe. Consider using _snwprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details." ""`: testNode{&DeprecatedAttr{ Addr: 0xb75d00, Pos: NewPositionFromString("line:1107:12"), Message1: "This function or variable may be unsafe. Consider using _snwprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.", @@ -28,12 +26,11 @@ func TestDeprecatedAttr(t *testing.T) { IsInherited: false, ChildNodes: []Node{}, }, - 0xb75d00, - NewPositionFromString("line:1107:12"), - []Node{}, + 0xb75d00, + NewPositionFromString("line:1107:12"), + []Node{}, }, - `0xb75d00 Inherited "This function or variable may be unsafe. Consider using _snwprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details." ""`: - testNode{&DeprecatedAttr{ + `0xb75d00 Inherited "This function or variable may be unsafe. Consider using _snwprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details." ""`: testNode{&DeprecatedAttr{ Addr: 0xb75d00, Pos: NewPositionFromString("line:1107:12"), Message1: "This function or variable may be unsafe. Consider using _snwprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.", @@ -41,9 +38,9 @@ func TestDeprecatedAttr(t *testing.T) { IsInherited: true, ChildNodes: []Node{}, }, - 0xb75d00, - NewPositionFromString("line:1107:12"), - []Node{}, + 0xb75d00, + NewPositionFromString("line:1107:12"), + []Node{}, }, } diff --git a/ast/disable_tail_calls_attr_test.go b/ast/disable_tail_calls_attr_test.go index 755e20c..ead2fbb 100644 --- a/ast/disable_tail_calls_attr_test.go +++ b/ast/disable_tail_calls_attr_test.go @@ -6,15 +6,14 @@ import ( func TestDisableTailCallsAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc8fa094558 `: - testNode{&DisableTailCallsAttr{ + `0x7fc8fa094558 `: testNode{&DisableTailCallsAttr{ Addr: 0x7fc8fa094558, Pos: NewPositionFromString("col:107"), ChildNodes: []Node{}, }, - 0x7fc8fa094558, - NewPositionFromString("col:107"), - []Node{}, + 0x7fc8fa094558, + NewPositionFromString("col:107"), + []Node{}, }, } diff --git a/ast/do_stmt_test.go b/ast/do_stmt_test.go index ea25e68..9c25877 100644 --- a/ast/do_stmt_test.go +++ b/ast/do_stmt_test.go @@ -6,15 +6,14 @@ import ( func TestDoStmt(t *testing.T) { nodes := map[string]testNode{ - `0x7ff36d0a0938 `: - testNode{&DoStmt{ + `0x7ff36d0a0938 `: testNode{&DoStmt{ Addr: 0x7ff36d0a0938, Pos: NewPositionFromString("line:11:5, line:14:23"), ChildNodes: []Node{}, }, - 0x7ff36d0a0938, - NewPositionFromString("line:11:5, line:14:23"), - []Node{}, + 0x7ff36d0a0938, + NewPositionFromString("line:11:5, line:14:23"), + []Node{}, }, } diff --git a/ast/elaborated_type_test.go b/ast/elaborated_type_test.go index c786c47..4cb05f6 100644 --- a/ast/elaborated_type_test.go +++ b/ast/elaborated_type_test.go @@ -6,16 +6,15 @@ import ( func TestElaboratedType(t *testing.T) { nodes := map[string]testNode{ - `0x7f873686c120 'union __mbstate_t' sugar`: - testNode{&ElaboratedType{ + `0x7f873686c120 'union __mbstate_t' sugar`: testNode{&ElaboratedType{ Addr: 0x7f873686c120, Type: "union __mbstate_t", Tags: "sugar", ChildNodes: []Node{}, }, - 0x7f873686c120, - NewPositionFromString(""), - []Node{}, + 0x7f873686c120, + NewPositionFromString(""), + []Node{}, }, } diff --git a/ast/empty_decl_test.go b/ast/empty_decl_test.go index 30229b3..456431f 100644 --- a/ast/empty_decl_test.go +++ b/ast/empty_decl_test.go @@ -6,16 +6,15 @@ import ( func TestEmptyDecl(t *testing.T) { nodes := map[string]testNode{ - `0x480bec8 col:13`: - testNode{&EmptyDecl{ + `0x480bec8 col:13`: testNode{&EmptyDecl{ Addr: 0x480bec8, Pos: NewPositionFromString("col:13"), Position2: NewPositionFromString("col:13"), ChildNodes: []Node{}, }, - 0x480bec8, - NewPositionFromString("col:13"), - []Node{}, + 0x480bec8, + NewPositionFromString("col:13"), + []Node{}, }, } diff --git a/ast/enum_constant_decl_test.go b/ast/enum_constant_decl_test.go index 5dfdcbb..d78ba48 100644 --- a/ast/enum_constant_decl_test.go +++ b/ast/enum_constant_decl_test.go @@ -6,8 +6,7 @@ import ( func TestEnumConstantDecl(t *testing.T) { nodes := map[string]testNode{ - `0x1660db0 __codecvt_noconv 'int'`: - testNode{&EnumConstantDecl{ + `0x1660db0 __codecvt_noconv 'int'`: testNode{&EnumConstantDecl{ Addr: 0x1660db0, Pos: NewPositionFromString("line:185:3"), Position2: "", @@ -16,12 +15,11 @@ func TestEnumConstantDecl(t *testing.T) { Type: "int", ChildNodes: []Node{}, }, - 0x1660db0, - NewPositionFromString("line:185:3"), - []Node{}, + 0x1660db0, + NewPositionFromString("line:185:3"), + []Node{}, }, - `0x3c77ba8 col:3 referenced _ISalnum 'int'`: - testNode{&EnumConstantDecl{ + `0x3c77ba8 col:3 referenced _ISalnum 'int'`: testNode{&EnumConstantDecl{ Addr: 0x3c77ba8, Pos: NewPositionFromString("line:59:3, col:65"), Position2: "col:3", @@ -30,9 +28,9 @@ func TestEnumConstantDecl(t *testing.T) { Type: "int", ChildNodes: []Node{}, }, - 0x3c77ba8, - NewPositionFromString("line:59:3, col:65"), - []Node{}, + 0x3c77ba8, + NewPositionFromString("line:59:3, col:65"), + []Node{}, }, } diff --git a/ast/enum_decl.go b/ast/enum_decl.go index 35e9f7b..699d9e6 100644 --- a/ast/enum_decl.go +++ b/ast/enum_decl.go @@ -35,11 +35,11 @@ func parseEnumDecl(line string) Node { }*/ return &EnumDecl{ - Addr: ParseAddress(groups["address"]), - Pos: NewPositionFromString(groups["position"]), - Position2: groups["position2"], - Name: strings.TrimSpace(groups["name"]), - Type: removeQuotes(groups["type"]), + Addr: ParseAddress(groups["address"]), + Pos: NewPositionFromString(groups["position"]), + Position2: groups["position2"], + Name: strings.TrimSpace(groups["name"]), + Type: removeQuotes(groups["type"]), //Type2: type2, ChildNodes: []Node{}, } diff --git a/ast/enum_decl_test.go b/ast/enum_decl_test.go index 710127f..4a4faa8 100644 --- a/ast/enum_decl_test.go +++ b/ast/enum_decl_test.go @@ -6,29 +6,27 @@ import ( func TestEnumDecl(t *testing.T) { nodes := map[string]testNode{ - `0x22a6c80 __codecvt_result`: - testNode{&EnumDecl{ + `0x22a6c80 __codecvt_result`: testNode{&EnumDecl{ Addr: 0x22a6c80, Pos: NewPositionFromString("line:180:1, line:186:1"), Position2: "", Name: "__codecvt_result", ChildNodes: []Node{}, }, - 0x22a6c80, - NewPositionFromString("line:180:1, line:186:1"), - []Node{}, + 0x22a6c80, + NewPositionFromString("line:180:1, line:186:1"), + []Node{}, }, - `0x32fb5a0 col:6 week`: - testNode{&EnumDecl{ + `0x32fb5a0 col:6 week`: testNode{&EnumDecl{ Addr: 0x32fb5a0, Pos: NewPositionFromString("enum.c:3:1, col:45"), Position2: " col:6", Name: "week", ChildNodes: []Node{}, }, - 0x32fb5a0, - NewPositionFromString("enum.c:3:1, col:45"), - []Node{}, + 0x32fb5a0, + NewPositionFromString("enum.c:3:1, col:45"), + []Node{}, }, } diff --git a/ast/enum_extensibility_attr_test.go b/ast/enum_extensibility_attr_test.go index 55b59d8..6ec5d9e 100644 --- a/ast/enum_extensibility_attr_test.go +++ b/ast/enum_extensibility_attr_test.go @@ -6,16 +6,15 @@ import ( func TestEnumExtensibilityAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 content`: - testNode{&EnumExtensibilityAttr{ + `0x7fc0a69091d1 content`: testNode{&EnumExtensibilityAttr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), Content: " content", ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/enum_test.go b/ast/enum_test.go index 1234ffe..3ef5ab9 100644 --- a/ast/enum_test.go +++ b/ast/enum_test.go @@ -6,15 +6,14 @@ import ( func TestEnum(t *testing.T) { nodes := map[string]testNode{ - `0x7f980b858308 'foo'`: - testNode{&Enum{ + `0x7f980b858308 'foo'`: testNode{&Enum{ Addr: 0x7f980b858308, Name: "foo", ChildNodes: []Node{}, }, - 0x7f980b858308, - NewPositionFromString(""), - []Node{}, + 0x7f980b858308, + NewPositionFromString(""), + []Node{}, }, } diff --git a/ast/enum_type_test.go b/ast/enum_type_test.go index 0023e01..c2e0a66 100644 --- a/ast/enum_type_test.go +++ b/ast/enum_type_test.go @@ -6,15 +6,14 @@ import ( func TestEnumType(t *testing.T) { nodes := map[string]testNode{ - `0x7f980b858309 'foo'`: - testNode{&EnumType{ + `0x7f980b858309 'foo'`: testNode{&EnumType{ Addr: 0x7f980b858309, Name: "foo", ChildNodes: []Node{}, }, - 0x7f980b858309, - NewPositionFromString(""), - []Node{}, + 0x7f980b858309, + NewPositionFromString(""), + []Node{}, }, } diff --git a/ast/field_decl_test.go b/ast/field_decl_test.go index abd6a8d..327b2af 100644 --- a/ast/field_decl_test.go +++ b/ast/field_decl_test.go @@ -6,8 +6,7 @@ import ( func TestFieldDecl(t *testing.T) { nodes := map[string]testNode{ - `0x7fef510c4848 col:6 _ur 'int'`: - testNode{&FieldDecl{ + `0x7fef510c4848 col:6 _ur 'int'`: testNode{&FieldDecl{ Addr: 0x7fef510c4848, Pos: NewPositionFromString("line:141:2, col:6"), Position2: "col:6", @@ -18,12 +17,11 @@ func TestFieldDecl(t *testing.T) { Referenced: false, ChildNodes: []Node{}, }, - 0x7fef510c4848, - NewPositionFromString("line:141:2, col:6"), - []Node{}, + 0x7fef510c4848, + NewPositionFromString("line:141:2, col:6"), + []Node{}, }, - `0x7fef510c46f8 col:16 _ub 'struct __sbuf':'struct __sbuf'`: - testNode{&FieldDecl{ + `0x7fef510c46f8 col:16 _ub 'struct __sbuf':'struct __sbuf'`: testNode{&FieldDecl{ Addr: 0x7fef510c46f8, Pos: NewPositionFromString("line:139:2, col:16"), Position2: "col:16", @@ -34,12 +32,11 @@ func TestFieldDecl(t *testing.T) { Referenced: false, ChildNodes: []Node{}, }, - 0x7fef510c46f8, - NewPositionFromString("line:139:2, col:16"), - []Node{}, + 0x7fef510c46f8, + NewPositionFromString("line:139:2, col:16"), + []Node{}, }, - `0x7fef510c3fe0 col:19 _read 'int (* _Nullable)(void *, char *, int)':'int (*)(void *, char *, int)'`: - testNode{&FieldDecl{ + `0x7fef510c3fe0 col:19 _read 'int (* _Nullable)(void *, char *, int)':'int (*)(void *, char *, int)'`: testNode{&FieldDecl{ Addr: 0x7fef510c3fe0, Pos: NewPositionFromString("line:134:2, col:19"), Position2: "col:19", @@ -50,12 +47,11 @@ func TestFieldDecl(t *testing.T) { Referenced: false, ChildNodes: []Node{}, }, - 0x7fef510c3fe0, - NewPositionFromString("line:134:2, col:19"), - []Node{}, + 0x7fef510c3fe0, + NewPositionFromString("line:134:2, col:19"), + []Node{}, }, - `0x7fef51073a60 col:40 __cleanup_stack 'struct __darwin_pthread_handler_rec *'`: - testNode{&FieldDecl{ + `0x7fef51073a60 col:40 __cleanup_stack 'struct __darwin_pthread_handler_rec *'`: testNode{&FieldDecl{ Addr: 0x7fef51073a60, Pos: NewPositionFromString("line:105:2, col:40"), Position2: "col:40", @@ -66,12 +62,11 @@ func TestFieldDecl(t *testing.T) { Referenced: false, ChildNodes: []Node{}, }, - 0x7fef51073a60, - NewPositionFromString("line:105:2, col:40"), - []Node{}, + 0x7fef51073a60, + NewPositionFromString("line:105:2, col:40"), + []Node{}, }, - `0x7fef510738e8 col:7 __opaque 'char [16]'`: - testNode{&FieldDecl{ + `0x7fef510738e8 col:7 __opaque 'char [16]'`: testNode{&FieldDecl{ Addr: 0x7fef510738e8, Pos: NewPositionFromString("line:100:2, col:43"), Position2: "col:7", @@ -82,12 +77,11 @@ func TestFieldDecl(t *testing.T) { Referenced: false, ChildNodes: []Node{}, }, - 0x7fef510738e8, - NewPositionFromString("line:100:2, col:43"), - []Node{}, + 0x7fef510738e8, + NewPositionFromString("line:100:2, col:43"), + []Node{}, }, - `0x7fe9f5072268 col:6 referenced _lbfsize 'int'`: - testNode{&FieldDecl{ + `0x7fe9f5072268 col:6 referenced _lbfsize 'int'`: testNode{&FieldDecl{ Addr: 0x7fe9f5072268, Pos: NewPositionFromString("line:129:2, col:6"), Position2: "col:6", @@ -98,12 +92,11 @@ func TestFieldDecl(t *testing.T) { Referenced: true, ChildNodes: []Node{}, }, - 0x7fe9f5072268, - NewPositionFromString("line:129:2, col:6"), - []Node{}, + 0x7fe9f5072268, + NewPositionFromString("line:129:2, col:6"), + []Node{}, }, - `0x7f9bc9083d00 line:91:5 'unsigned short'`: - testNode{&FieldDecl{ + `0x7f9bc9083d00 line:91:5 'unsigned short'`: testNode{&FieldDecl{ Addr: 0x7f9bc9083d00, Pos: NewPositionFromString("line:91:5, line:97:8"), Position2: "line:91:5", @@ -114,12 +107,11 @@ func TestFieldDecl(t *testing.T) { Referenced: false, ChildNodes: []Node{}, }, - 0x7f9bc9083d00, - NewPositionFromString("line:91:5, line:97:8"), - []Node{}, + 0x7f9bc9083d00, + NewPositionFromString("line:91:5, line:97:8"), + []Node{}, }, - `0x30363a0 __val 'int [2]'`: - testNode{&FieldDecl{ + `0x30363a0 __val 'int [2]'`: testNode{&FieldDecl{ Addr: 0x30363a0, Pos: NewPositionFromString("col:18, col:29"), Position2: "", @@ -130,12 +122,11 @@ func TestFieldDecl(t *testing.T) { Referenced: false, ChildNodes: []Node{}, }, - 0x30363a0, - NewPositionFromString("col:18, col:29"), - []Node{}, + 0x30363a0, + NewPositionFromString("col:18, col:29"), + []Node{}, }, - `0x17aeac0 col:9 implicit referenced 'struct vec3d_t::(anonymous at main.c:3:9)'`: - testNode{&FieldDecl{ + `0x17aeac0 col:9 implicit referenced 'struct vec3d_t::(anonymous at main.c:3:9)'`: testNode{&FieldDecl{ Addr: 0x17aeac0, Pos: NewPositionFromString("line:3:9"), Position2: "col:9", @@ -146,12 +137,11 @@ func TestFieldDecl(t *testing.T) { Referenced: true, ChildNodes: []Node{}, }, - 0x17aeac0, - NewPositionFromString("line:3:9"), - []Node{}, + 0x17aeac0, + NewPositionFromString("line:3:9"), + []Node{}, }, - `0x56498bf52160 col:21 type 'enum __pid_type':'enum __pid_type'`: - testNode{&FieldDecl{ + `0x56498bf52160 col:21 type 'enum __pid_type':'enum __pid_type'`: testNode{&FieldDecl{ Addr: 0x56498bf52160, Pos: NewPositionFromString("line:269:5, col:21"), Position2: "col:21", @@ -162,9 +152,9 @@ func TestFieldDecl(t *testing.T) { Referenced: false, ChildNodes: []Node{}, }, - 0x56498bf52160, - NewPositionFromString("line:269:5, col:21"), - []Node{}, + 0x56498bf52160, + NewPositionFromString("line:269:5, col:21"), + []Node{}, }, } diff --git a/ast/field_test.go b/ast/field_test.go index 88778da..17214d1 100644 --- a/ast/field_test.go +++ b/ast/field_test.go @@ -6,16 +6,15 @@ import ( func TestField(t *testing.T) { nodes := map[string]testNode{ - `0x44159a0 '' 'union sigcontext::(anonymous at /usr/include/x86_64-linux-gnu/bits/sigcontext.h:165:17)'`: - testNode{&Field{ + `0x44159a0 '' 'union sigcontext::(anonymous at /usr/include/x86_64-linux-gnu/bits/sigcontext.h:165:17)'`: testNode{&Field{ Addr: 0x44159a0, String1: "", String2: "union sigcontext::(anonymous at /usr/include/x86_64-linux-gnu/bits/sigcontext.h:165:17)", ChildNodes: []Node{}, }, - 0x44159a0, - NewPositionFromString(""), - []Node{}, + 0x44159a0, + NewPositionFromString(""), + []Node{}, }, } diff --git a/ast/flag_enum_attr.go b/ast/flag_enum_attr.go index 71f6cdf..24f5411 100644 --- a/ast/flag_enum_attr.go +++ b/ast/flag_enum_attr.go @@ -2,48 +2,48 @@ package ast // FlagEnumAttr type FlagEnumAttr struct { - Addr Address - Pos Position - Content string - ChildNodes []Node + Addr Address + Pos Position + Content string + ChildNodes []Node } func parseFlagEnumAttr(line string) Node { - groups := groupsFromRegex( - "<(?P.*)>(?P.*)", - line, - ) - if groups == nil { - return &Unknown{} - } + groups := groupsFromRegex( + "<(?P.*)>(?P.*)", + line, + ) + if groups == nil { + return &Unknown{} + } - return &FlagEnumAttr{ - Addr: ParseAddress(groups["address"]), - Pos: NewPositionFromString(groups["position"]), - Content: groups["content"], - ChildNodes: []Node{}, - } + return &FlagEnumAttr{ + Addr: ParseAddress(groups["address"]), + Pos: NewPositionFromString(groups["position"]), + Content: groups["content"], + ChildNodes: []Node{}, + } } // AddChild adds a new child node. Child nodes can then be accessed with the // Children attribute. func (n *FlagEnumAttr) AddChild(node Node) { - n.ChildNodes = append(n.ChildNodes, node) + n.ChildNodes = append(n.ChildNodes, node) } // Address returns the numeric address of the node. See the documentation for // the Address type for more information. func (n *FlagEnumAttr) Address() Address { - return n.Addr + return n.Addr } // Children returns the child nodes. If this node does not have any children or // this node does not support children it will always return an empty slice. func (n *FlagEnumAttr) Children() []Node { - return n.ChildNodes + return n.ChildNodes } // Position returns the position in the original source code. func (n *FlagEnumAttr) Position() Position { - return n.Pos + return n.Pos } diff --git a/ast/flag_enum_attr_test.go b/ast/flag_enum_attr_test.go index 1e102e1..31ac52e 100644 --- a/ast/flag_enum_attr_test.go +++ b/ast/flag_enum_attr_test.go @@ -6,16 +6,15 @@ import ( func TestFlagEnumAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 content`: - testNode{&FlagEnumAttr{ + `0x7fc0a69091d1 content`: testNode{&FlagEnumAttr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), Content: " content", ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/floating_literal.go b/ast/floating_literal.go index b2db39a..0af7be8 100644 --- a/ast/floating_literal.go +++ b/ast/floating_literal.go @@ -1,11 +1,11 @@ package ast import ( - //"errors" - //"fmt" - //"reflect" +//"errors" +//"fmt" +//"reflect" - //"github.com/elliotchance/c2go/cc" +//"github.com/elliotchance/c2go/cc" ) // FloatingLiteral is type of float literal diff --git a/ast/floating_literal_test.go b/ast/floating_literal_test.go index 6c7f88d..77fc8a9 100644 --- a/ast/floating_literal_test.go +++ b/ast/floating_literal_test.go @@ -6,29 +6,27 @@ import ( func TestFloatingLiteral(t *testing.T) { nodes := map[string]testNode{ - `0x7febe106f5e8 'double' 1.230000e+00`: - testNode{&FloatingLiteral{ + `0x7febe106f5e8 'double' 1.230000e+00`: testNode{&FloatingLiteral{ Addr: 0x7febe106f5e8, Pos: NewPositionFromString("col:24"), Type: "double", Value: 1.23, ChildNodes: []Node{}, }, - 0x7febe106f5e8, - NewPositionFromString("col:24"), - []Node{}, + 0x7febe106f5e8, + NewPositionFromString("col:24"), + []Node{}, }, - `0x21c65b8 'double' 2.718282e+00`: - testNode{&FloatingLiteral{ + `0x21c65b8 'double' 2.718282e+00`: testNode{&FloatingLiteral{ Addr: 0x21c65b8, Pos: NewPositionFromString("col:41"), Type: "double", Value: 2.718282e+00, ChildNodes: []Node{}, }, - 0x21c65b8, - NewPositionFromString("col:41"), - []Node{}, + 0x21c65b8, + NewPositionFromString("col:41"), + []Node{}, }, } diff --git a/ast/for_stmt_test.go b/ast/for_stmt_test.go index 34a9c4a..0886041 100644 --- a/ast/for_stmt_test.go +++ b/ast/for_stmt_test.go @@ -6,15 +6,14 @@ import ( func TestForStmt(t *testing.T) { nodes := map[string]testNode{ - `0x7f961e018848 `: - testNode{&ForStmt{ + `0x7f961e018848 `: testNode{&ForStmt{ Addr: 0x7f961e018848, Pos: NewPositionFromString("line:9:4, line:10:70"), ChildNodes: []Node{}, }, - 0x7f961e018848, - NewPositionFromString("line:9:4, line:10:70"), - []Node{}, + 0x7f961e018848, + NewPositionFromString("line:9:4, line:10:70"), + []Node{}, }, } diff --git a/ast/format_arg_attr_test.go b/ast/format_arg_attr_test.go index 79eb48e..8b3dc85 100644 --- a/ast/format_arg_attr_test.go +++ b/ast/format_arg_attr_test.go @@ -6,16 +6,15 @@ import ( func TestFormatArgAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7f1234567890 1`: - testNode{&FormatArgAttr{ + `0x7f1234567890 1`: testNode{&FormatArgAttr{ Addr: 0x7f1234567890, Pos: NewPositionFromString("col:47, col:57"), Arg: "1", ChildNodes: []Node{}, }, - 0x7f1234567890, - NewPositionFromString("col:47, col:57"), - []Node{}, + 0x7f1234567890, + NewPositionFromString("col:47, col:57"), + []Node{}, }, } diff --git a/ast/format_attr_test.go b/ast/format_attr_test.go index 44093dd..eb0852d 100644 --- a/ast/format_attr_test.go +++ b/ast/format_attr_test.go @@ -6,8 +6,7 @@ import ( func TestFormatAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fcc8d8ecee8 Implicit printf 2 3`: - testNode{&FormatAttr{ + `0x7fcc8d8ecee8 Implicit printf 2 3`: testNode{&FormatAttr{ Addr: 0x7fcc8d8ecee8, Pos: NewPositionFromString("col:6"), Implicit: true, @@ -17,12 +16,11 @@ func TestFormatAttr(t *testing.T) { Unknown2: 3, ChildNodes: []Node{}, }, - 0x7fcc8d8ecee8, - NewPositionFromString("col:6"), - []Node{}, + 0x7fcc8d8ecee8, + NewPositionFromString("col:6"), + []Node{}, }, - `0x7fcc8d8ecff8 printf 2 3`: - testNode{&FormatAttr{ + `0x7fcc8d8ecff8 printf 2 3`: testNode{&FormatAttr{ Addr: 0x7fcc8d8ecff8, Pos: NewPositionFromString("/usr/include/sys/cdefs.h:351:18, col:61"), Implicit: false, @@ -32,12 +30,11 @@ func TestFormatAttr(t *testing.T) { Unknown2: 3, ChildNodes: []Node{}, }, - 0x7fcc8d8ecff8, - NewPositionFromString("/usr/include/sys/cdefs.h:351:18, col:61"), - []Node{}, + 0x7fcc8d8ecff8, + NewPositionFromString("/usr/include/sys/cdefs.h:351:18, col:61"), + []Node{}, }, - `0x273b4d0 Inherited printf 2 3`: - testNode{&FormatAttr{ + `0x273b4d0 Inherited printf 2 3`: testNode{&FormatAttr{ Addr: 0x273b4d0, Pos: NewPositionFromString("line:357:12"), Implicit: false, @@ -47,9 +44,9 @@ func TestFormatAttr(t *testing.T) { Unknown2: 3, ChildNodes: []Node{}, }, - 0x273b4d0, - NewPositionFromString("line:357:12"), - []Node{}, + 0x273b4d0, + NewPositionFromString("line:357:12"), + []Node{}, }, } diff --git a/ast/full_comment.go b/ast/full_comment.go index ff6b98c..ec71eee 100644 --- a/ast/full_comment.go +++ b/ast/full_comment.go @@ -12,9 +12,9 @@ func parseFullComment(line string) Node { `<(?P.*)>`, line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &FullComment{ Addr: ParseAddress(groups["address"]), diff --git a/ast/full_comment_test.go b/ast/full_comment_test.go index de7d228..61c58cb 100644 --- a/ast/full_comment_test.go +++ b/ast/full_comment_test.go @@ -6,15 +6,14 @@ import ( func TestFullComment(t *testing.T) { nodes := map[string]testNode{ - `0x3860920 `: - testNode{&FullComment{ + `0x3860920 `: testNode{&FullComment{ Addr: 0x3860920, Pos: NewPositionFromString("line:10176:4, line:10180:45"), ChildNodes: []Node{}, }, - 0x3860920, - NewPositionFromString("line:10176:4, line:10180:45"), - []Node{}, + 0x3860920, + NewPositionFromString("line:10176:4, line:10180:45"), + []Node{}, }, } diff --git a/ast/function_decl.go b/ast/function_decl.go index dffb858..2afbf7a 100644 --- a/ast/function_decl.go +++ b/ast/function_decl.go @@ -41,9 +41,9 @@ func parseFunctionDecl(line string) Node { `, line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &FunctionDecl{ Addr: ParseAddress(groups["address"]), diff --git a/ast/function_decl_test.go b/ast/function_decl_test.go index 91be062..cdc9087 100644 --- a/ast/function_decl_test.go +++ b/ast/function_decl_test.go @@ -6,8 +6,7 @@ import ( func TestFunctionDecl(t *testing.T) { nodes := map[string]testNode{ - `0x7fb5a90e60d0 col:7 clearerr 'void (FILE *)'`: - testNode{&FunctionDecl{ + `0x7fb5a90e60d0 col:7 clearerr 'void (FILE *)'`: testNode{&FunctionDecl{ Addr: 0x7fb5a90e60d0, Pos: NewPositionFromString("line:231:1, col:22"), Prev: "", @@ -23,12 +22,11 @@ func TestFunctionDecl(t *testing.T) { IsInline: false, ChildNodes: []Node{}, }, - 0x7fb5a90e60d0, - NewPositionFromString("line:231:1, col:22"), - []Node{}, + 0x7fb5a90e60d0, + NewPositionFromString("line:231:1, col:22"), + []Node{}, }, - `0x7fb5a90e2a50 /usr/include/sys/stdio.h:39:5 renameat 'int (int, const char *, int, const char *)'`: - testNode{&FunctionDecl{ + `0x7fb5a90e2a50 /usr/include/sys/stdio.h:39:5 renameat 'int (int, const char *, int, const char *)'`: testNode{&FunctionDecl{ Addr: 0x7fb5a90e2a50, Pos: NewPositionFromString("/usr/include/sys/stdio.h:39:1, /usr/include/AvailabilityInternal.h:21697:126"), Prev: "", @@ -44,12 +42,11 @@ func TestFunctionDecl(t *testing.T) { IsInline: false, ChildNodes: []Node{}, }, - 0x7fb5a90e2a50, - NewPositionFromString("/usr/include/sys/stdio.h:39:1, /usr/include/AvailabilityInternal.h:21697:126"), - []Node{}, + 0x7fb5a90e2a50, + NewPositionFromString("/usr/include/sys/stdio.h:39:1, /usr/include/AvailabilityInternal.h:21697:126"), + []Node{}, }, - `0x7fb5a90e9b70 col:6 implicit fprintf 'int (FILE *, const char *, ...)' extern`: - testNode{&FunctionDecl{ + `0x7fb5a90e9b70 col:6 implicit fprintf 'int (FILE *, const char *, ...)' extern`: testNode{&FunctionDecl{ Addr: 0x7fb5a90e9b70, Pos: NewPositionFromString("/usr/include/stdio.h:244:6"), Prev: "", @@ -65,12 +62,11 @@ func TestFunctionDecl(t *testing.T) { IsInline: false, ChildNodes: []Node{}, }, - 0x7fb5a90e9b70, - NewPositionFromString("/usr/include/stdio.h:244:6"), - []Node{}, + 0x7fb5a90e9b70, + NewPositionFromString("/usr/include/stdio.h:244:6"), + []Node{}, }, - `0x7fb5a90e9d40 prev 0x7fb5a90e9b70 /usr/include/stdio.h:244:6 fprintf 'int (FILE *, const char *, ...)'`: - testNode{&FunctionDecl{ + `0x7fb5a90e9d40 prev 0x7fb5a90e9b70 /usr/include/stdio.h:244:6 fprintf 'int (FILE *, const char *, ...)'`: testNode{&FunctionDecl{ Addr: 0x7fb5a90e9d40, Pos: NewPositionFromString("col:1, /usr/include/sys/cdefs.h:351:63"), Prev: "0x7fb5a90e9b70", @@ -86,12 +82,11 @@ func TestFunctionDecl(t *testing.T) { IsInline: false, ChildNodes: []Node{}, }, - 0x7fb5a90e9d40, - NewPositionFromString("col:1, /usr/include/sys/cdefs.h:351:63"), - []Node{}, + 0x7fb5a90e9d40, + NewPositionFromString("col:1, /usr/include/sys/cdefs.h:351:63"), + []Node{}, }, - `0x7fb5a90ec210 col:6 implicit used printf 'int (const char *, ...)' extern`: - testNode{&FunctionDecl{ + `0x7fb5a90ec210 col:6 implicit used printf 'int (const char *, ...)' extern`: testNode{&FunctionDecl{ Addr: 0x7fb5a90ec210, Pos: NewPositionFromString("line:259:6"), Prev: "", @@ -107,12 +102,11 @@ func TestFunctionDecl(t *testing.T) { IsInline: false, ChildNodes: []Node{}, }, - 0x7fb5a90ec210, - NewPositionFromString("line:259:6"), - []Node{}, + 0x7fb5a90ec210, + NewPositionFromString("line:259:6"), + []Node{}, }, - `0x2ae30d8 :17:1 __acos 'double (double)' extern`: - testNode{&FunctionDecl{ + `0x2ae30d8 :17:1 __acos 'double (double)' extern`: testNode{&FunctionDecl{ Addr: 0x2ae30d8, Pos: NewPositionFromString("/usr/include/math.h:65:3, /usr/include/x86_64-linux-gnu/sys/cdefs.h:57:54"), Prev: "", @@ -128,12 +122,11 @@ func TestFunctionDecl(t *testing.T) { IsInline: false, ChildNodes: []Node{}, }, - 0x2ae30d8, - NewPositionFromString("/usr/include/math.h:65:3, /usr/include/x86_64-linux-gnu/sys/cdefs.h:57:54"), - []Node{}, + 0x2ae30d8, + NewPositionFromString("/usr/include/math.h:65:3, /usr/include/x86_64-linux-gnu/sys/cdefs.h:57:54"), + []Node{}, }, - `0x7fc595071500 line:26:5 referenced main 'int (int, char **)'`: - testNode{&FunctionDecl{ + `0x7fc595071500 line:26:5 referenced main 'int (int, char **)'`: testNode{&FunctionDecl{ Addr: 0x7fc595071500, Pos: NewPositionFromString("line:26:1, line:69:1"), Prev: "", @@ -149,12 +142,11 @@ func TestFunctionDecl(t *testing.T) { IsInline: false, ChildNodes: []Node{}, }, - 0x7fc595071500, - NewPositionFromString("line:26:1, line:69:1"), - []Node{}, + 0x7fc595071500, + NewPositionFromString("line:26:1, line:69:1"), + []Node{}, }, - `0x55973a008cb0 line:93619:12 used exprIsConst 'int (Expr *, int, int)' static`: - testNode{&FunctionDecl{ + `0x55973a008cb0 line:93619:12 used exprIsConst 'int (Expr *, int, int)' static`: testNode{&FunctionDecl{ Addr: 0x55973a008cb0, Pos: NewPositionFromString("line:93619:1, line:93630:1"), Prev: "", @@ -170,12 +162,11 @@ func TestFunctionDecl(t *testing.T) { IsInline: false, ChildNodes: []Node{}, }, - 0x55973a008cb0, - NewPositionFromString("line:93619:1, line:93630:1"), - []Node{}, + 0x55973a008cb0, + NewPositionFromString("line:93619:1, line:93630:1"), + []Node{}, }, - `0x563ade547cb8 line:14:2 safe_unary_minus_func_int8_t_s 'int8_t (int8_t)':'int8_t (int8_t)' static`: - testNode{&FunctionDecl{ + `0x563ade547cb8 line:14:2 safe_unary_minus_func_int8_t_s 'int8_t (int8_t)':'int8_t (int8_t)' static`: testNode{&FunctionDecl{ Addr: 0x563ade547cb8, Pos: NewPositionFromString("safe_math.h:13:1, line:25:1"), Prev: "", @@ -191,12 +182,11 @@ func TestFunctionDecl(t *testing.T) { IsInline: false, ChildNodes: []Node{}, }, - 0x563ade547cb8, - NewPositionFromString("safe_math.h:13:1, line:25:1"), - []Node{}, + 0x563ade547cb8, + NewPositionFromString("safe_math.h:13:1, line:25:1"), + []Node{}, }, - `0x556cac571be0 line:9:26 sqlite3Hwtime1 'unsigned long (void)' inline`: - testNode{&FunctionDecl{ + `0x556cac571be0 line:9:26 sqlite3Hwtime1 'unsigned long (void)' inline`: testNode{&FunctionDecl{ Addr: 0x556cac571be0, Pos: NewPositionFromString("tests/asm.c:9:1, line:13:1"), Prev: "", @@ -212,12 +202,11 @@ func TestFunctionDecl(t *testing.T) { IsInline: true, ChildNodes: []Node{}, }, - 0x556cac571be0, - NewPositionFromString("tests/asm.c:9:1, line:13:1"), - []Node{}, + 0x556cac571be0, + NewPositionFromString("tests/asm.c:9:1, line:13:1"), + []Node{}, }, - `0x21c3da0 line:8201:25 used insertvertex 'enum insertvertexresult (struct mesh *, struct behavior *, vertex, struct otri *, struct osub *, int, int)'`: - testNode{&FunctionDecl{ + `0x21c3da0 line:8201:25 used insertvertex 'enum insertvertexresult (struct mesh *, struct behavior *, vertex, struct otri *, struct osub *, int, int)'`: testNode{&FunctionDecl{ Addr: 0x21c3da0, Pos: NewPositionFromString("line:8201:1, line:8786:1"), Prev: "", @@ -233,12 +222,11 @@ func TestFunctionDecl(t *testing.T) { IsInline: false, ChildNodes: []Node{}, }, - 0x21c3da0, - NewPositionFromString("line:8201:1, line:8786:1"), - []Node{}, + 0x21c3da0, + NewPositionFromString("line:8201:1, line:8786:1"), + []Node{}, }, - `0x30bdba8 parent 0x304fbb0 col:30 used getinfo 'enum countries ()'`: - testNode{&FunctionDecl{ + `0x30bdba8 parent 0x304fbb0 col:30 used getinfo 'enum countries ()'`: testNode{&FunctionDecl{ Addr: 0x30bdba8, Pos: NewPositionFromString("col:3, col:38"), Prev: "", @@ -255,12 +243,11 @@ func TestFunctionDecl(t *testing.T) { IsInline: false, ChildNodes: []Node{}, }, - 0x30bdba8, - NewPositionFromString("col:3, col:38"), - []Node{}, + 0x30bdba8, + NewPositionFromString("col:3, col:38"), + []Node{}, }, - `0x353d3b8 parent 0x31e9ba0 prev 0x33b0810 col:22 used dmatrix 'double **(long, long, long, long)'`: - testNode{&FunctionDecl{ + `0x353d3b8 parent 0x31e9ba0 prev 0x33b0810 col:22 used dmatrix 'double **(long, long, long, long)'`: testNode{&FunctionDecl{ Addr: 0x353d3b8, Pos: NewPositionFromString("col:2, col:30"), Prev: "0x33b0810", @@ -277,9 +264,9 @@ func TestFunctionDecl(t *testing.T) { IsInline: false, ChildNodes: []Node{}, }, - 0x353d3b8, - NewPositionFromString("col:2, col:30"), - []Node{}, + 0x353d3b8, + NewPositionFromString("col:2, col:30"), + []Node{}, }, } diff --git a/ast/function_proto_type.go b/ast/function_proto_type.go index 0216dcb..e668345 100644 --- a/ast/function_proto_type.go +++ b/ast/function_proto_type.go @@ -13,9 +13,9 @@ func parseFunctionProtoType(line string) Node { "'(?P.*?)' (?P.*)", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &FunctionProtoType{ Addr: ParseAddress(groups["address"]), diff --git a/ast/function_proto_type_test.go b/ast/function_proto_type_test.go index 979c540..946e7e0 100644 --- a/ast/function_proto_type_test.go +++ b/ast/function_proto_type_test.go @@ -6,16 +6,15 @@ import ( func TestFunctionProtoType(t *testing.T) { nodes := map[string]testNode{ - `0x7fa3b88bbb30 'struct _opaque_pthread_t *' foo`: - testNode{&FunctionProtoType{ + `0x7fa3b88bbb30 'struct _opaque_pthread_t *' foo`: testNode{&FunctionProtoType{ Addr: 0x7fa3b88bbb30, Type: "struct _opaque_pthread_t *", Kind: "foo", ChildNodes: []Node{}, }, - 0x7fa3b88bbb30, - NewPositionFromString(""), - []Node{}, + 0x7fa3b88bbb30, + NewPositionFromString(""), + []Node{}, }, } diff --git a/ast/gcc_asm_stmt.go b/ast/gcc_asm_stmt.go index 6880652..319f1e0 100644 --- a/ast/gcc_asm_stmt.go +++ b/ast/gcc_asm_stmt.go @@ -12,9 +12,9 @@ func parseGCCAsmStmt(line string) Node { "<(?P.*)>", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &GCCAsmStmt{ Addr: ParseAddress(groups["address"]), diff --git a/ast/gcc_asm_stmt_test.go b/ast/gcc_asm_stmt_test.go index 870cd53..e360547 100644 --- a/ast/gcc_asm_stmt_test.go +++ b/ast/gcc_asm_stmt_test.go @@ -6,15 +6,14 @@ import ( func TestGCCAsmStmtStmt(t *testing.T) { nodes := map[string]testNode{ - `0x7fad830c9e38 `: - testNode{&GCCAsmStmt{ + `0x7fad830c9e38 `: testNode{&GCCAsmStmt{ Addr: 0x7fad830c9e38, Pos: NewPositionFromString("line:13:5, col:57"), ChildNodes: []Node{}, }, - 0x7fad830c9e38, - NewPositionFromString("line:13:5, col:57"), - []Node{}, + 0x7fad830c9e38, + NewPositionFromString("line:13:5, col:57"), + []Node{}, }, } diff --git a/ast/go_stmt.go b/ast/go_stmt.go index 2120115..0e70227 100644 --- a/ast/go_stmt.go +++ b/ast/go_stmt.go @@ -14,9 +14,9 @@ func parseGotoStmt(line string) Node { "<(?P.*)> '(?P.*)' (?P.*)", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &GotoStmt{ Addr: ParseAddress(groups["address"]), diff --git a/ast/go_stmt_test.go b/ast/go_stmt_test.go index 3654302..fa1cc2c 100644 --- a/ast/go_stmt_test.go +++ b/ast/go_stmt_test.go @@ -6,17 +6,16 @@ import ( func TestGotoStmt(t *testing.T) { nodes := map[string]testNode{ - `0x7fb9cc1994d8 'end_getDigits' 0x7fb9cc199490`: - testNode{&GotoStmt{ + `0x7fb9cc1994d8 'end_getDigits' 0x7fb9cc199490`: testNode{&GotoStmt{ Addr: 0x7fb9cc1994d8, Pos: NewPositionFromString("line:18893:9, col:14"), Name: "end_getDigits", Position2: "0x7fb9cc199490", ChildNodes: []Node{}, }, - 0x7fb9cc1994d8, - NewPositionFromString("line:18893:9, col:14"), - []Node{}, + 0x7fb9cc1994d8, + NewPositionFromString("line:18893:9, col:14"), + []Node{}, }, } diff --git a/ast/html_end_tag_comment.go b/ast/html_end_tag_comment.go index bf7dfe9..b12d3e5 100644 --- a/ast/html_end_tag_comment.go +++ b/ast/html_end_tag_comment.go @@ -13,9 +13,9 @@ func parseHTMLEndTagComment(line string) Node { `<(?P.*)> Name="(?P.*)"`, line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &HTMLEndTagComment{ Addr: ParseAddress(groups["address"]), diff --git a/ast/html_end_tag_comment_test.go b/ast/html_end_tag_comment_test.go index 9c63168..33fd478 100644 --- a/ast/html_end_tag_comment_test.go +++ b/ast/html_end_tag_comment_test.go @@ -6,16 +6,15 @@ import ( func TestHTMLEndTagComment(t *testing.T) { nodes := map[string]testNode{ - `0x4259670 Name="i"`: - testNode{&HTMLEndTagComment{ + `0x4259670 Name="i"`: testNode{&HTMLEndTagComment{ Addr: 0x4259670, Pos: NewPositionFromString("col:27, col:30"), Name: "i", ChildNodes: []Node{}, }, - 0x4259670, - NewPositionFromString("col:27, col:30"), - []Node{}, + 0x4259670, + NewPositionFromString("col:27, col:30"), + []Node{}, }, } diff --git a/ast/html_start_tag_comment.go b/ast/html_start_tag_comment.go index 02583a9..dfc7e79 100644 --- a/ast/html_start_tag_comment.go +++ b/ast/html_start_tag_comment.go @@ -13,9 +13,9 @@ func parseHTMLStartTagComment(line string) Node { `<(?P.*)> Name="(?P.*)"`, line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &HTMLStartTagComment{ Addr: ParseAddress(groups["address"]), diff --git a/ast/html_start_tag_comment_test.go b/ast/html_start_tag_comment_test.go index d6e7472..205c41b 100644 --- a/ast/html_start_tag_comment_test.go +++ b/ast/html_start_tag_comment_test.go @@ -6,16 +6,15 @@ import ( func TestHTMLStartTagComment(t *testing.T) { nodes := map[string]testNode{ - `0x4259670 Name="i"`: - testNode{&HTMLStartTagComment{ + `0x4259670 Name="i"`: testNode{&HTMLStartTagComment{ Addr: 0x4259670, Pos: NewPositionFromString("col:27, col:30"), Name: "i", ChildNodes: []Node{}, }, - 0x4259670, - NewPositionFromString("col:27, col:30"), - []Node{}, + 0x4259670, + NewPositionFromString("col:27, col:30"), + []Node{}, }, } diff --git a/ast/ib_action_attr.go b/ast/ib_action_attr.go index 1cb68ea..9050bc7 100644 --- a/ast/ib_action_attr.go +++ b/ast/ib_action_attr.go @@ -12,9 +12,9 @@ func parseIBActionAttr(line string) Node { "<(?P.*)>", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &IBActionAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/ib_action_attr_test.go b/ast/ib_action_attr_test.go index 12c3a62..92a888f 100644 --- a/ast/ib_action_attr_test.go +++ b/ast/ib_action_attr_test.go @@ -6,15 +6,14 @@ import ( func TestIBActionAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 `: - testNode{&IBActionAttr{ + `0x7fc0a69091d1 `: testNode{&IBActionAttr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/ib_outlet_attr.go b/ast/ib_outlet_attr.go index 6dd5b36..3eede9e 100644 --- a/ast/ib_outlet_attr.go +++ b/ast/ib_outlet_attr.go @@ -12,9 +12,9 @@ func parseIBOutletAttr(line string) Node { "<(?P.*)>", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &IBOutletAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/ib_outlet_attr_test.go b/ast/ib_outlet_attr_test.go index f064b92..99ba792 100644 --- a/ast/ib_outlet_attr_test.go +++ b/ast/ib_outlet_attr_test.go @@ -6,15 +6,14 @@ import ( func TestIBOutletAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 `: - testNode{&IBOutletAttr{ + `0x7fc0a69091d1 `: testNode{&IBOutletAttr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/if_stmt.go b/ast/if_stmt.go index c400da0..b38fb4f 100644 --- a/ast/if_stmt.go +++ b/ast/if_stmt.go @@ -12,9 +12,9 @@ func parseIfStmt(line string) Node { "<(?P.*)>", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &IfStmt{ Addr: ParseAddress(groups["address"]), diff --git a/ast/if_stmt_test.go b/ast/if_stmt_test.go index 3646d55..57a8549 100644 --- a/ast/if_stmt_test.go +++ b/ast/if_stmt_test.go @@ -6,15 +6,14 @@ import ( func TestIfStmt(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d0 `: - testNode{&IfStmt{ + `0x7fc0a69091d0 `: testNode{&IfStmt{ Addr: 0x7fc0a69091d0, Pos: NewPositionFromString("line:11:7, line:18:7"), ChildNodes: []Node{}, }, - 0x7fc0a69091d0, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d0, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/implicit_cast_expr_test.go b/ast/implicit_cast_expr_test.go index 14c9aba..1225f18 100644 --- a/ast/implicit_cast_expr_test.go +++ b/ast/implicit_cast_expr_test.go @@ -6,32 +6,29 @@ import ( func TestImplicitCastExpr(t *testing.T) { nodes := map[string]testNode{ - `0x7f9f5b0a1288 'FILE *' `: - testNode{&ImplicitCastExpr{ + `0x7f9f5b0a1288 'FILE *' `: testNode{&ImplicitCastExpr{ Addr: 0x7f9f5b0a1288, Pos: NewPositionFromString("col:8"), Type: "FILE *", Kind: "LValueToRValue", ChildNodes: []Node{}, }, - 0x7f9f5b0a1288, - NewPositionFromString("col:8"), - []Node{}, + 0x7f9f5b0a1288, + NewPositionFromString("col:8"), + []Node{}, }, - `0x7f9f5b0a7828 'int (*)(int, FILE *)' `: - testNode{&ImplicitCastExpr{ + `0x7f9f5b0a7828 'int (*)(int, FILE *)' `: testNode{&ImplicitCastExpr{ Addr: 0x7f9f5b0a7828, Pos: NewPositionFromString("col:11"), Type: "int (*)(int, FILE *)", Kind: "FunctionToPointerDecay", ChildNodes: []Node{}, }, - 0x7f9f5b0a7828, - NewPositionFromString("col:11"), - []Node{}, + 0x7f9f5b0a7828, + NewPositionFromString("col:11"), + []Node{}, }, - `0x21267c8 'enum week1':'enum week2' `: - testNode{&ImplicitCastExpr{ + `0x21267c8 'enum week1':'enum week2' `: testNode{&ImplicitCastExpr{ Addr: 0x21267c8, Pos: NewPositionFromString("col:8"), Type: "enum week1", @@ -39,12 +36,11 @@ func TestImplicitCastExpr(t *testing.T) { Kind: "IntegralCast", ChildNodes: []Node{}, }, - 0x21267c8, - NewPositionFromString("col:8"), - []Node{}, + 0x21267c8, + NewPositionFromString("col:8"), + []Node{}, }, - `0x26fd2d8 'extCoord':'extCoord' `: - testNode{&ImplicitCastExpr{ + `0x26fd2d8 'extCoord':'extCoord' `: testNode{&ImplicitCastExpr{ Addr: 0x26fd2d8, Pos: NewPositionFromString("col:20, col:32"), Type: "extCoord", @@ -52,9 +48,9 @@ func TestImplicitCastExpr(t *testing.T) { Kind: "LValueToRValue", ChildNodes: []Node{}, }, - 0x26fd2d8, - NewPositionFromString("col:20, col:32"), - []Node{}, + 0x26fd2d8, + NewPositionFromString("col:20, col:32"), + []Node{}, }, } diff --git a/ast/implicit_value_init_expr.go b/ast/implicit_value_init_expr.go index 400a3e9..f74a8b3 100644 --- a/ast/implicit_value_init_expr.go +++ b/ast/implicit_value_init_expr.go @@ -14,9 +14,9 @@ func parseImplicitValueInitExpr(line string) Node { "<(?P.*)> '(?P.*?)'(:'(?P.*)')?", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &ImplicitValueInitExpr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/implicit_value_init_expr_test.go b/ast/implicit_value_init_expr_test.go index 92ffda1..760ecb2 100644 --- a/ast/implicit_value_init_expr_test.go +++ b/ast/implicit_value_init_expr_test.go @@ -6,29 +6,27 @@ import ( func TestImplicitValueInitExpr(t *testing.T) { nodes := map[string]testNode{ - `0x7f8c3396fbd8 <> 'sqlite3StatValueType':'long long'`: - testNode{&ImplicitValueInitExpr{ + `0x7f8c3396fbd8 <> 'sqlite3StatValueType':'long long'`: testNode{&ImplicitValueInitExpr{ Addr: 0x7f8c3396fbd8, Pos: NewPositionFromString(""), Type1: "sqlite3StatValueType", Type2: "long long", ChildNodes: []Node{}, }, - 0x7f8c3396fbd8, - NewPositionFromString(""), - []Node{}, + 0x7f8c3396fbd8, + NewPositionFromString(""), + []Node{}, }, - `0x7feecb0d6af0 <> 'char'`: - testNode{&ImplicitValueInitExpr{ + `0x7feecb0d6af0 <> 'char'`: testNode{&ImplicitValueInitExpr{ Addr: 0x7feecb0d6af0, Pos: NewPositionFromString(""), Type1: "char", Type2: "", ChildNodes: []Node{}, }, - 0x7feecb0d6af0, - NewPositionFromString(""), - []Node{}, + 0x7feecb0d6af0, + NewPositionFromString(""), + []Node{}, }, } diff --git a/ast/incomplete_array_type.go b/ast/incomplete_array_type.go index 6a0fc8c..17ba004 100644 --- a/ast/incomplete_array_type.go +++ b/ast/incomplete_array_type.go @@ -12,9 +12,9 @@ func parseIncompleteArrayType(line string) Node { "'(?P.*)' ", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &IncompleteArrayType{ Addr: ParseAddress(groups["address"]), diff --git a/ast/incomplete_array_type_test.go b/ast/incomplete_array_type_test.go index a8ea32f..7b52743 100644 --- a/ast/incomplete_array_type_test.go +++ b/ast/incomplete_array_type_test.go @@ -6,15 +6,14 @@ import ( func TestIncompleteArrayType(t *testing.T) { nodes := map[string]testNode{ - `0x7fcb7d005c20 'int []' `: - testNode{&IncompleteArrayType{ + `0x7fcb7d005c20 'int []' `: testNode{&IncompleteArrayType{ Addr: 0x7fcb7d005c20, Type: "int []", ChildNodes: []Node{}, }, - 0x7fcb7d005c20, - NewPositionFromString(""), - []Node{}, + 0x7fcb7d005c20, + NewPositionFromString(""), + []Node{}, }, } diff --git a/ast/indirect_field_decl.go b/ast/indirect_field_decl.go index ada387d..8549871 100644 --- a/ast/indirect_field_decl.go +++ b/ast/indirect_field_decl.go @@ -22,9 +22,9 @@ func parseIndirectFieldDecl(line string) Node { '(?P.+?)'`, line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &IndirectFieldDecl{ Addr: ParseAddress(groups["address"]), diff --git a/ast/indirect_field_decl_test.go b/ast/indirect_field_decl_test.go index 619fd36..d582ce0 100644 --- a/ast/indirect_field_decl_test.go +++ b/ast/indirect_field_decl_test.go @@ -6,8 +6,7 @@ import ( func TestIndirectFieldDecl(t *testing.T) { nodes := map[string]testNode{ - `0x2be19a8 col:25 implicit fpstate 'struct _fpstate *'`: - testNode{&IndirectFieldDecl{ + `0x2be19a8 col:25 implicit fpstate 'struct _fpstate *'`: testNode{&IndirectFieldDecl{ Addr: 0x2be19a8, Pos: NewPositionFromString("line:167:25"), Position2: "col:25", @@ -16,9 +15,9 @@ func TestIndirectFieldDecl(t *testing.T) { Type: "struct _fpstate *", ChildNodes: []Node{}, }, - 0x2be19a8, - NewPositionFromString("line:167:25"), - []Node{}, + 0x2be19a8, + NewPositionFromString("line:167:25"), + []Node{}, }, } diff --git a/ast/init_list_expr.go b/ast/init_list_expr.go index 44a04e4..6c6c4dc 100644 --- a/ast/init_list_expr.go +++ b/ast/init_list_expr.go @@ -14,9 +14,9 @@ func parseInitListExpr(line string) Node { "<(?P.*)> '(?P.*?)'(:'(?P.*)')?", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &InitListExpr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/init_list_expr_test.go b/ast/init_list_expr_test.go index 76f0864..dd6c864 100644 --- a/ast/init_list_expr_test.go +++ b/ast/init_list_expr_test.go @@ -6,39 +6,36 @@ import ( func TestInitListExpr(t *testing.T) { nodes := map[string]testNode{ - `0x7fbdd1906c20 'const unsigned char [256]'`: - testNode{&InitListExpr{ + `0x7fbdd1906c20 'const unsigned char [256]'`: testNode{&InitListExpr{ Addr: 0x7fbdd1906c20, Pos: NewPositionFromString("col:52, line:17160:1"), Type1: "const unsigned char [256]", ChildNodes: []Node{}, }, - 0x7fbdd1906c20, - NewPositionFromString("col:52, line:17160:1"), - []Node{}, + 0x7fbdd1906c20, + NewPositionFromString("col:52, line:17160:1"), + []Node{}, }, - `0x32017f0 'struct node [2]'`: - testNode{&InitListExpr{ + `0x32017f0 'struct node [2]'`: testNode{&InitListExpr{ Addr: 0x32017f0, Pos: NewPositionFromString("col:24, col:41"), Type1: "struct node [2]", ChildNodes: []Node{}, }, - 0x32017f0, - NewPositionFromString("col:24, col:41"), - []Node{}, + 0x32017f0, + NewPositionFromString("col:24, col:41"), + []Node{}, }, - `0x3201840 'struct node':'struct node'`: - testNode{&InitListExpr{ + `0x3201840 'struct node':'struct node'`: testNode{&InitListExpr{ Addr: 0x3201840, Pos: NewPositionFromString("col:25, col:31"), Type1: "struct node", Type2: "struct node", ChildNodes: []Node{}, }, - 0x3201840, - NewPositionFromString("col:25, col:31"), - []Node{}, + 0x3201840, + NewPositionFromString("col:25, col:31"), + []Node{}, }, } diff --git a/ast/inline_command_comment.go b/ast/inline_command_comment.go index b99c4c4..5faf699 100644 --- a/ast/inline_command_comment.go +++ b/ast/inline_command_comment.go @@ -13,9 +13,9 @@ func parseInlineCommandComment(line string) Node { `<(?P.*)> (?P.*)`, line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &InlineCommandComment{ Addr: ParseAddress(groups["address"]), diff --git a/ast/inline_command_comment_test.go b/ast/inline_command_comment_test.go index b2d361d..cdde7c9 100644 --- a/ast/inline_command_comment_test.go +++ b/ast/inline_command_comment_test.go @@ -6,16 +6,15 @@ import ( func TestInlineCommandComment(t *testing.T) { nodes := map[string]testNode{ - `0x22e3510 Name="NOTE" RenderNormal`: - testNode{&InlineCommandComment{ + `0x22e3510 Name="NOTE" RenderNormal`: testNode{&InlineCommandComment{ Addr: 0x22e3510, Pos: NewPositionFromString("col:2, col:6"), Other: "Name=\"NOTE\" RenderNormal", ChildNodes: []Node{}, }, - 0x22e3510, - NewPositionFromString("col:2, col:6"), - []Node{}, + 0x22e3510, + NewPositionFromString("col:2, col:6"), + []Node{}, }, } diff --git a/ast/integer_literal.go b/ast/integer_literal.go index 1d57727..ab8bc3b 100644 --- a/ast/integer_literal.go +++ b/ast/integer_literal.go @@ -14,9 +14,9 @@ func parseIntegerLiteral(line string) Node { "<(?P.*)> '(?P.*?)' (?P\\d+)", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &IntegerLiteral{ Addr: ParseAddress(groups["address"]), diff --git a/ast/integer_literal_test.go b/ast/integer_literal_test.go index e5916ea..3bdaa99 100644 --- a/ast/integer_literal_test.go +++ b/ast/integer_literal_test.go @@ -6,17 +6,16 @@ import ( func TestIntegerLiteral(t *testing.T) { nodes := map[string]testNode{ - `0x7fbe9804bcc8 'int' 1`: - testNode{&IntegerLiteral{ + `0x7fbe9804bcc8 'int' 1`: testNode{&IntegerLiteral{ Addr: 0x7fbe9804bcc8, Pos: NewPositionFromString("col:14"), Type: "int", Value: "1", ChildNodes: []Node{}, }, - 0x7fbe9804bcc8, - NewPositionFromString("col:14"), - []Node{}, + 0x7fbe9804bcc8, + NewPositionFromString("col:14"), + []Node{}, }, } diff --git a/ast/label_stmt_test.go b/ast/label_stmt_test.go index 9b704fb..9788245 100644 --- a/ast/label_stmt_test.go +++ b/ast/label_stmt_test.go @@ -6,16 +6,15 @@ import ( func TestLabelStmt(t *testing.T) { nodes := map[string]testNode{ - `0x7fe3ba82edb8 'end_getDigits'`: - testNode{&LabelStmt{ + `0x7fe3ba82edb8 'end_getDigits'`: testNode{&LabelStmt{ Addr: 0x7fe3ba82edb8, Pos: NewPositionFromString("line:18906:1, line:18907:22"), Name: "end_getDigits", ChildNodes: []Node{}, }, - 0x7fe3ba82edb8, - NewPositionFromString("line:18906:1, line:18907:22"), - []Node{}, + 0x7fe3ba82edb8, + NewPositionFromString("line:18906:1, line:18907:22"), + []Node{}, }, } diff --git a/ast/malloc_attr.go b/ast/malloc_attr.go index 09b5de2..fbb2fea 100644 --- a/ast/malloc_attr.go +++ b/ast/malloc_attr.go @@ -13,9 +13,9 @@ func parseMallocAttr(line string) Node { "<(?P.*)>", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &MallocAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/malloc_attr_test.go b/ast/malloc_attr_test.go index 51fe854..adf09ce 100644 --- a/ast/malloc_attr_test.go +++ b/ast/malloc_attr_test.go @@ -6,15 +6,14 @@ import ( func TestMallocAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 `: - testNode{&MallocAttr{ + `0x7fc0a69091d1 `: testNode{&MallocAttr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/max_field_alignment_attr_test.go b/ast/max_field_alignment_attr_test.go index ac92dbd..70c7182 100644 --- a/ast/max_field_alignment_attr_test.go +++ b/ast/max_field_alignment_attr_test.go @@ -6,27 +6,25 @@ import ( func TestMaxFieldAlignmentAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fd4b7063ac0 <> Implicit 32`: - testNode{&MaxFieldAlignmentAttr{ + `0x7fd4b7063ac0 <> Implicit 32`: testNode{&MaxFieldAlignmentAttr{ Addr: 0x7fd4b7063ac0, Pos: NewPositionFromString(""), Size: 32, ChildNodes: []Node{}, }, - 0x7fd4b7063ac0, - NewPositionFromString(""), - []Node{}, + 0x7fd4b7063ac0, + NewPositionFromString(""), + []Node{}, }, - `0x7fd4b7063ac0 <> Implicit 8`: - testNode{&MaxFieldAlignmentAttr{ + `0x7fd4b7063ac0 <> Implicit 8`: testNode{&MaxFieldAlignmentAttr{ Addr: 0x7fd4b7063ac0, Pos: NewPositionFromString(""), Size: 8, ChildNodes: []Node{}, }, - 0x7fd4b7063ac0, - NewPositionFromString(""), - []Node{}, + 0x7fd4b7063ac0, + NewPositionFromString(""), + []Node{}, }, } diff --git a/ast/may_alias_attr.go b/ast/may_alias_attr.go index dee6f9a..b07b1dc 100644 --- a/ast/may_alias_attr.go +++ b/ast/may_alias_attr.go @@ -12,9 +12,9 @@ func parseMayAliasAttr(line string) Node { "<(?P.*)>", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &MayAliasAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/may_alias_attr_test.go b/ast/may_alias_attr_test.go index a17a673..1cdf8b0 100644 --- a/ast/may_alias_attr_test.go +++ b/ast/may_alias_attr_test.go @@ -6,15 +6,14 @@ import ( func TestMayAliasAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 `: - testNode{&MayAliasAttr{ + `0x7fc0a69091d1 `: testNode{&MayAliasAttr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/member_expr.go b/ast/member_expr.go index a00132f..245759f 100644 --- a/ast/member_expr.go +++ b/ast/member_expr.go @@ -26,9 +26,9 @@ func parseMemberExpr(line string) Node { (?P[0-9a-fx]+)`, line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } type2 := groups["type2"] if type2 != "" { diff --git a/ast/member_expr_test.go b/ast/member_expr_test.go index 1e893cd..72615a1 100644 --- a/ast/member_expr_test.go +++ b/ast/member_expr_test.go @@ -6,8 +6,7 @@ import ( func TestMemberExpr(t *testing.T) { nodes := map[string]testNode{ - `0x7fcc758e34a0 'int' lvalue ->_w 0x7fcc758d60c8`: - testNode{&MemberExpr{ + `0x7fcc758e34a0 'int' lvalue ->_w 0x7fcc758d60c8`: testNode{&MemberExpr{ Addr: 0x7fcc758e34a0, Pos: NewPositionFromString("col:8, col:12"), Type: "int", @@ -19,12 +18,11 @@ func TestMemberExpr(t *testing.T) { IsPointer: true, ChildNodes: []Node{}, }, - 0x7fcc758e34a0, - NewPositionFromString("col:8, col:12"), - []Node{}, + 0x7fcc758e34a0, + NewPositionFromString("col:8, col:12"), + []Node{}, }, - `0x7fcc76004210 'unsigned char *' lvalue ->_p 0x7fcc758d6018`: - testNode{&MemberExpr{ + `0x7fcc76004210 'unsigned char *' lvalue ->_p 0x7fcc758d6018`: testNode{&MemberExpr{ Addr: 0x7fcc76004210, Pos: NewPositionFromString("col:12, col:16"), Type: "unsigned char *", @@ -36,12 +34,11 @@ func TestMemberExpr(t *testing.T) { IsPointer: true, ChildNodes: []Node{}, }, - 0x7fcc76004210, - NewPositionFromString("col:12, col:16"), - []Node{}, + 0x7fcc76004210, + NewPositionFromString("col:12, col:16"), + []Node{}, }, - `0x7f85338325b0 'float' lvalue .constant 0x7f8533832260`: - testNode{&MemberExpr{ + `0x7f85338325b0 'float' lvalue .constant 0x7f8533832260`: testNode{&MemberExpr{ Addr: 0x7f85338325b0, Pos: NewPositionFromString("col:4, col:13"), Type: "float", @@ -53,12 +50,11 @@ func TestMemberExpr(t *testing.T) { IsPointer: false, ChildNodes: []Node{}, }, - 0x7f85338325b0, - NewPositionFromString("col:4, col:13"), - []Node{}, + 0x7f85338325b0, + NewPositionFromString("col:4, col:13"), + []Node{}, }, - `0x7f8533832670 'char *' lvalue .pointer 0x7f85338322b8`: - testNode{&MemberExpr{ + `0x7f8533832670 'char *' lvalue .pointer 0x7f85338322b8`: testNode{&MemberExpr{ Addr: 0x7f8533832670, Pos: NewPositionFromString("col:4, col:13"), Type: "char *", @@ -70,12 +66,11 @@ func TestMemberExpr(t *testing.T) { IsPointer: false, ChildNodes: []Node{}, }, - 0x7f8533832670, - NewPositionFromString("col:4, col:13"), - []Node{}, + 0x7f8533832670, + NewPositionFromString("col:4, col:13"), + []Node{}, }, - `0x7fb7d5a49ac8 'bft':'unsigned int' lvalue bitfield ->isPrepareV2 0x7fb7d5967f40`: - testNode{&MemberExpr{ + `0x7fb7d5a49ac8 'bft':'unsigned int' lvalue bitfield ->isPrepareV2 0x7fb7d5967f40`: testNode{&MemberExpr{ Addr: 0x7fb7d5a49ac8, Pos: NewPositionFromString("col:3, col:6"), Type: "bft", @@ -87,12 +82,11 @@ func TestMemberExpr(t *testing.T) { IsPointer: true, ChildNodes: []Node{}, }, - 0x7fb7d5a49ac8, - NewPositionFromString("col:3, col:6"), - []Node{}, + 0x7fb7d5a49ac8, + NewPositionFromString("col:3, col:6"), + []Node{}, }, - `0x2914fb8 'union vec3d_t::(anonymous at main.c:2:5)' lvalue . 0x2914920`: - testNode{&MemberExpr{ + `0x2914fb8 'union vec3d_t::(anonymous at main.c:2:5)' lvalue . 0x2914920`: testNode{&MemberExpr{ Addr: 0x2914fb8, Pos: NewPositionFromString("col:12, col:14"), Type: "union vec3d_t::(anonymous at main.c:2:5)", @@ -104,12 +98,11 @@ func TestMemberExpr(t *testing.T) { IsPointer: false, ChildNodes: []Node{}, }, - 0x2914fb8, - NewPositionFromString("col:12, col:14"), - []Node{}, + 0x2914fb8, + NewPositionFromString("col:12, col:14"), + []Node{}, }, - `0x3180ef0 'int' .n 0x317f450`: - testNode{&MemberExpr{ + `0x3180ef0 'int' .n 0x317f450`: testNode{&MemberExpr{ Addr: 0x3180ef0, Pos: NewPositionFromString("col:32, col:48"), Type: "int", @@ -121,9 +114,9 @@ func TestMemberExpr(t *testing.T) { IsPointer: false, ChildNodes: []Node{}, }, - 0x3180ef0, - NewPositionFromString("col:32, col:48"), - []Node{}, + 0x3180ef0, + NewPositionFromString("col:32, col:48"), + []Node{}, }, } diff --git a/ast/min_vector_width_attr.go b/ast/min_vector_width_attr.go index 65cd1fd..41e6fd2 100644 --- a/ast/min_vector_width_attr.go +++ b/ast/min_vector_width_attr.go @@ -2,48 +2,48 @@ package ast // MinVectorWidthAttr type MinVectorWidthAttr struct { - Addr Address - Pos Position - Content string - ChildNodes []Node + Addr Address + Pos Position + Content string + ChildNodes []Node } func parseMinVectorWidthAttr(line string) Node { - groups := groupsFromRegex( - "<(?P.*)>(?P.*)", - line, - ) - if groups == nil { - return &Unknown{} - } + groups := groupsFromRegex( + "<(?P.*)>(?P.*)", + line, + ) + if groups == nil { + return &Unknown{} + } - return &MinVectorWidthAttr{ - Addr: ParseAddress(groups["address"]), - Pos: NewPositionFromString(groups["position"]), - Content: groups["content"], - ChildNodes: []Node{}, - } + return &MinVectorWidthAttr{ + Addr: ParseAddress(groups["address"]), + Pos: NewPositionFromString(groups["position"]), + Content: groups["content"], + ChildNodes: []Node{}, + } } // AddChild adds a new child node. Child nodes can then be accessed with the // Children attribute. func (n *MinVectorWidthAttr) AddChild(node Node) { - n.ChildNodes = append(n.ChildNodes, node) + n.ChildNodes = append(n.ChildNodes, node) } // Address returns the numeric address of the node. See the documentation for // the Address type for more information. func (n *MinVectorWidthAttr) Address() Address { - return n.Addr + return n.Addr } // Children returns the child nodes. If this node does not have any children or // this node does not support children it will always return an empty slice. func (n *MinVectorWidthAttr) Children() []Node { - return n.ChildNodes + return n.ChildNodes } // Position returns the position in the original source code. func (n *MinVectorWidthAttr) Position() Position { - return n.Pos + return n.Pos } diff --git a/ast/min_vector_width_attr_test.go b/ast/min_vector_width_attr_test.go index b030e9b..844a41d 100644 --- a/ast/min_vector_width_attr_test.go +++ b/ast/min_vector_width_attr_test.go @@ -6,16 +6,15 @@ import ( func TestMinVectorWidthAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 content`: - testNode{&MinVectorWidthAttr{ + `0x7fc0a69091d1 content`: testNode{&MinVectorWidthAttr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), Content: " content", ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/mode_attr.go b/ast/mode_attr.go index 6642908..f7d0c91 100644 --- a/ast/mode_attr.go +++ b/ast/mode_attr.go @@ -14,9 +14,9 @@ func parseModeAttr(line string) Node { "<(?P.*)> (?P.+)", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &ModeAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/mode_attr_test.go b/ast/mode_attr_test.go index 4d1f9b4..f9e2717 100644 --- a/ast/mode_attr_test.go +++ b/ast/mode_attr_test.go @@ -6,16 +6,15 @@ import ( func Test(t *testing.T) { nodes := map[string]testNode{ - `0x7f980b858309 foo`: - testNode{&ModeAttr{ + `0x7f980b858309 foo`: testNode{&ModeAttr{ Addr: 0x7f980b858309, Pos: NewPositionFromString("line:11:7, line:18:7"), Name: "foo", ChildNodes: []Node{}, }, - 0x7f980b858309, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7f980b858309, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/no_debug_attr.go b/ast/no_debug_attr.go index b4e05a3..7834430 100644 --- a/ast/no_debug_attr.go +++ b/ast/no_debug_attr.go @@ -12,9 +12,9 @@ func parseNoDebugAttr(line string) Node { "<(?P.*)>", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &NoDebugAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/no_debug_attr_test.go b/ast/no_debug_attr_test.go index bdcdf30..623dffb 100644 --- a/ast/no_debug_attr_test.go +++ b/ast/no_debug_attr_test.go @@ -6,15 +6,14 @@ import ( func TestNoDebugAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 `: - testNode{&NoDebugAttr{ + `0x7fc0a69091d1 `: testNode{&NoDebugAttr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/no_escape_attr.go b/ast/no_escape_attr.go index a3ee461..0e46e14 100644 --- a/ast/no_escape_attr.go +++ b/ast/no_escape_attr.go @@ -12,9 +12,9 @@ func parseNoEscapeAttr(line string) Node { "<(?P.*)>", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &NoEscapeAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/no_escape_attr_test.go b/ast/no_escape_attr_test.go index e5eae6c..6738bbd 100644 --- a/ast/no_escape_attr_test.go +++ b/ast/no_escape_attr_test.go @@ -6,15 +6,14 @@ import ( func TestNoEscapeAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 `: - testNode{&NoEscapeAttr{ + `0x7fc0a69091d1 `: testNode{&NoEscapeAttr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/no_inline_attr.go b/ast/no_inline_attr.go index b75cee6..191052d 100644 --- a/ast/no_inline_attr.go +++ b/ast/no_inline_attr.go @@ -13,9 +13,9 @@ func parseNoInlineAttr(line string) Node { "<(?P.*)>", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &NoInlineAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/no_inline_attr_test.go b/ast/no_inline_attr_test.go index 344426d..e890e8f 100644 --- a/ast/no_inline_attr_test.go +++ b/ast/no_inline_attr_test.go @@ -6,15 +6,14 @@ import ( func TestNoInlineAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc02a8a6730 `: - testNode{&NoInlineAttr{ + `0x7fc02a8a6730 `: testNode{&NoInlineAttr{ Addr: 0x7fc02a8a6730, Pos: NewPositionFromString("line:24619:23"), ChildNodes: []Node{}, }, - 0x7fc02a8a6730, - NewPositionFromString("line:24619:23"), - []Node{}, + 0x7fc02a8a6730, + NewPositionFromString("line:24619:23"), + []Node{}, }, } diff --git a/ast/no_throw_attr.go b/ast/no_throw_attr.go index 546cfd3..5d01aff 100644 --- a/ast/no_throw_attr.go +++ b/ast/no_throw_attr.go @@ -18,9 +18,9 @@ func parseNoThrowAttr(line string) Node { `, line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &NoThrowAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/no_throw_attr_test.go b/ast/no_throw_attr_test.go index 780f68c..6638487 100644 --- a/ast/no_throw_attr_test.go +++ b/ast/no_throw_attr_test.go @@ -6,53 +6,49 @@ import ( func TestNoThrowAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fa1488273a0 `: - testNode{&NoThrowAttr{ + `0x7fa1488273a0 `: testNode{&NoThrowAttr{ Addr: 0x7fa1488273a0, Pos: NewPositionFromString("line:7:4, line:11:4"), ChildNodes: []Node{}, Inherited: false, Implicit: false, }, - 0x7fa1488273a0, - NewPositionFromString("line:7:4, line:11:4"), - []Node{}, + 0x7fa1488273a0, + NewPositionFromString("line:7:4, line:11:4"), + []Node{}, }, - `0x5605ceaf4b88 Implicit`: - testNode{&NoThrowAttr{ + `0x5605ceaf4b88 Implicit`: testNode{&NoThrowAttr{ Addr: 0x5605ceaf4b88, Pos: NewPositionFromString("col:12"), ChildNodes: []Node{}, Inherited: false, Implicit: true, }, - 0x5605ceaf4b88, - NewPositionFromString("col:12"), - []Node{}, + 0x5605ceaf4b88, + NewPositionFromString("col:12"), + []Node{}, }, - `0x4153c50 Inherited`: - testNode{&NoThrowAttr{ + `0x4153c50 Inherited`: testNode{&NoThrowAttr{ Addr: 0x4153c50, Pos: NewPositionFromString("/usr/include/unistd.h:779:46"), ChildNodes: []Node{}, Inherited: true, Implicit: false, }, - 0x4153c50, - NewPositionFromString("/usr/include/unistd.h:779:46"), - []Node{}, + 0x4153c50, + NewPositionFromString("/usr/include/unistd.h:779:46"), + []Node{}, }, - `0x1038b8828 Inherited Implicit`: - testNode{&NoThrowAttr{ + `0x1038b8828 Inherited Implicit`: testNode{&NoThrowAttr{ Addr: 0x1038b8828, Pos: NewPositionFromString("col:20"), ChildNodes: []Node{}, Inherited: true, Implicit: true, }, - 0x1038b8828, - NewPositionFromString("col:20"), - []Node{}, + 0x1038b8828, + NewPositionFromString("col:20"), + []Node{}, }, } diff --git a/ast/non_null_attr_test.go b/ast/non_null_attr_test.go index e4934c2..2356f94 100644 --- a/ast/non_null_attr_test.go +++ b/ast/non_null_attr_test.go @@ -6,8 +6,7 @@ import ( func TestNonNullAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fa1488273b0 1`: - testNode{&NonNullAttr{ + `0x7fa1488273b0 1`: testNode{&NonNullAttr{ Addr: 0x7fa1488273b0, Pos: NewPositionFromString("line:7:4, line:11:4"), Inherited: false, @@ -17,12 +16,11 @@ func TestNonNullAttr(t *testing.T) { D: 0, ChildNodes: []Node{}, }, - 0x7fa1488273b0, - NewPositionFromString("line:7:4, line:11:4"), - []Node{}, + 0x7fa1488273b0, + NewPositionFromString("line:7:4, line:11:4"), + []Node{}, }, - `0x2cce280 1`: - testNode{&NonNullAttr{ + `0x2cce280 1`: testNode{&NonNullAttr{ Addr: 0x2cce280, Pos: NewPositionFromString("/sys/cdefs.h:286:44, /bits/mathcalls.h:115:69"), Inherited: false, @@ -32,12 +30,11 @@ func TestNonNullAttr(t *testing.T) { D: 0, ChildNodes: []Node{}, }, - 0x2cce280, - NewPositionFromString("/sys/cdefs.h:286:44, /bits/mathcalls.h:115:69"), - []Node{}, + 0x2cce280, + NewPositionFromString("/sys/cdefs.h:286:44, /bits/mathcalls.h:115:69"), + []Node{}, }, - `0x201ede0 0`: - testNode{&NonNullAttr{ + `0x201ede0 0`: testNode{&NonNullAttr{ Addr: 0x201ede0, Pos: NewPositionFromString("line:145:79, col:93"), Inherited: false, @@ -47,12 +44,11 @@ func TestNonNullAttr(t *testing.T) { D: 0, ChildNodes: []Node{}, }, - 0x201ede0, - NewPositionFromString("line:145:79, col:93"), - []Node{}, + 0x201ede0, + NewPositionFromString("line:145:79, col:93"), + []Node{}, }, - `0x1b89b20 2 3`: - testNode{&NonNullAttr{ + `0x1b89b20 2 3`: testNode{&NonNullAttr{ Addr: 0x1b89b20, Pos: NewPositionFromString("col:76, col:93"), Inherited: false, @@ -62,12 +58,11 @@ func TestNonNullAttr(t *testing.T) { D: 0, ChildNodes: []Node{}, }, - 0x1b89b20, - NewPositionFromString("col:76, col:93"), - []Node{}, + 0x1b89b20, + NewPositionFromString("col:76, col:93"), + []Node{}, }, - `0x55f0219e20d0 0 1 4`: - testNode{&NonNullAttr{ + `0x55f0219e20d0 0 1 4`: testNode{&NonNullAttr{ Addr: 0x55f0219e20d0, Pos: NewPositionFromString("line:717:22, col:42"), Inherited: false, @@ -77,12 +72,11 @@ func TestNonNullAttr(t *testing.T) { D: 0, ChildNodes: []Node{}, }, - 0x55f0219e20d0, - NewPositionFromString("line:717:22, col:42"), - []Node{}, + 0x55f0219e20d0, + NewPositionFromString("line:717:22, col:42"), + []Node{}, }, - `0x248ea60 0 1 2 4`: - testNode{&NonNullAttr{ + `0x248ea60 0 1 2 4`: testNode{&NonNullAttr{ Addr: 0x248ea60, Pos: NewPositionFromString("line:155:26, col:49"), Inherited: false, @@ -92,12 +86,11 @@ func TestNonNullAttr(t *testing.T) { D: 4, ChildNodes: []Node{}, }, - 0x248ea60, - NewPositionFromString("line:155:26, col:49"), - []Node{}, + 0x248ea60, + NewPositionFromString("line:155:26, col:49"), + []Node{}, }, - `0x39cf2b0 Inherited 0 1`: - testNode{&NonNullAttr{ + `0x39cf2b0 Inherited 0 1`: testNode{&NonNullAttr{ Addr: 0x39cf2b0, Pos: NewPositionFromString("col:53"), Inherited: true, @@ -107,9 +100,9 @@ func TestNonNullAttr(t *testing.T) { D: 0, ChildNodes: []Node{}, }, - 0x39cf2b0, - NewPositionFromString("col:53"), - []Node{}, + 0x39cf2b0, + NewPositionFromString("col:53"), + []Node{}, }, } diff --git a/ast/not_tail_called_attr_test.go b/ast/not_tail_called_attr_test.go index 60d06c8..93d0e83 100644 --- a/ast/not_tail_called_attr_test.go +++ b/ast/not_tail_called_attr_test.go @@ -6,15 +6,14 @@ import ( func TestNotTailCalledAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc8fa094558 `: - testNode{&NotTailCalledAttr{ + `0x7fc8fa094558 `: testNode{&NotTailCalledAttr{ Addr: 0x7fc8fa094558, Pos: NewPositionFromString("col:107"), ChildNodes: []Node{}, }, - 0x7fc8fa094558, - NewPositionFromString("col:107"), - []Node{}, + 0x7fc8fa094558, + NewPositionFromString("col:107"), + []Node{}, }, } diff --git a/ast/ns_consumed_attr.go b/ast/ns_consumed_attr.go index 54d84e8..5e6a0e4 100644 --- a/ast/ns_consumed_attr.go +++ b/ast/ns_consumed_attr.go @@ -13,9 +13,9 @@ func parseNSConsumedAttr(line string) Node { "<(?P.*)>(?P.*)", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &NSConsumedAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/ns_consumed_attr_test.go b/ast/ns_consumed_attr_test.go index 71eaf4a..bb75651 100644 --- a/ast/ns_consumed_attr_test.go +++ b/ast/ns_consumed_attr_test.go @@ -6,16 +6,15 @@ import ( func TestNSConsumedAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 content`: - testNode{&NSConsumedAttr{ + `0x7fc0a69091d1 content`: testNode{&NSConsumedAttr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), Content: " content", ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/ns_consumes_self_attr.go b/ast/ns_consumes_self_attr.go index ea7d007..71bb42d 100644 --- a/ast/ns_consumes_self_attr.go +++ b/ast/ns_consumes_self_attr.go @@ -12,9 +12,9 @@ func parseNSConsumesSelfAttr(line string) Node { "<(?P.*)>", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &NSConsumesSelfAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/ns_consumes_self_attr_test.go b/ast/ns_consumes_self_attr_test.go index 2c5850d..cfb0484 100644 --- a/ast/ns_consumes_self_attr_test.go +++ b/ast/ns_consumes_self_attr_test.go @@ -6,15 +6,14 @@ import ( func TestNSConsumesSelfAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 `: - testNode{&NSConsumesSelfAttr{ + `0x7fc0a69091d1 `: testNode{&NSConsumesSelfAttr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/ns_error_domain_attr.go b/ast/ns_error_domain_attr.go index 695b564..ae5ac29 100644 --- a/ast/ns_error_domain_attr.go +++ b/ast/ns_error_domain_attr.go @@ -13,9 +13,9 @@ func parseNSErrorDomainAttr(line string) Node { "<(?P.*)>(?P.*)", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &NSErrorDomainAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/ns_error_domain_attr_test.go b/ast/ns_error_domain_attr_test.go index 9e88b1a..7259f78 100644 --- a/ast/ns_error_domain_attr_test.go +++ b/ast/ns_error_domain_attr_test.go @@ -6,16 +6,15 @@ import ( func TestNSErrorDomainAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 content`: - testNode{&NSErrorDomainAttr{ + `0x7fc0a69091d1 content`: testNode{&NSErrorDomainAttr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), Content: " content", ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/ns_returns_retained_attr.go b/ast/ns_returns_retained_attr.go index 0b3eca4..9511290 100644 --- a/ast/ns_returns_retained_attr.go +++ b/ast/ns_returns_retained_attr.go @@ -12,9 +12,9 @@ func parseNSReturnsRetainedAttr(line string) Node { "<(?P.*)>", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &NSReturnsRetainedAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/ns_returns_retained_attr_test.go b/ast/ns_returns_retained_attr_test.go index a1b50a1..5244da7 100644 --- a/ast/ns_returns_retained_attr_test.go +++ b/ast/ns_returns_retained_attr_test.go @@ -6,15 +6,14 @@ import ( func TestNSReturnsRetainedAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 `: - testNode{&NSReturnsRetainedAttr{ + `0x7fc0a69091d1 `: testNode{&NSReturnsRetainedAttr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/objc_bool_literal_expr.go b/ast/objc_bool_literal_expr.go index 662c34d..a3eb81d 100644 --- a/ast/objc_bool_literal_expr.go +++ b/ast/objc_bool_literal_expr.go @@ -2,12 +2,12 @@ package ast // ObjCBoolLiteralExpr type ObjCBoolLiteralExpr struct { - Addr Address - Pos Position - Type string - Type2 string - Attr string - ChildNodes []Node + Addr Address + Pos Position + Type string + Type2 string + Attr string + ChildNodes []Node } func parseObjCBoolLiteralExpr(line string) Node { @@ -18,17 +18,17 @@ func parseObjCBoolLiteralExpr(line string) Node { (?P.*)`, line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &ObjCBoolLiteralExpr{ - Addr: ParseAddress(groups["address"]), - Pos: NewPositionFromString(groups["position"]), - Type: removeQuotes(groups["type"]), - Type2: groups["type2"], - Attr: groups["attr"], - ChildNodes: []Node{}, + Addr: ParseAddress(groups["address"]), + Pos: NewPositionFromString(groups["position"]), + Type: removeQuotes(groups["type"]), + Type2: groups["type2"], + Attr: groups["attr"], + ChildNodes: []Node{}, } } diff --git a/ast/objc_bool_literal_expr_test.go b/ast/objc_bool_literal_expr_test.go index ed533e5..c93076a 100644 --- a/ast/objc_bool_literal_expr_test.go +++ b/ast/objc_bool_literal_expr_test.go @@ -6,31 +6,29 @@ import ( func TestObjCBoolLiteralExpr(t *testing.T) { nodes := map[string]testNode{ - `0x7fcd0f9e7fe8 'BOOL':'signed char' __objc_yes`: - testNode{&ObjCBoolLiteralExpr{ - Addr: 0x7fcd0f9e7fe8, - Pos: NewPositionFromString("col:13"), - Type: "BOOL", - Type2: ":'signed char'", - Attr: " __objc_yes", - ChildNodes: []Node{}, + `0x7fcd0f9e7fe8 'BOOL':'signed char' __objc_yes`: testNode{&ObjCBoolLiteralExpr{ + Addr: 0x7fcd0f9e7fe8, + Pos: NewPositionFromString("col:13"), + Type: "BOOL", + Type2: ":'signed char'", + Attr: " __objc_yes", + ChildNodes: []Node{}, }, - 0x7fcd0f9e7fe8, - NewPositionFromString("col:13"), - []Node{}, + 0x7fcd0f9e7fe8, + NewPositionFromString("col:13"), + []Node{}, }, - `0x7fcd0f9ed000 'BOOL':'signed char' __objc_no`: - testNode{&ObjCBoolLiteralExpr{ - Addr: 0x7fcd0f9ed000, - Pos: NewPositionFromString("col:13"), - Type: "BOOL", - Type2: ":'signed char'", - Attr: " __objc_no", - ChildNodes: []Node{}, + `0x7fcd0f9ed000 'BOOL':'signed char' __objc_no`: testNode{&ObjCBoolLiteralExpr{ + Addr: 0x7fcd0f9ed000, + Pos: NewPositionFromString("col:13"), + Type: "BOOL", + Type2: ":'signed char'", + Attr: " __objc_no", + ChildNodes: []Node{}, }, - 0x7fcd0f9ed000, - NewPositionFromString("col:13"), - []Node{}, + 0x7fcd0f9ed000, + NewPositionFromString("col:13"), + []Node{}, }, } diff --git a/ast/objc_boxable_attr.go b/ast/objc_boxable_attr.go index 7a9fd18..57c3ce4 100644 --- a/ast/objc_boxable_attr.go +++ b/ast/objc_boxable_attr.go @@ -12,9 +12,9 @@ func parseObjCBoxableAttr(line string) Node { "<(?P.*)>", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &ObjCBoxableAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/objc_boxable_attr_test.go b/ast/objc_boxable_attr_test.go index edd308d..e3747c1 100644 --- a/ast/objc_boxable_attr_test.go +++ b/ast/objc_boxable_attr_test.go @@ -6,15 +6,14 @@ import ( func TestObjCBoxableAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 `: - testNode{&ObjCBoxableAttr{ + `0x7fc0a69091d1 `: testNode{&ObjCBoxableAttr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/objc_bridge_attr.go b/ast/objc_bridge_attr.go index 0452396..c25909d 100644 --- a/ast/objc_bridge_attr.go +++ b/ast/objc_bridge_attr.go @@ -13,9 +13,9 @@ func parseObjCBridgeAttr(line string) Node { "<(?P.*)>(?P.*)", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &ObjCBridgeAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/objc_bridge_attr_test.go b/ast/objc_bridge_attr_test.go index 65bb62f..a8b3c30 100644 --- a/ast/objc_bridge_attr_test.go +++ b/ast/objc_bridge_attr_test.go @@ -6,16 +6,15 @@ import ( func TestObjCBridgeAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 content`: - testNode{&ObjCBridgeAttr{ + `0x7fc0a69091d1 content`: testNode{&ObjCBridgeAttr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), Content: " content", ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/objc_bridge_mutable_attr.go b/ast/objc_bridge_mutable_attr.go index 2154b6a..74850d5 100644 --- a/ast/objc_bridge_mutable_attr.go +++ b/ast/objc_bridge_mutable_attr.go @@ -13,9 +13,9 @@ func parseObjCBridgeMutableAttr(line string) Node { "<(?P.*)>(?P.*)", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &ObjCBridgeMutableAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/objc_bridge_mutable_attr_test.go b/ast/objc_bridge_mutable_attr_test.go index 963c3cd..b043a48 100644 --- a/ast/objc_bridge_mutable_attr_test.go +++ b/ast/objc_bridge_mutable_attr_test.go @@ -6,16 +6,15 @@ import ( func TestObjCBridgeMutableAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 content`: - testNode{&ObjCBridgeMutableAttr{ + `0x7fc0a69091d1 content`: testNode{&ObjCBridgeMutableAttr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), Content: " content", ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/objc_bridge_related_attr.go b/ast/objc_bridge_related_attr.go index b6b0e67..2b882d9 100644 --- a/ast/objc_bridge_related_attr.go +++ b/ast/objc_bridge_related_attr.go @@ -13,9 +13,9 @@ func parseObjCBridgeRelatedAttr(line string) Node { "<(?P.*)>(?P.*)", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &ObjCBridgeRelatedAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/objc_bridge_related_attr_test.go b/ast/objc_bridge_related_attr_test.go index d71a3b7..56feb3b 100644 --- a/ast/objc_bridge_related_attr_test.go +++ b/ast/objc_bridge_related_attr_test.go @@ -6,16 +6,15 @@ import ( func TestObjCBridgeRelatedAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 content`: - testNode{&ObjCBridgeRelatedAttr{ + `0x7fc0a69091d1 content`: testNode{&ObjCBridgeRelatedAttr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), Content: " content", ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/objc_category_decl.go b/ast/objc_category_decl.go index 7f1011f..33fcf86 100644 --- a/ast/objc_category_decl.go +++ b/ast/objc_category_decl.go @@ -1,17 +1,17 @@ package ast import ( -// "fmt" + // "fmt" "strings" ) // ObjCCategoryDecl is node represents a category declaration. type ObjCCategoryDecl struct { - Addr Address - Pos Position - Position2 string - Name string - ChildNodes []Node + Addr Address + Pos Position + Position2 string + Name string + ChildNodes []Node } func parseObjCCategoryDecl(line string) Node { @@ -27,11 +27,11 @@ func parseObjCCategoryDecl(line string) Node { } return &ObjCCategoryDecl{ - Addr: ParseAddress(groups["address"]), - Pos: NewPositionFromString(groups["position"]), + Addr: ParseAddress(groups["address"]), + Pos: NewPositionFromString(groups["position"]), //Position2: strings.TrimSpace(groups["position2"]), - Name: strings.TrimSpace(groups["name"]), - ChildNodes: []Node{}, + Name: strings.TrimSpace(groups["name"]), + ChildNodes: []Node{}, } } diff --git a/ast/objc_category_decl_test.go b/ast/objc_category_decl_test.go index e870a8a..6f458eb 100644 --- a/ast/objc_category_decl_test.go +++ b/ast/objc_category_decl_test.go @@ -6,17 +6,16 @@ import ( func TestObjCCategoryDecl(t *testing.T) { nodes := map[string]testNode{ - `0x7fdef0862430 col:16 NSObject`: - testNode{&ObjCCategoryDecl{ - Addr: 0x7fdef0862430, - Pos: NewPositionFromString("line:120:1, col:16"), - Position2: "", - Name: "NSObject", - ChildNodes: []Node{}, + `0x7fdef0862430 col:16 NSObject`: testNode{&ObjCCategoryDecl{ + Addr: 0x7fdef0862430, + Pos: NewPositionFromString("line:120:1, col:16"), + Position2: "", + Name: "NSObject", + ChildNodes: []Node{}, }, - 0x7fdef0862430, - NewPositionFromString("line:120:1, col:16"), - []Node{}, + 0x7fdef0862430, + NewPositionFromString("line:120:1, col:16"), + []Node{}, }, } diff --git a/ast/objc_designated_initializer_attr.go b/ast/objc_designated_initializer_attr.go index 75085fc..7447016 100644 --- a/ast/objc_designated_initializer_attr.go +++ b/ast/objc_designated_initializer_attr.go @@ -12,9 +12,9 @@ func parseObjCDesignatedInitializerAttr(line string) Node { "<(?P.*)>", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &ObjCDesignatedInitializerAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/objc_designated_initializer_attr_test.go b/ast/objc_designated_initializer_attr_test.go index 90d1c61..babcb69 100644 --- a/ast/objc_designated_initializer_attr_test.go +++ b/ast/objc_designated_initializer_attr_test.go @@ -6,15 +6,14 @@ import ( func TestObjCDesignatedInitializerAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 `: - testNode{&ObjCDesignatedInitializerAttr{ + `0x7fc0a69091d1 `: testNode{&ObjCDesignatedInitializerAttr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/objc_exception_attr.go b/ast/objc_exception_attr.go index a987d29..10d4f34 100644 --- a/ast/objc_exception_attr.go +++ b/ast/objc_exception_attr.go @@ -12,9 +12,9 @@ func parseObjCExceptionAttr(line string) Node { "<(?P.*)>", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &ObjCExceptionAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/objc_exception_attr_test.go b/ast/objc_exception_attr_test.go index b57dddf..1515872 100644 --- a/ast/objc_exception_attr_test.go +++ b/ast/objc_exception_attr_test.go @@ -6,15 +6,14 @@ import ( func TestObjCExceptionAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 `: - testNode{&ObjCExceptionAttr{ + `0x7fc0a69091d1 `: testNode{&ObjCExceptionAttr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/objc_explicit_protocol_impl_attr.go b/ast/objc_explicit_protocol_impl_attr.go index 4385bae..e215c2b 100644 --- a/ast/objc_explicit_protocol_impl_attr.go +++ b/ast/objc_explicit_protocol_impl_attr.go @@ -12,9 +12,9 @@ func parseObjCExplicitProtocolImplAttr(line string) Node { "<(?P.*)>", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &ObjCExplicitProtocolImplAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/objc_explicit_protocol_impl_attr_test.go b/ast/objc_explicit_protocol_impl_attr_test.go index 39ec025..251b3d6 100644 --- a/ast/objc_explicit_protocol_impl_attr_test.go +++ b/ast/objc_explicit_protocol_impl_attr_test.go @@ -6,15 +6,14 @@ import ( func TestObjCExplicitProtocolImplAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 `: - testNode{&ObjCExplicitProtocolImplAttr{ + `0x7fc0a69091d1 `: testNode{&ObjCExplicitProtocolImplAttr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/objc_independent_class_attr.go b/ast/objc_independent_class_attr.go index ea682d8..3c8b229 100644 --- a/ast/objc_independent_class_attr.go +++ b/ast/objc_independent_class_attr.go @@ -12,9 +12,9 @@ func parseObjCIndependentClassAttr(line string) Node { "<(?P.*)>", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &ObjCIndependentClassAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/objc_independent_class_attr_test.go b/ast/objc_independent_class_attr_test.go index b32a59c..f1d6d4f 100644 --- a/ast/objc_independent_class_attr_test.go +++ b/ast/objc_independent_class_attr_test.go @@ -6,15 +6,14 @@ import ( func TestObjCIndependentClassAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 `: - testNode{&ObjCIndependentClassAttr{ + `0x7fc0a69091d1 `: testNode{&ObjCIndependentClassAttr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/objc_interface_decl.go b/ast/objc_interface_decl.go index 540827d..317ef2a 100644 --- a/ast/objc_interface_decl.go +++ b/ast/objc_interface_decl.go @@ -1,18 +1,18 @@ package ast import ( -// "fmt" + // "fmt" "strings" ) // ObjCInterfaceDecl type ObjCInterfaceDecl struct { - Addr Address - Pos Position - Position2 string - Name string - Implicit bool - ChildNodes []Node + Addr Address + Pos Position + Position2 string + Name string + Implicit bool + ChildNodes []Node } func parseObjCInterfaceDecl(line string) Node { @@ -29,12 +29,12 @@ func parseObjCInterfaceDecl(line string) Node { } return &ObjCInterfaceDecl{ - Addr: ParseAddress(groups["address"]), - Pos: NewPositionFromString(groups["position"]), + Addr: ParseAddress(groups["address"]), + Pos: NewPositionFromString(groups["position"]), //Position2: strings.TrimSpace(groups["position2"]), - Name: strings.TrimSpace(groups["name"]), - Implicit: len(groups["implicit"])>0, - ChildNodes: []Node{}, + Name: strings.TrimSpace(groups["name"]), + Implicit: len(groups["implicit"]) > 0, + ChildNodes: []Node{}, } } diff --git a/ast/objc_interface_decl_test.go b/ast/objc_interface_decl_test.go index bcda801..a9c9c37 100644 --- a/ast/objc_interface_decl_test.go +++ b/ast/objc_interface_decl_test.go @@ -6,44 +6,41 @@ import ( func TestObjCInterfaceDecl(t *testing.T) { nodes := map[string]testNode{ - `0x7fdef0862430 col:16 NSObject`: - testNode{&ObjCInterfaceDecl{ - Addr: 0x7fdef0862430, - Pos: NewPositionFromString("line:120:1, col:16"), - Position2: "", - Name: "NSObject", - Implicit: false, - ChildNodes: []Node{}, + `0x7fdef0862430 col:16 NSObject`: testNode{&ObjCInterfaceDecl{ + Addr: 0x7fdef0862430, + Pos: NewPositionFromString("line:120:1, col:16"), + Position2: "", + Name: "NSObject", + Implicit: false, + ChildNodes: []Node{}, }, - 0x7fdef0862430, - NewPositionFromString("line:120:1, col:16"), - []Node{}, + 0x7fdef0862430, + NewPositionFromString("line:120:1, col:16"), + []Node{}, }, - `0x7fdef0862430 prev 0x7fca43341430 col:16 NSObject`: - testNode{&ObjCInterfaceDecl{ - Addr: 0x7fdef0862430, - Pos: NewPositionFromString("line:120:1, col:16"), - Position2: "", - Name: "NSObject", - Implicit: false, - ChildNodes: []Node{}, + `0x7fdef0862430 prev 0x7fca43341430 col:16 NSObject`: testNode{&ObjCInterfaceDecl{ + Addr: 0x7fdef0862430, + Pos: NewPositionFromString("line:120:1, col:16"), + Position2: "", + Name: "NSObject", + Implicit: false, + ChildNodes: []Node{}, }, - 0x7fdef0862430, - NewPositionFromString("line:120:1, col:16"), - []Node{}, + 0x7fdef0862430, + NewPositionFromString("line:120:1, col:16"), + []Node{}, }, - `0x7fdef0862430 <> implicit Protocol`: - testNode{&ObjCInterfaceDecl{ - Addr: 0x7fdef0862430, - Pos: Position{}, - Position2: "", - Name: "Protocol", - Implicit: true, - ChildNodes: []Node{}, + `0x7fdef0862430 <> implicit Protocol`: testNode{&ObjCInterfaceDecl{ + Addr: 0x7fdef0862430, + Pos: Position{}, + Position2: "", + Name: "Protocol", + Implicit: true, + ChildNodes: []Node{}, }, - 0x7fdef0862430, - Position{}, - []Node{}, + 0x7fdef0862430, + Position{}, + []Node{}, }, } diff --git a/ast/objc_interface_test.go b/ast/objc_interface_test.go index 6bde0f4..94db74c 100644 --- a/ast/objc_interface_test.go +++ b/ast/objc_interface_test.go @@ -14,9 +14,9 @@ func TestObjCInterface(t *testing.T) { Super: false, ChildNodes: []Node{}, }, - 0x7f84d10dc1d0, - NewPositionFromString(""), - []Node{}, + 0x7f84d10dc1d0, + NewPositionFromString(""), + []Node{}, }, &i, ) @@ -28,9 +28,9 @@ func TestObjCInterface(t *testing.T) { Super: true, ChildNodes: []Node{}, }, - 0x7f84d10dc1d0, - NewPositionFromString(""), - []Node{}, + 0x7f84d10dc1d0, + NewPositionFromString(""), + []Node{}, }, &i, ) diff --git a/ast/objc_interface_type_test.go b/ast/objc_interface_type_test.go index d600863..dae8ff2 100644 --- a/ast/objc_interface_type_test.go +++ b/ast/objc_interface_type_test.go @@ -6,15 +6,14 @@ import ( func TestObjCInterfaceType(t *testing.T) { nodes := map[string]testNode{ - `0x7fdef0862430 'NSObject'`: - testNode{&ObjCInterfaceType{ - Addr: 0x7fdef0862430, - Type: "NSObject", - ChildNodes: []Node{}, + `0x7fdef0862430 'NSObject'`: testNode{&ObjCInterfaceType{ + Addr: 0x7fdef0862430, + Type: "NSObject", + ChildNodes: []Node{}, }, - 0x7fdef0862430, - NewPositionFromString(""), - []Node{}, + 0x7fdef0862430, + NewPositionFromString(""), + []Node{}, }, } diff --git a/ast/objc_ivar_decl.go b/ast/objc_ivar_decl.go index 28ddc2a..4d40af4 100644 --- a/ast/objc_ivar_decl.go +++ b/ast/objc_ivar_decl.go @@ -6,19 +6,19 @@ import ( // ObjCIvarDecl is node represents an Objective-C property declaration type ObjCIvarDecl struct { - Addr Address - Pos Position - Position2 string - Name string - Type string - Type2 string - Attr string - ChildNodes []Node + Addr Address + Pos Position + Position2 string + Name string + Type string + Type2 string + Attr string + ChildNodes []Node } func parseObjCIvarDecl(line string) Node { groups := groupsFromRegex( - `<(?P.*)> + `<(?P.*)> (?P col:\d+)? (?P.*?) '(?P[^']*?)' @@ -31,14 +31,14 @@ func parseObjCIvarDecl(line string) Node { } return &ObjCIvarDecl{ - Addr: ParseAddress(groups["address"]), - Pos: NewPositionFromString(groups["position"]), - Position2: strings.TrimSpace(groups["position2"]), - Name: strings.TrimSpace(groups["name"]), - Type: groups["type"], + Addr: ParseAddress(groups["address"]), + Pos: NewPositionFromString(groups["position"]), + Position2: strings.TrimSpace(groups["position2"]), + Name: strings.TrimSpace(groups["name"]), + Type: groups["type"], //Type2: strings.TrimSpace(groups["type2"]), - Attr: strings.TrimSpace(groups["attr"]), - ChildNodes: []Node{}, + Attr: strings.TrimSpace(groups["attr"]), + ChildNodes: []Node{}, } } diff --git a/ast/objc_ivar_decl_test.go b/ast/objc_ivar_decl_test.go index 142d240..11f90bc 100644 --- a/ast/objc_ivar_decl_test.go +++ b/ast/objc_ivar_decl_test.go @@ -6,20 +6,19 @@ import ( func TestObjCIvarDecl(t *testing.T) { nodes := map[string]testNode{ - `0x7fcd103e8270 col:11 isa 'Class':'Class' protected`: - testNode{&ObjCIvarDecl{ - Addr: 0x7fcd103e8270, - Pos: NewPositionFromString("/usr/include/objc/NSObject.h:56:5, col:11"), - Position2: "col:11", - Name: "isa", - Type: "Class", - Type2: "", - Attr: "protected", - ChildNodes: []Node{}, + `0x7fcd103e8270 col:11 isa 'Class':'Class' protected`: testNode{&ObjCIvarDecl{ + Addr: 0x7fcd103e8270, + Pos: NewPositionFromString("/usr/include/objc/NSObject.h:56:5, col:11"), + Position2: "col:11", + Name: "isa", + Type: "Class", + Type2: "", + Attr: "protected", + ChildNodes: []Node{}, }, - 0x7fcd103e8270, - NewPositionFromString("/usr/include/objc/NSObject.h:56:5, col:11"), - []Node{}, + 0x7fcd103e8270, + NewPositionFromString("/usr/include/objc/NSObject.h:56:5, col:11"), + []Node{}, }, } diff --git a/ast/objc_message_expr.go b/ast/objc_message_expr.go index 7a6da7d..ff57128 100644 --- a/ast/objc_message_expr.go +++ b/ast/objc_message_expr.go @@ -13,9 +13,9 @@ func parseObjCMessageExpr(line string) Node { "<(?P.*)>(?P.*)", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &ObjCMessageExpr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/objc_message_expr_test.go b/ast/objc_message_expr_test.go index 515b8c1..babcef7 100644 --- a/ast/objc_message_expr_test.go +++ b/ast/objc_message_expr_test.go @@ -6,16 +6,15 @@ import ( func TestObjCMessageExpr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 content`: - testNode{&ObjCMessageExpr{ + `0x7fc0a69091d1 content`: testNode{&ObjCMessageExpr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), Content: " content", ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/objc_method_decl.go b/ast/objc_method_decl.go index ed31b60..4405ce9 100644 --- a/ast/objc_method_decl.go +++ b/ast/objc_method_decl.go @@ -6,22 +6,22 @@ import ( // ObjCMethodDecl is node represents an Objective-C method declaration type ObjCMethodDecl struct { - Addr Address - Pos Position - Position2 string - Implicit bool - ClassMethod bool - Name string - Parameters []string - Type string - Type2 string - Attr string - ChildNodes []Node + Addr Address + Pos Position + Position2 string + Implicit bool + ClassMethod bool + Name string + Parameters []string + Type string + Type2 string + Attr string + ChildNodes []Node } func parseObjCMethodDecl(line string) Node { groups := groupsFromRegex( - `(?:prev (?P0x[0-9a-f]+) )? + `(?:prev (?P0x[0-9a-f]+) )? <(?P.*.*?|.*.*?|.*|.*?)> (?P | col:\d+| line:\d+:\d+)? (?P implicit)? @@ -37,24 +37,24 @@ func parseObjCMethodDecl(line string) Node { } names := strings.TrimSpace(groups["names"]) - parts := strings.Split(strings.TrimSpace(groups["names"]),":") + parts := strings.Split(strings.TrimSpace(groups["names"]), ":") params := []string{} if names[len(names)-1] == ':' { params = parts[:len(parts)-1] } return &ObjCMethodDecl{ - Addr: ParseAddress(groups["address"]), - Pos: NewPositionFromString(groups["position"]), + Addr: ParseAddress(groups["address"]), + Pos: NewPositionFromString(groups["position"]), //Position2: strings.TrimSpace(groups["position2"]), - Implicit: len(groups["implicit"]) > 0, - ClassMethod: groups["methodtype"] == " +", - Name: parts[0], - Parameters: params, - Type: strings.TrimSpace(groups["type"]), + Implicit: len(groups["implicit"]) > 0, + ClassMethod: groups["methodtype"] == " +", + Name: parts[0], + Parameters: params, + Type: strings.TrimSpace(groups["type"]), //Type2: strings.TrimSpace(groups["type2"]), - Attr: strings.TrimSpace(groups["attr"]), - ChildNodes: []Node{}, + Attr: strings.TrimSpace(groups["attr"]), + ChildNodes: []Node{}, } } diff --git a/ast/objc_method_decl_test.go b/ast/objc_method_decl_test.go index 9046c8c..1616114 100644 --- a/ast/objc_method_decl_test.go +++ b/ast/objc_method_decl_test.go @@ -6,107 +6,101 @@ import ( func TestObjCMethodDecl(t *testing.T) { nodes := map[string]testNode{ - `0x7f92a58a7570 col:1 - isEqual: 'BOOL':'signed char'`: - testNode{&ObjCMethodDecl{ - Addr: 0x7f92a58a7570, - Pos: NewPositionFromString("line:17:1, col:27"), - Position2: "", - Name: "isEqual", - Type: "BOOL", - Type2: "", - ClassMethod: false, - Parameters: []string{"isEqual"}, - Implicit: false, - ChildNodes: []Node{}, + `0x7f92a58a7570 col:1 - isEqual: 'BOOL':'signed char'`: testNode{&ObjCMethodDecl{ + Addr: 0x7f92a58a7570, + Pos: NewPositionFromString("line:17:1, col:27"), + Position2: "", + Name: "isEqual", + Type: "BOOL", + Type2: "", + ClassMethod: false, + Parameters: []string{"isEqual"}, + Implicit: false, + ChildNodes: []Node{}, }, - 0x7f92a58a7570, - NewPositionFromString("line:17:1, col:27"), - []Node{}, + 0x7f92a58a7570, + NewPositionFromString("line:17:1, col:27"), + []Node{}, }, - `0x7f92a58a7978 col:1 - self 'instancetype':'id'`: - testNode{&ObjCMethodDecl{ - Addr: 0x7f92a58a7978, - Pos: NewPositionFromString("/usr/include/objc/NSObject.h:22:1, col:21"), - Position2: "", - Name: "self", - Type: "instancetype", - Type2: "", - ClassMethod: false, - Parameters: []string{}, - Implicit: false, - ChildNodes: []Node{}, + `0x7f92a58a7978 col:1 - self 'instancetype':'id'`: testNode{&ObjCMethodDecl{ + Addr: 0x7f92a58a7978, + Pos: NewPositionFromString("/usr/include/objc/NSObject.h:22:1, col:21"), + Position2: "", + Name: "self", + Type: "instancetype", + Type2: "", + ClassMethod: false, + Parameters: []string{}, + Implicit: false, + ChildNodes: []Node{}, }, - 0x7f92a58a7978, - NewPositionFromString("/usr/include/objc/NSObject.h:22:1, col:21"), - []Node{}, + 0x7f92a58a7978, + NewPositionFromString("/usr/include/objc/NSObject.h:22:1, col:21"), + []Node{}, }, - `0x7f92a58a82b0 col:1 - respondsToSelector: 'BOOL':'signed char'`: - testNode{&ObjCMethodDecl{ - Addr: 0x7f92a58a82b0, - Pos: NewPositionFromString("line:34:1, col:42"), - Position2: "", - Name: "respondsToSelector", - Type: "BOOL", - Type2: "", - ClassMethod: false, - Parameters: []string{"respondsToSelector"}, - Implicit: false, - ChildNodes: []Node{}, + `0x7f92a58a82b0 col:1 - respondsToSelector: 'BOOL':'signed char'`: testNode{&ObjCMethodDecl{ + Addr: 0x7f92a58a82b0, + Pos: NewPositionFromString("line:34:1, col:42"), + Position2: "", + Name: "respondsToSelector", + Type: "BOOL", + Type2: "", + ClassMethod: false, + Parameters: []string{"respondsToSelector"}, + Implicit: false, + ChildNodes: []Node{}, }, - 0x7f92a58a82b0, - NewPositionFromString("line:34:1, col:42"), - []Node{}, + 0x7f92a58a82b0, + NewPositionFromString("line:34:1, col:42"), + []Node{}, }, - `0x7f92a58a82b0 col:1 + instancesRespondToSelector: 'BOOL':'signed char'`: - testNode{&ObjCMethodDecl{ - Addr: 0x7f92a58a82b0, - Pos: NewPositionFromString("line:34:1, col:42"), - Position2: "", - Name: "instancesRespondToSelector", - Type: "BOOL", - Type2: "", - ClassMethod: true, - Parameters: []string{"instancesRespondToSelector"}, - Implicit: false, - ChildNodes: []Node{}, + `0x7f92a58a82b0 col:1 + instancesRespondToSelector: 'BOOL':'signed char'`: testNode{&ObjCMethodDecl{ + Addr: 0x7f92a58a82b0, + Pos: NewPositionFromString("line:34:1, col:42"), + Position2: "", + Name: "instancesRespondToSelector", + Type: "BOOL", + Type2: "", + ClassMethod: true, + Parameters: []string{"instancesRespondToSelector"}, + Implicit: false, + ChildNodes: []Node{}, }, - 0x7f92a58a82b0, - NewPositionFromString("line:34:1, col:42"), - []Node{}, + 0x7f92a58a82b0, + NewPositionFromString("line:34:1, col:42"), + []Node{}, }, - `0x7f92a58a7cd8 col:1 - performSelector:withObject:withObject: 'id':'id'`: - testNode{&ObjCMethodDecl{ - Addr: 0x7f92a58a7cd8, - Pos: NewPositionFromString("line:26:1, col:83"), - Position2: "", - Name: "performSelector", - Type: "id", - Type2: "", - ClassMethod: false, - Parameters: []string{"performSelector","withObject","withObject"}, - Implicit: false, - ChildNodes: []Node{}, + `0x7f92a58a7cd8 col:1 - performSelector:withObject:withObject: 'id':'id'`: testNode{&ObjCMethodDecl{ + Addr: 0x7f92a58a7cd8, + Pos: NewPositionFromString("line:26:1, col:83"), + Position2: "", + Name: "performSelector", + Type: "id", + Type2: "", + ClassMethod: false, + Parameters: []string{"performSelector", "withObject", "withObject"}, + Implicit: false, + ChildNodes: []Node{}, }, - 0x7f92a58a7cd8, - NewPositionFromString("line:26:1, col:83"), - []Node{}, + 0x7f92a58a7cd8, + NewPositionFromString("line:26:1, col:83"), + []Node{}, }, - `0x7f92a4459318 col:71 implicit - writableTypeIdentifiersForItemProvider 'NSArray * _Nonnull':'NSArray *'`: - testNode{&ObjCMethodDecl{ - Addr: 0x7f92a4459318, - Pos: NewPositionFromString("line:41:71"), - Position2: "", - Name: "writableTypeIdentifiersForItemProvider", - Type: `NSArray * _Nonnull`, - Type2: "", - ClassMethod: false, - Parameters: []string{}, - Implicit: true, - ChildNodes: []Node{}, + `0x7f92a4459318 col:71 implicit - writableTypeIdentifiersForItemProvider 'NSArray * _Nonnull':'NSArray *'`: testNode{&ObjCMethodDecl{ + Addr: 0x7f92a4459318, + Pos: NewPositionFromString("line:41:71"), + Position2: "", + Name: "writableTypeIdentifiersForItemProvider", + Type: `NSArray * _Nonnull`, + Type2: "", + ClassMethod: false, + Parameters: []string{}, + Implicit: true, + ChildNodes: []Node{}, }, - 0x7f92a4459318, - NewPositionFromString("line:41:71"), - []Node{}, + 0x7f92a4459318, + NewPositionFromString("line:41:71"), + []Node{}, }, } diff --git a/ast/objc_method_test.go b/ast/objc_method_test.go index 7c1ebd1..403e62f 100644 --- a/ast/objc_method_test.go +++ b/ast/objc_method_test.go @@ -13,9 +13,9 @@ func TestObjCMethod(t *testing.T) { Name: `isValid`, ChildNodes: []Node{}, }, - 0x7f84d10dc1d0, - NewPositionFromString(""), - []Node{}, + 0x7f84d10dc1d0, + NewPositionFromString(""), + []Node{}, }, &i, ) @@ -26,9 +26,9 @@ func TestObjCMethod(t *testing.T) { Name: `isValid`, ChildNodes: []Node{}, }, - 0x7f84d10dc1d0, - NewPositionFromString(""), - []Node{}, + 0x7f84d10dc1d0, + NewPositionFromString(""), + []Node{}, }, &i, ) diff --git a/ast/objc_object_pointer_type_test.go b/ast/objc_object_pointer_type_test.go index ef41b62..9b668d4 100644 --- a/ast/objc_object_pointer_type_test.go +++ b/ast/objc_object_pointer_type_test.go @@ -6,35 +6,32 @@ import ( func TestObjCObjectPointerType(t *testing.T) { nodes := map[string]testNode{ - `0x10c101ab0 'NSObject *'`: - testNode{&ObjCObjectPointerType{ + `0x10c101ab0 'NSObject *'`: testNode{&ObjCObjectPointerType{ Addr: 0x10c101ab0, Type: `NSObject *`, ChildNodes: []Node{}, }, - 0x10c101ab0, - NewPositionFromString(""), - []Node{}, + 0x10c101ab0, + NewPositionFromString(""), + []Node{}, }, - `0x7faa18805fc0 'id'`: - testNode{&ObjCObjectPointerType{ + `0x7faa18805fc0 'id'`: testNode{&ObjCObjectPointerType{ Addr: 0x7faa18805fc0, Type: `id`, ChildNodes: []Node{}, }, - 0x7faa18805fc0, - NewPositionFromString(""), - []Node{}, + 0x7faa18805fc0, + NewPositionFromString(""), + []Node{}, }, - `0x7fca45a08a60 'NSAppleEventDescriptor *'`: - testNode{&ObjCObjectPointerType{ + `0x7fca45a08a60 'NSAppleEventDescriptor *'`: testNode{&ObjCObjectPointerType{ Addr: 0x7fca45a08a60, Type: `NSAppleEventDescriptor *`, ChildNodes: []Node{}, }, - 0x7fca45a08a60, - NewPositionFromString(""), - []Node{}, + 0x7fca45a08a60, + NewPositionFromString(""), + []Node{}, }, } diff --git a/ast/objc_object_type_test.go b/ast/objc_object_type_test.go index 7aadba0..e2dc566 100644 --- a/ast/objc_object_type_test.go +++ b/ast/objc_object_type_test.go @@ -6,25 +6,23 @@ import ( func TestObjCObjectType(t *testing.T) { nodes := map[string]testNode{ - `0x10c101ab0 'NSObject'`: - testNode{&ObjCObjectType{ + `0x10c101ab0 'NSObject'`: testNode{&ObjCObjectType{ Addr: 0x10c101ab0, Type: `NSObject`, ChildNodes: []Node{}, }, - 0x10c101ab0, - NewPositionFromString(""), - []Node{}, + 0x10c101ab0, + NewPositionFromString(""), + []Node{}, }, - `0x7faa18805fc0 'id'`: - testNode{&ObjCObjectType{ + `0x7faa18805fc0 'id'`: testNode{&ObjCObjectType{ Addr: 0x7faa18805fc0, Type: `id`, ChildNodes: []Node{}, }, - 0x7faa18805fc0, - NewPositionFromString(""), - []Node{}, + 0x7faa18805fc0, + NewPositionFromString(""), + []Node{}, }, } diff --git a/ast/objc_property_decl.go b/ast/objc_property_decl.go index 964af5e..4fa2d57 100644 --- a/ast/objc_property_decl.go +++ b/ast/objc_property_decl.go @@ -6,19 +6,19 @@ import ( // ObjCPropertyDecl is node represents an Objective-C property declaration type ObjCPropertyDecl struct { - Addr Address - Pos Position - Position2 string - Name string - Type string - Type2 string - Attr string - ChildNodes []Node + Addr Address + Pos Position + Position2 string + Name string + Type string + Type2 string + Attr string + ChildNodes []Node } func parseObjCPropertyDecl(line string) Node { groups := groupsFromRegex( - `(?:prev (?P0x[0-9a-f]+) )? + `(?:prev (?P0x[0-9a-f]+) )? <(?P.*.*?|.*.*?|.*|.*?)> (?P | col:\d+| line:\d+:\d+)? (?P.*?) @@ -32,14 +32,14 @@ func parseObjCPropertyDecl(line string) Node { } return &ObjCPropertyDecl{ - Addr: ParseAddress(groups["address"]), - Pos: NewPositionFromString(groups["position"]), - Position2: strings.TrimSpace(groups["position2"]), - Name: strings.TrimSpace(groups["name"]), - Type: groups["type"], + Addr: ParseAddress(groups["address"]), + Pos: NewPositionFromString(groups["position"]), + Position2: strings.TrimSpace(groups["position2"]), + Name: strings.TrimSpace(groups["name"]), + Type: groups["type"], //Type2: strings.TrimSpace(groups["type2"]), - Attr: strings.TrimSpace(groups["attr"]), - ChildNodes: []Node{}, + Attr: strings.TrimSpace(groups["attr"]), + ChildNodes: []Node{}, } } diff --git a/ast/objc_property_decl_test.go b/ast/objc_property_decl_test.go index 43bd2ab..ad063b3 100644 --- a/ast/objc_property_decl_test.go +++ b/ast/objc_property_decl_test.go @@ -6,35 +6,33 @@ import ( func TestObjCPropertyDecl(t *testing.T) { nodes := map[string]testNode{ - `0x10a9be000 col:46 blueColor 'NSColor * _Nonnull':'NSColor *' readonly atomic strong class`: - testNode{&ObjCPropertyDecl{ - Addr: 0x10a9be000, - Pos: NewPositionFromString("line:157:1, col:46"), - Position2: "col:46", - Name: "blueColor", - Type: `NSColor * _Nonnull`, - Type2: "", - Attr: "readonly atomic strong class", - ChildNodes: []Node{}, + `0x10a9be000 col:46 blueColor 'NSColor * _Nonnull':'NSColor *' readonly atomic strong class`: testNode{&ObjCPropertyDecl{ + Addr: 0x10a9be000, + Pos: NewPositionFromString("line:157:1, col:46"), + Position2: "col:46", + Name: "blueColor", + Type: `NSColor * _Nonnull`, + Type2: "", + Attr: "readonly atomic strong class", + ChildNodes: []Node{}, }, - 0x10a9be000, - NewPositionFromString("line:157:1, col:46"), - []Node{}, + 0x10a9be000, + NewPositionFromString("line:157:1, col:46"), + []Node{}, }, - `0x7fca44e4a180 col:61 undoRegistrationEnabled 'BOOL':'signed char' readonly atomic getter`: - testNode{&ObjCPropertyDecl{ - Addr: 0x7fca44e4a180, - Pos: NewPositionFromString("line:50:1, col:61"), - Position2: "col:61", - Name: "undoRegistrationEnabled", - Type: "BOOL", - Type2: "", - Attr: "readonly atomic getter", - ChildNodes: []Node{}, + `0x7fca44e4a180 col:61 undoRegistrationEnabled 'BOOL':'signed char' readonly atomic getter`: testNode{&ObjCPropertyDecl{ + Addr: 0x7fca44e4a180, + Pos: NewPositionFromString("line:50:1, col:61"), + Position2: "col:61", + Name: "undoRegistrationEnabled", + Type: "BOOL", + Type2: "", + Attr: "readonly atomic getter", + ChildNodes: []Node{}, }, - 0x7fca44e4a180, - NewPositionFromString("line:50:1, col:61"), - []Node{}, + 0x7fca44e4a180, + NewPositionFromString("line:50:1, col:61"), + []Node{}, }, } diff --git a/ast/objc_protocol_decl.go b/ast/objc_protocol_decl.go index 190e617..3b35c1d 100644 --- a/ast/objc_protocol_decl.go +++ b/ast/objc_protocol_decl.go @@ -6,16 +6,16 @@ import ( // ObjCProtocolDecl is node represents an Objective-C property declaration type ObjCProtocolDecl struct { - Addr Address - Pos Position - Position2 string - Name string - ChildNodes []Node + Addr Address + Pos Position + Position2 string + Name string + ChildNodes []Node } func parseObjCProtocolDecl(line string) Node { groups := groupsFromRegex( - `(?:prev (?P0x[0-9a-f]+) )? + `(?:prev (?P0x[0-9a-f]+) )? <(?P.*.*?|.*.*?|.*|.*?)> (?P | col:\d+| line:\d+:\d+)? (?P.*?)`, @@ -26,11 +26,11 @@ func parseObjCProtocolDecl(line string) Node { } return &ObjCProtocolDecl{ - Addr: ParseAddress(groups["address"]), - Pos: NewPositionFromString(groups["position"]), + Addr: ParseAddress(groups["address"]), + Pos: NewPositionFromString(groups["position"]), //Position2: strings.TrimSpace(groups["position2"]), - Name: strings.TrimSpace(groups["name"]), - ChildNodes: []Node{}, + Name: strings.TrimSpace(groups["name"]), + ChildNodes: []Node{}, } } diff --git a/ast/objc_protocol_decl_test.go b/ast/objc_protocol_decl_test.go index ce22a52..db7af77 100644 --- a/ast/objc_protocol_decl_test.go +++ b/ast/objc_protocol_decl_test.go @@ -6,29 +6,27 @@ import ( func TestObjCProtocolDecl(t *testing.T) { nodes := map[string]testNode{ - `0x10a9da630 col:11 NSBrowserDelegate`: - testNode{&ObjCProtocolDecl{ - Addr: 0x10a9da630, - Pos: NewPositionFromString("line:22:1, col:11"), - Position2: "", - Name: "NSBrowserDelegate", - ChildNodes: []Node{}, + `0x10a9da630 col:11 NSBrowserDelegate`: testNode{&ObjCProtocolDecl{ + Addr: 0x10a9da630, + Pos: NewPositionFromString("line:22:1, col:11"), + Position2: "", + Name: "NSBrowserDelegate", + ChildNodes: []Node{}, }, - 0x10a9da630, - NewPositionFromString("line:22:1, col:11"), - []Node{}, + 0x10a9da630, + NewPositionFromString("line:22:1, col:11"), + []Node{}, }, - `0x10c37fc70 line:58:11 NSPrintPanelAccessorizing`: - testNode{&ObjCProtocolDecl{ - Addr: 0x10c37fc70, - Pos: NewPositionFromString("/System/Library/Frameworks/AppKit.framework/Headers/NSPrintPanel.h:58:1, line:70:2"), - Position2: "", - Name: "NSPrintPanelAccessorizing", - ChildNodes: []Node{}, + `0x10c37fc70 line:58:11 NSPrintPanelAccessorizing`: testNode{&ObjCProtocolDecl{ + Addr: 0x10c37fc70, + Pos: NewPositionFromString("/System/Library/Frameworks/AppKit.framework/Headers/NSPrintPanel.h:58:1, line:70:2"), + Position2: "", + Name: "NSPrintPanelAccessorizing", + ChildNodes: []Node{}, }, - 0x10c37fc70, - NewPositionFromString("/System/Library/Frameworks/AppKit.framework/Headers/NSPrintPanel.h:58:1, line:70:2"), - []Node{}, + 0x10c37fc70, + NewPositionFromString("/System/Library/Frameworks/AppKit.framework/Headers/NSPrintPanel.h:58:1, line:70:2"), + []Node{}, }, } diff --git a/ast/objc_protocol_test.go b/ast/objc_protocol_test.go index c71181e..329369d 100644 --- a/ast/objc_protocol_test.go +++ b/ast/objc_protocol_test.go @@ -6,15 +6,14 @@ import ( func TestObjCProtocol(t *testing.T) { nodes := map[string]testNode{ - `0x10c26d630 'NSColorPickingDefault'`: - testNode{&ObjCProtocol{ - Addr: 0x10c26d630, - Name: "NSColorPickingDefault", - ChildNodes: []Node{}, + `0x10c26d630 'NSColorPickingDefault'`: testNode{&ObjCProtocol{ + Addr: 0x10c26d630, + Name: "NSColorPickingDefault", + ChildNodes: []Node{}, }, - 0x10c26d630, - NewPositionFromString(""), - []Node{}, + 0x10c26d630, + NewPositionFromString(""), + []Node{}, }, } diff --git a/ast/objc_requires_super_attr.go b/ast/objc_requires_super_attr.go index 87c254c..bed77f4 100644 --- a/ast/objc_requires_super_attr.go +++ b/ast/objc_requires_super_attr.go @@ -12,9 +12,9 @@ func parseObjCRequiresSuperAttr(line string) Node { "<(?P.*)>", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &ObjCRequiresSuperAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/objc_requires_super_attr_test.go b/ast/objc_requires_super_attr_test.go index 7fe92a0..66c05b4 100644 --- a/ast/objc_requires_super_attr_test.go +++ b/ast/objc_requires_super_attr_test.go @@ -6,15 +6,14 @@ import ( func TestObjCRequiresSuperAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 `: - testNode{&ObjCRequiresSuperAttr{ + `0x7fc0a69091d1 `: testNode{&ObjCRequiresSuperAttr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/objc_returns_inner_pointer_attr.go b/ast/objc_returns_inner_pointer_attr.go index f202dd4..59bc42d 100644 --- a/ast/objc_returns_inner_pointer_attr.go +++ b/ast/objc_returns_inner_pointer_attr.go @@ -13,9 +13,9 @@ func parseObjCReturnsInnerPointerAttr(line string) Node { "<(?P.*)>(?P.*)?", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &ObjCReturnsInnerPointerAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/objc_returns_inner_pointer_attr_test.go b/ast/objc_returns_inner_pointer_attr_test.go index 852c3a8..240eb35 100644 --- a/ast/objc_returns_inner_pointer_attr_test.go +++ b/ast/objc_returns_inner_pointer_attr_test.go @@ -6,16 +6,15 @@ import ( func TestObjCReturnsInnerPointerAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 content`: - testNode{&ObjCReturnsInnerPointerAttr{ + `0x7fc0a69091d1 content`: testNode{&ObjCReturnsInnerPointerAttr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), Content: " content", ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/objc_root_class_attr.go b/ast/objc_root_class_attr.go index 5e35797..9c090bf 100644 --- a/ast/objc_root_class_attr.go +++ b/ast/objc_root_class_attr.go @@ -12,9 +12,9 @@ func parseObjCRootClassAttr(line string) Node { "<(?P.*)>", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &ObjCRootClassAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/objc_root_class_attr_test.go b/ast/objc_root_class_attr_test.go index 74b48c1..00604ad 100644 --- a/ast/objc_root_class_attr_test.go +++ b/ast/objc_root_class_attr_test.go @@ -6,15 +6,14 @@ import ( func TestObjCRootClassAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 `: - testNode{&ObjCRootClassAttr{ + `0x7fc0a69091d1 `: testNode{&ObjCRootClassAttr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/objc_type_param_decl.go b/ast/objc_type_param_decl.go index d3f81d2..2770fa5 100644 --- a/ast/objc_type_param_decl.go +++ b/ast/objc_type_param_decl.go @@ -41,15 +41,15 @@ func parseObjCTypeParamDecl(line string) Node { }*/ return &ObjCTypeParamDecl{ - Addr: ParseAddress(groups["address"]), - Pos: NewPositionFromString(groups["position"]), + Addr: ParseAddress(groups["address"]), + Pos: NewPositionFromString(groups["position"]), //Position2: strings.TrimSpace(groups["position2"]), - Name: strings.TrimSpace(groups["name"]), - Type: groups["type"], + Name: strings.TrimSpace(groups["name"]), + Type: groups["type"], //Type2: type2, IsReferenced: len(groups["referenced"]) > 0, IsCovariant: len(groups["covariant"]) > 0, - IsBounded : len(groups["bounded"]) > 0, + IsBounded: len(groups["bounded"]) > 0, ChildNodes: []Node{}, } } diff --git a/ast/objc_type_param_decl_test.go b/ast/objc_type_param_decl_test.go index 417552e..d4cf0cd 100644 --- a/ast/objc_type_param_decl_test.go +++ b/ast/objc_type_param_decl_test.go @@ -6,8 +6,7 @@ import ( func TestObjCTypeParamDecl(t *testing.T) { nodes := map[string]testNode{ - `0x10c2d1a78 col:27 AnchorType 'id':'id'`: - testNode{&ObjCTypeParamDecl{ + `0x10c2d1a78 col:27 AnchorType 'id':'id'`: testNode{&ObjCTypeParamDecl{ Addr: 0x10c2d1a78, Pos: NewPositionFromString("col:27"), Position2: "", @@ -19,12 +18,11 @@ func TestObjCTypeParamDecl(t *testing.T) { IsBounded: false, ChildNodes: []Node{}, }, - 0x10c2d1a78, - NewPositionFromString("col:27"), - []Node{}, + 0x10c2d1a78, + NewPositionFromString("col:27"), + []Node{}, }, - `0x7faa181df328 col:16 ObjectType covariant 'id':'id'`: - testNode{&ObjCTypeParamDecl{ + `0x7faa181df328 col:16 ObjectType covariant 'id':'id'`: testNode{&ObjCTypeParamDecl{ Addr: 0x7faa181df328, Pos: NewPositionFromString("col:16"), Position2: "", @@ -36,12 +34,11 @@ func TestObjCTypeParamDecl(t *testing.T) { IsBounded: false, ChildNodes: []Node{}, }, - 0x7faa181df328, - NewPositionFromString("col:16"), - []Node{}, + 0x7faa181df328, + NewPositionFromString("col:16"), + []Node{}, }, - `0x7faa18216cf0 col:26 referenced UnitType bounded 'NSUnit *'`: - testNode{&ObjCTypeParamDecl{ + `0x7faa18216cf0 col:26 referenced UnitType bounded 'NSUnit *'`: testNode{&ObjCTypeParamDecl{ Addr: 0x7faa18216cf0, Pos: NewPositionFromString("col:26, col:43"), Position2: "", @@ -53,12 +50,11 @@ func TestObjCTypeParamDecl(t *testing.T) { IsBounded: true, ChildNodes: []Node{}, }, - 0x7faa18216cf0, - NewPositionFromString("col:26, col:43"), - []Node{}, + 0x7faa18216cf0, + NewPositionFromString("col:26, col:43"), + []Node{}, }, - `0x7faa18ba2ba8 col:25 referenced K covariant 'id':'id'`: - testNode{&ObjCTypeParamDecl{ + `0x7faa18ba2ba8 col:25 referenced K covariant 'id':'id'`: testNode{&ObjCTypeParamDecl{ Addr: 0x7faa18ba2ba8, Pos: NewPositionFromString("col:25"), Position2: "", @@ -70,12 +66,11 @@ func TestObjCTypeParamDecl(t *testing.T) { IsBounded: false, ChildNodes: []Node{}, }, - 0x7faa18ba2ba8, - NewPositionFromString("col:25"), - []Node{}, + 0x7faa18ba2ba8, + NewPositionFromString("col:25"), + []Node{}, }, - `0x7faa18ba2c18 col:28 V covariant 'id':'id'`: - testNode{&ObjCTypeParamDecl{ + `0x7faa18ba2c18 col:28 V covariant 'id':'id'`: testNode{&ObjCTypeParamDecl{ Addr: 0x7faa18ba2c18, Pos: NewPositionFromString("col:28"), Position2: "", @@ -87,9 +82,9 @@ func TestObjCTypeParamDecl(t *testing.T) { IsBounded: false, ChildNodes: []Node{}, }, - 0x7faa18ba2c18, - NewPositionFromString("col:28"), - []Node{}, + 0x7faa18ba2c18, + NewPositionFromString("col:28"), + []Node{}, }, } diff --git a/ast/offset_of_expr.go b/ast/offset_of_expr.go index fa4799b..5eea079 100644 --- a/ast/offset_of_expr.go +++ b/ast/offset_of_expr.go @@ -13,9 +13,9 @@ func parseOffsetOfExpr(line string) Node { "<(?P.*)> '(?P.*)'", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &OffsetOfExpr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/offset_of_expr_test.go b/ast/offset_of_expr_test.go index 8848bb3..96a3bf4 100644 --- a/ast/offset_of_expr_test.go +++ b/ast/offset_of_expr_test.go @@ -6,16 +6,15 @@ import ( func TestOffsetOfExpr(t *testing.T) { nodes := map[string]testNode{ - `0x7fa855aab838 'unsigned long'`: - testNode{&OffsetOfExpr{ + `0x7fa855aab838 'unsigned long'`: testNode{&OffsetOfExpr{ Addr: 0x7fa855aab838, Pos: NewPositionFromString("col:63, col:95"), Type: "unsigned long", ChildNodes: []Node{}, }, - 0x7fa855aab838, - NewPositionFromString("col:63, col:95"), - []Node{}, + 0x7fa855aab838, + NewPositionFromString("col:63, col:95"), + []Node{}, }, } diff --git a/ast/packed_attr.go b/ast/packed_attr.go index 56b3e24..d6daf7a 100644 --- a/ast/packed_attr.go +++ b/ast/packed_attr.go @@ -13,9 +13,9 @@ func parsePackedAttr(line string) Node { "<(?P.*)>", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &PackedAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/packed_attr_test.go b/ast/packed_attr_test.go index 1c52493..a2571bc 100644 --- a/ast/packed_attr_test.go +++ b/ast/packed_attr_test.go @@ -6,15 +6,14 @@ import ( func TestPackedAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fae33b1ed40 `: - testNode{&PackedAttr{ + `0x7fae33b1ed40 `: testNode{&PackedAttr{ Addr: 0x7fae33b1ed40, Pos: NewPositionFromString("line:551:18"), ChildNodes: []Node{}, }, - 0x7fae33b1ed40, - NewPositionFromString("line:551:18"), - []Node{}, + 0x7fae33b1ed40, + NewPositionFromString("line:551:18"), + []Node{}, }, } diff --git a/ast/paragraph_comment.go b/ast/paragraph_comment.go index 1d9ea54..fadacb4 100644 --- a/ast/paragraph_comment.go +++ b/ast/paragraph_comment.go @@ -12,9 +12,9 @@ func parseParagraphComment(line string) Node { `<(?P.*)>`, line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &ParagraphComment{ Addr: ParseAddress(groups["address"]), diff --git a/ast/paragraph_comment_test.go b/ast/paragraph_comment_test.go index b6adf87..946d634 100644 --- a/ast/paragraph_comment_test.go +++ b/ast/paragraph_comment_test.go @@ -6,15 +6,14 @@ import ( func TestParagraphComment(t *testing.T) { nodes := map[string]testNode{ - `0x3860920 `: - testNode{&ParagraphComment{ + `0x3860920 `: testNode{&ParagraphComment{ Addr: 0x3860920, Pos: NewPositionFromString("line:10176:4, line:10180:45"), ChildNodes: []Node{}, }, - 0x3860920, - NewPositionFromString("line:10176:4, line:10180:45"), - []Node{}, + 0x3860920, + NewPositionFromString("line:10176:4, line:10180:45"), + []Node{}, }, } diff --git a/ast/param_command_comment.go b/ast/param_command_comment.go index 8b59c68..ad3ccc2 100644 --- a/ast/param_command_comment.go +++ b/ast/param_command_comment.go @@ -13,9 +13,9 @@ func parseParamCommandComment(line string) Node { `<(?P.*)> (?P.*)`, line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &ParamCommandComment{ Addr: ParseAddress(groups["address"]), diff --git a/ast/param_command_comment_test.go b/ast/param_command_comment_test.go index 0345cdf..5b666f4 100644 --- a/ast/param_command_comment_test.go +++ b/ast/param_command_comment_test.go @@ -6,16 +6,15 @@ import ( func TestParamCommandComment(t *testing.T) { nodes := map[string]testNode{ - `0x104bca8d0 [in] implicitly Param="__attr" ParamIndex=0`: - testNode{&ParamCommandComment{ + `0x104bca8d0 [in] implicitly Param="__attr" ParamIndex=0`: testNode{&ParamCommandComment{ Addr: 0x104bca8d0, Pos: NewPositionFromString("col:4, line:59:45"), Other: "[in] implicitly Param=\"__attr\" ParamIndex=0", ChildNodes: []Node{}, }, - 0x104bca8d0, - NewPositionFromString("col:4, line:59:45"), - []Node{}, + 0x104bca8d0, + NewPositionFromString("col:4, line:59:45"), + []Node{}, }, } diff --git a/ast/paren_expr.go b/ast/paren_expr.go index d4e7b79..67af0fa 100644 --- a/ast/paren_expr.go +++ b/ast/paren_expr.go @@ -19,9 +19,9 @@ func parseParenExpr(line string) Node { `, line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &ParenExpr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/paren_expr_test.go b/ast/paren_expr_test.go index 47023ca..e626c1b 100644 --- a/ast/paren_expr_test.go +++ b/ast/paren_expr_test.go @@ -6,8 +6,7 @@ import ( func TestParenExpr(t *testing.T) { nodes := map[string]testNode{ - `0x7fb0bc8b2308 'unsigned char'`: - testNode{&ParenExpr{ + `0x7fb0bc8b2308 'unsigned char'`: testNode{&ParenExpr{ Addr: 0x7fb0bc8b2308, Pos: NewPositionFromString("col:10, col:25"), Type: "unsigned char", @@ -16,12 +15,11 @@ func TestParenExpr(t *testing.T) { IsBitfield: false, ChildNodes: []Node{}, }, - 0x7fb0bc8b2308, - NewPositionFromString("col:10, col:25"), - []Node{}, + 0x7fb0bc8b2308, + NewPositionFromString("col:10, col:25"), + []Node{}, }, - `0x1ff8708 'T_ENUM':'T_ENUM' lvalue`: - testNode{&ParenExpr{ + `0x1ff8708 'T_ENUM':'T_ENUM' lvalue`: testNode{&ParenExpr{ Addr: 0x1ff8708, Pos: NewPositionFromString("col:14, col:17"), Type: "T_ENUM", @@ -30,12 +28,11 @@ func TestParenExpr(t *testing.T) { IsBitfield: false, ChildNodes: []Node{}, }, - 0x1ff8708, - NewPositionFromString("col:14, col:17"), - []Node{}, + 0x1ff8708, + NewPositionFromString("col:14, col:17"), + []Node{}, }, - `0x55efc60798b0 'bft':'unsigned int' lvalue bitfield`: - testNode{&ParenExpr{ + `0x55efc60798b0 'bft':'unsigned int' lvalue bitfield`: testNode{&ParenExpr{ Addr: 0x55efc60798b0, Pos: NewPositionFromString("col:15, col:27"), Type: "bft", @@ -44,9 +41,9 @@ func TestParenExpr(t *testing.T) { IsBitfield: true, ChildNodes: []Node{}, }, - 0x55efc60798b0, - NewPositionFromString("col:15, col:27"), - []Node{}, + 0x55efc60798b0, + NewPositionFromString("col:15, col:27"), + []Node{}, }, } diff --git a/ast/paren_type.go b/ast/paren_type.go index 927e6c7..27f7392 100644 --- a/ast/paren_type.go +++ b/ast/paren_type.go @@ -10,9 +10,9 @@ type ParenType struct { func parseParenType(line string) Node { groups := groupsFromRegex(`'(?P.*?)' sugar`, line) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &ParenType{ Addr: ParseAddress(groups["address"]), diff --git a/ast/paren_type_test.go b/ast/paren_type_test.go index 96b0c1d..11b7ab0 100644 --- a/ast/paren_type_test.go +++ b/ast/paren_type_test.go @@ -6,16 +6,15 @@ import ( func TestParenType(t *testing.T) { nodes := map[string]testNode{ - `0x7faf820a4c60 'void (int)' sugar`: - testNode{&ParenType{ + `0x7faf820a4c60 'void (int)' sugar`: testNode{&ParenType{ Addr: 0x7faf820a4c60, Type: "void (int)", Sugar: true, ChildNodes: []Node{}, }, - 0x7faf820a4c60, - NewPositionFromString(""), - []Node{}, + 0x7faf820a4c60, + NewPositionFromString(""), + []Node{}, }, } diff --git a/ast/parm_var_decl.go b/ast/parm_var_decl.go index 66eaf65..7e69acc 100644 --- a/ast/parm_var_decl.go +++ b/ast/parm_var_decl.go @@ -46,11 +46,11 @@ func parseParmVarDecl(line string) Node { } return &ParmVarDecl{ - Addr: ParseAddress(groups["address"]), - Pos: NewPositionFromString(groups["position"]), - Position2: strings.TrimSpace(groups["position2"]), - Name: strings.TrimSpace(groups["name"]), - Type: groups["type"], + Addr: ParseAddress(groups["address"]), + Pos: NewPositionFromString(groups["position"]), + Position2: strings.TrimSpace(groups["position2"]), + Name: strings.TrimSpace(groups["name"]), + Type: groups["type"], //Type2: type2, IsUsed: len(groups["used"]) > 0, IsReferenced: len(groups["referenced"]) > 0, diff --git a/ast/parm_var_decl_test.go b/ast/parm_var_decl_test.go index ef20b55..98cc659 100644 --- a/ast/parm_var_decl_test.go +++ b/ast/parm_var_decl_test.go @@ -6,8 +6,7 @@ import ( func TestParmVarDecl(t *testing.T) { nodes := map[string]testNode{ - `0x7f973380f000 col:17 'int'`: - testNode{&ParmVarDecl{ + `0x7f973380f000 col:17 'int'`: testNode{&ParmVarDecl{ Addr: 0x7f973380f000, Pos: NewPositionFromString("col:14"), Position2: "col:17", @@ -19,12 +18,11 @@ func TestParmVarDecl(t *testing.T) { IsRegister: false, ChildNodes: []Node{}, }, - 0x7f973380f000, - NewPositionFromString("col:14"), - []Node{}, + 0x7f973380f000, + NewPositionFromString("col:14"), + []Node{}, }, - `0x7f973380f070 col:31 'const char *'`: - testNode{&ParmVarDecl{ + `0x7f973380f070 col:31 'const char *'`: testNode{&ParmVarDecl{ Addr: 0x7f973380f070, Pos: NewPositionFromString("col:19, col:30"), Position2: "col:31", @@ -35,12 +33,11 @@ func TestParmVarDecl(t *testing.T) { IsReferenced: false, ChildNodes: []Node{}, }, - 0x7f973380f070, - NewPositionFromString("col:19, col:30"), - []Node{}, + 0x7f973380f070, + NewPositionFromString("col:19, col:30"), + []Node{}, }, - `0x7f9733816e50 col:37 __filename 'const char *__restrict'`: - testNode{&ParmVarDecl{ + `0x7f9733816e50 col:37 __filename 'const char *__restrict'`: testNode{&ParmVarDecl{ Addr: 0x7f9733816e50, Pos: NewPositionFromString("col:13, col:37"), Position2: "col:37", @@ -52,12 +49,11 @@ func TestParmVarDecl(t *testing.T) { IsRegister: false, ChildNodes: []Node{}, }, - 0x7f9733816e50, - NewPositionFromString("col:13, col:37"), - []Node{}, + 0x7f9733816e50, + NewPositionFromString("col:13, col:37"), + []Node{}, }, - `0x7f9733817418 <> 'FILE *'`: - testNode{&ParmVarDecl{ + `0x7f9733817418 <> 'FILE *'`: testNode{&ParmVarDecl{ Addr: 0x7f9733817418, Pos: NewPositionFromString(""), Position2: "", @@ -69,12 +65,11 @@ func TestParmVarDecl(t *testing.T) { IsRegister: false, ChildNodes: []Node{}, }, - 0x7f9733817418, - NewPositionFromString(""), - []Node{}, + 0x7f9733817418, + NewPositionFromString(""), + []Node{}, }, - `0x7f9733817c30 col:47 __size 'size_t':'unsigned long'`: - testNode{&ParmVarDecl{ + `0x7f9733817c30 col:47 __size 'size_t':'unsigned long'`: testNode{&ParmVarDecl{ Addr: 0x7f9733817c30, Pos: NewPositionFromString("col:40, col:47"), Position2: "col:47", @@ -86,12 +81,11 @@ func TestParmVarDecl(t *testing.T) { IsRegister: false, ChildNodes: []Node{}, }, - 0x7f9733817c30, - NewPositionFromString("col:40, col:47"), - []Node{}, + 0x7f9733817c30, + NewPositionFromString("col:40, col:47"), + []Node{}, }, - `0x7f973382fa10 col:34 'int (* _Nullable)(void *, char *, int)':'int (*)(void *, char *, int)'`: - testNode{&ParmVarDecl{ + `0x7f973382fa10 col:34 'int (* _Nullable)(void *, char *, int)':'int (*)(void *, char *, int)'`: testNode{&ParmVarDecl{ Addr: 0x7f973382fa10, Pos: NewPositionFromString("line:476:18, col:25"), Position2: "col:34", @@ -103,12 +97,11 @@ func TestParmVarDecl(t *testing.T) { IsRegister: false, ChildNodes: []Node{}, }, - 0x7f973382fa10, - NewPositionFromString("line:476:18, col:25"), - []Node{}, + 0x7f973382fa10, + NewPositionFromString("line:476:18, col:25"), + []Node{}, }, - `0x7f97338355b8 col:14 used argc 'int'`: - testNode{&ParmVarDecl{ + `0x7f97338355b8 col:14 used argc 'int'`: testNode{&ParmVarDecl{ Addr: 0x7f97338355b8, Pos: NewPositionFromString("col:10, col:14"), Position2: "col:14", @@ -120,12 +113,11 @@ func TestParmVarDecl(t *testing.T) { IsRegister: false, ChildNodes: []Node{}, }, - 0x7f97338355b8, - NewPositionFromString("col:10, col:14"), - []Node{}, + 0x7f97338355b8, + NewPositionFromString("col:10, col:14"), + []Node{}, }, - `0x1d82850 col:16 referenced foo 'char *':'char *'`: - testNode{&ParmVarDecl{ + `0x1d82850 col:16 referenced foo 'char *':'char *'`: testNode{&ParmVarDecl{ Addr: 0x1d82850, Pos: NewPositionFromString("col:11, col:22"), Position2: "col:16", @@ -137,12 +129,11 @@ func TestParmVarDecl(t *testing.T) { IsRegister: false, ChildNodes: []Node{}, }, - 0x1d82850, - NewPositionFromString("col:11, col:22"), - []Node{}, + 0x1d82850, + NewPositionFromString("col:11, col:22"), + []Node{}, }, - `0x7f95f30ed9d0 col:51 used eptr 'const char *' register`: - testNode{&ParmVarDecl{ + `0x7f95f30ed9d0 col:51 used eptr 'const char *' register`: testNode{&ParmVarDecl{ Addr: 0x7f95f30ed9d0, Pos: NewPositionFromString("col:23, col:51"), Position2: "col:51", @@ -154,9 +145,9 @@ func TestParmVarDecl(t *testing.T) { IsRegister: true, ChildNodes: []Node{}, }, - 0x7f95f30ed9d0, - NewPositionFromString("col:23, col:51"), - []Node{}, + 0x7f95f30ed9d0, + NewPositionFromString("col:23, col:51"), + []Node{}, }, } diff --git a/ast/pointer_type_test.go b/ast/pointer_type_test.go index 36c211b..bffa83d 100644 --- a/ast/pointer_type_test.go +++ b/ast/pointer_type_test.go @@ -6,15 +6,14 @@ import ( func TestPointerType(t *testing.T) { nodes := map[string]testNode{ - `0x7fa3b88bbb30 'struct _opaque_pthread_t *'`: - testNode{&PointerType{ + `0x7fa3b88bbb30 'struct _opaque_pthread_t *'`: testNode{&PointerType{ Addr: 0x7fa3b88bbb30, Type: "struct _opaque_pthread_t *", ChildNodes: []Node{}, }, - 0x7fa3b88bbb30, - NewPositionFromString(""), - []Node{}, + 0x7fa3b88bbb30, + NewPositionFromString(""), + []Node{}, }, } diff --git a/ast/position_test.go b/ast/position_test.go index 2eaef0b..bd47369 100644 --- a/ast/position_test.go +++ b/ast/position_test.go @@ -113,7 +113,7 @@ func TestTrackPositions(t *testing.T) { TrackPositions = false t.Run("TrackPositions1", func(t *testing.T) { pos := NewPositionFromString("line:120:1, col:16") - if !reflect.DeepEqual(pos,Position{}) { + if !reflect.DeepEqual(pos, Position{}) { t.Errorf("TrackPositions = false but NewPositionFromString did not return Position{}\n") } }) @@ -126,4 +126,3 @@ func TestTrackPositions(t *testing.T) { }) TrackPositions = true } - diff --git a/ast/predefined_expr.go b/ast/predefined_expr.go index 5ebc7fc..d1c5455 100644 --- a/ast/predefined_expr.go +++ b/ast/predefined_expr.go @@ -15,9 +15,9 @@ func parsePredefinedExpr(line string) Node { "<(?P.*)> '(?P.*)' lvalue (?P.*)", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &PredefinedExpr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/predefined_expr_test.go b/ast/predefined_expr_test.go index 569bc43..39886ad 100644 --- a/ast/predefined_expr_test.go +++ b/ast/predefined_expr_test.go @@ -6,8 +6,7 @@ import ( func TestPredefinedExpr(t *testing.T) { nodes := map[string]testNode{ - `0x33d6e08 'const char [25]' lvalue __PRETTY_FUNCTION__`: - testNode{&PredefinedExpr{ + `0x33d6e08 'const char [25]' lvalue __PRETTY_FUNCTION__`: testNode{&PredefinedExpr{ Addr: 0x33d6e08, Pos: NewPositionFromString("col:30"), Type: "const char [25]", @@ -15,9 +14,9 @@ func TestPredefinedExpr(t *testing.T) { Name: "__PRETTY_FUNCTION__", ChildNodes: []Node{}, }, - 0x33d6e08, - NewPositionFromString("col:30"), - []Node{}, + 0x33d6e08, + NewPositionFromString("col:30"), + []Node{}, }, } diff --git a/ast/pure_attr.go b/ast/pure_attr.go index 407c7f8..280f538 100644 --- a/ast/pure_attr.go +++ b/ast/pure_attr.go @@ -17,9 +17,9 @@ func parsePureAttr(line string) Node { (?P Implicit)?`, line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &PureAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/pure_attr_test.go b/ast/pure_attr_test.go index 44bd809..4692f40 100644 --- a/ast/pure_attr_test.go +++ b/ast/pure_attr_test.go @@ -6,29 +6,27 @@ import ( func TestPureAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fe9eb899198 Implicit`: - testNode{&PureAttr{ + `0x7fe9eb899198 Implicit`: testNode{&PureAttr{ Addr: 0x7fe9eb899198, Pos: NewPositionFromString("col:1"), Implicit: true, Inherited: false, ChildNodes: []Node{}, }, - 0x7fe9eb899198, - NewPositionFromString("col:1"), - []Node{}, + 0x7fe9eb899198, + NewPositionFromString("col:1"), + []Node{}, }, - `0x7fe8d60992a0 Inherited Implicit`: - testNode{&PureAttr{ + `0x7fe8d60992a0 Inherited Implicit`: testNode{&PureAttr{ Addr: 0x7fe8d60992a0, Pos: NewPositionFromString("col:1"), Implicit: true, Inherited: true, ChildNodes: []Node{}, }, - 0x7fe8d60992a0, - NewPositionFromString("col:1"), - []Node{}, + 0x7fe8d60992a0, + NewPositionFromString("col:1"), + []Node{}, }, } diff --git a/ast/qual_type.go b/ast/qual_type.go index 800ae83..430dc92 100644 --- a/ast/qual_type.go +++ b/ast/qual_type.go @@ -13,9 +13,9 @@ func parseQualType(line string) Node { "'(?P.*)' (?P.*)", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &QualType{ Addr: ParseAddress(groups["address"]), diff --git a/ast/qual_type_test.go b/ast/qual_type_test.go index a714eee..fa866be 100644 --- a/ast/qual_type_test.go +++ b/ast/qual_type_test.go @@ -6,16 +6,15 @@ import ( func TestQualType(t *testing.T) { nodes := map[string]testNode{ - `0x7fa3b88bbb31 'struct _opaque_pthread_t *' foo`: - testNode{&QualType{ + `0x7fa3b88bbb31 'struct _opaque_pthread_t *' foo`: testNode{&QualType{ Addr: 0x7fa3b88bbb31, Type: "struct _opaque_pthread_t *", Kind: "foo", ChildNodes: []Node{}, }, - 0x7fa3b88bbb31, - NewPositionFromString(""), - []Node{}, + 0x7fa3b88bbb31, + NewPositionFromString(""), + []Node{}, }, } diff --git a/ast/record.go b/ast/record.go index 000ecd2..beed3fa 100644 --- a/ast/record.go +++ b/ast/record.go @@ -12,9 +12,9 @@ func parseRecord(line string) Node { "'(?P.*)'", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &Record{ Addr: ParseAddress(groups["address"]), diff --git a/ast/record_decl.go b/ast/record_decl.go index fd334ff..4501aa9 100644 --- a/ast/record_decl.go +++ b/ast/record_decl.go @@ -26,9 +26,9 @@ func parseRecordDecl(line string) Node { (?P.*)`, line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } definition := false name := strings.TrimSpace(groups["name"]) diff --git a/ast/record_decl_test.go b/ast/record_decl_test.go index 72a419e..ee95eff 100644 --- a/ast/record_decl_test.go +++ b/ast/record_decl_test.go @@ -6,8 +6,7 @@ import ( func TestRecordDecl(t *testing.T) { nodes := map[string]testNode{ - `0x7f913c0dbb50 line:76:9 union definition`: - testNode{&RecordDecl{ + `0x7f913c0dbb50 line:76:9 union definition`: testNode{&RecordDecl{ Addr: 0x7f913c0dbb50, Pos: NewPositionFromString("line:76:9, line:79:1"), Prev: "", @@ -17,12 +16,11 @@ func TestRecordDecl(t *testing.T) { Definition: true, ChildNodes: []Node{}, }, - 0x7f913c0dbb50, - NewPositionFromString("line:76:9, line:79:1"), - []Node{}, + 0x7f913c0dbb50, + NewPositionFromString("line:76:9, line:79:1"), + []Node{}, }, - `0x7f85360285c8 line:57:8 struct __darwin_pthread_handler_rec definition`: - testNode{&RecordDecl{ + `0x7f85360285c8 line:57:8 struct __darwin_pthread_handler_rec definition`: testNode{&RecordDecl{ Addr: 0x7f85360285c8, Pos: NewPositionFromString("/usr/include/sys/_pthread/_pthread_types.h:57:1, line:61:1"), Prev: "", @@ -32,12 +30,11 @@ func TestRecordDecl(t *testing.T) { Definition: true, ChildNodes: []Node{}, }, - 0x7f85360285c8, - NewPositionFromString("/usr/include/sys/_pthread/_pthread_types.h:57:1, line:61:1"), - []Node{}, + 0x7f85360285c8, + NewPositionFromString("/usr/include/sys/_pthread/_pthread_types.h:57:1, line:61:1"), + []Node{}, }, - `0x7f85370248a0 col:8 struct __sFILEX`: - testNode{&RecordDecl{ + `0x7f85370248a0 col:8 struct __sFILEX`: testNode{&RecordDecl{ Addr: 0x7f85370248a0, Pos: NewPositionFromString("line:94:1, col:8"), Prev: "", @@ -47,12 +44,11 @@ func TestRecordDecl(t *testing.T) { Definition: false, ChildNodes: []Node{}, }, - 0x7f85370248a0, - NewPositionFromString("line:94:1, col:8"), - []Node{}, + 0x7f85370248a0, + NewPositionFromString("line:94:1, col:8"), + []Node{}, }, - `0x5564ed488a10 parent 0x5564ed3ffe00 line:7232:10 struct sqlite3_index_constraint definition`: - testNode{&RecordDecl{ + `0x5564ed488a10 parent 0x5564ed3ffe00 line:7232:10 struct sqlite3_index_constraint definition`: testNode{&RecordDecl{ Addr: 0x5564ed488a10, Pos: NewPositionFromString("line:7232:3, line:7237:3"), Prev: "", @@ -62,12 +58,11 @@ func TestRecordDecl(t *testing.T) { Definition: true, ChildNodes: []Node{}, }, - 0x5564ed488a10, - NewPositionFromString("line:7232:3, line:7237:3"), - []Node{}, + 0x5564ed488a10, + NewPositionFromString("line:7232:3, line:7237:3"), + []Node{}, }, - `0x56454e55e4b8 prev 0x56454e55e360 line:86428:8 struct Incrblob definition`: - testNode{&RecordDecl{ + `0x56454e55e4b8 prev 0x56454e55e360 line:86428:8 struct Incrblob definition`: testNode{&RecordDecl{ Addr: 0x56454e55e4b8, Pos: NewPositionFromString("line:86428:1, line:86437:1"), Prev: "0x56454e55e360", @@ -77,9 +72,9 @@ func TestRecordDecl(t *testing.T) { Definition: true, ChildNodes: []Node{}, }, - 0x56454e55e4b8, - NewPositionFromString("line:86428:1, line:86437:1"), - []Node{}, + 0x56454e55e4b8, + NewPositionFromString("line:86428:1, line:86437:1"), + []Node{}, }, } diff --git a/ast/record_test.go b/ast/record_test.go index 08e88d2..e569b8b 100644 --- a/ast/record_test.go +++ b/ast/record_test.go @@ -6,15 +6,14 @@ import ( func TestRecord(t *testing.T) { nodes := map[string]testNode{ - `0x7fd3ab857950 '__sFILE'`: - testNode{&Record{ + `0x7fd3ab857950 '__sFILE'`: testNode{&Record{ Addr: 0x7fd3ab857950, Type: "__sFILE", ChildNodes: []Node{}, }, - 0x7fd3ab857950, - NewPositionFromString(""), - []Node{}, + 0x7fd3ab857950, + NewPositionFromString(""), + []Node{}, }, } diff --git a/ast/record_type.go b/ast/record_type.go index af9416e..60ebbb1 100644 --- a/ast/record_type.go +++ b/ast/record_type.go @@ -12,9 +12,9 @@ func parseRecordType(line string) Node { "'(?P.*)'", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &RecordType{ Addr: ParseAddress(groups["address"]), diff --git a/ast/record_type_test.go b/ast/record_type_test.go index 655706a..71a91b9 100644 --- a/ast/record_type_test.go +++ b/ast/record_type_test.go @@ -6,15 +6,14 @@ import ( func TestRecordType(t *testing.T) { nodes := map[string]testNode{ - `0x7fd3ab84dda0 'struct _opaque_pthread_condattr_t'`: - testNode{&RecordType{ + `0x7fd3ab84dda0 'struct _opaque_pthread_condattr_t'`: testNode{&RecordType{ Addr: 0x7fd3ab84dda0, Type: "struct _opaque_pthread_condattr_t", ChildNodes: []Node{}, }, - 0x7fd3ab84dda0, - NewPositionFromString(""), - []Node{}, + 0x7fd3ab84dda0, + NewPositionFromString(""), + []Node{}, }, } diff --git a/ast/restrict_attr.go b/ast/restrict_attr.go index 3c5c30b..4366970 100644 --- a/ast/restrict_attr.go +++ b/ast/restrict_attr.go @@ -14,9 +14,9 @@ func parseRestrictAttr(line string) Node { "<(?P.*)> (?P.+)", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &RestrictAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/restrict_attr_test.go b/ast/restrict_attr_test.go index a48fa91..e3c9c50 100644 --- a/ast/restrict_attr_test.go +++ b/ast/restrict_attr_test.go @@ -6,16 +6,15 @@ import ( func TestRestrictAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7f980b858305 foo`: - testNode{&RestrictAttr{ + `0x7f980b858305 foo`: testNode{&RestrictAttr{ Addr: 0x7f980b858305, Pos: NewPositionFromString("line:11:7, line:18:7"), Name: "foo", ChildNodes: []Node{}, }, - 0x7f980b858305, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7f980b858305, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/return_stmt.go b/ast/return_stmt.go index 9474329..b9514de 100644 --- a/ast/return_stmt.go +++ b/ast/return_stmt.go @@ -12,9 +12,9 @@ func parseReturnStmt(line string) Node { "<(?P.*)>", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &ReturnStmt{ Addr: ParseAddress(groups["address"]), diff --git a/ast/return_stmt_test.go b/ast/return_stmt_test.go index 945699f..ef0f01d 100644 --- a/ast/return_stmt_test.go +++ b/ast/return_stmt_test.go @@ -6,15 +6,14 @@ import ( func TestReturnStmt(t *testing.T) { nodes := map[string]testNode{ - `0x7fbb7a8325e0 `: - testNode{&ReturnStmt{ + `0x7fbb7a8325e0 `: testNode{&ReturnStmt{ Addr: 0x7fbb7a8325e0, Pos: NewPositionFromString("line:13:4, col:11"), ChildNodes: []Node{}, }, - 0x7fbb7a8325e0, - NewPositionFromString("line:13:4, col:11"), - []Node{}, + 0x7fbb7a8325e0, + NewPositionFromString("line:13:4, col:11"), + []Node{}, }, } diff --git a/ast/returns_twice_attr.go b/ast/returns_twice_attr.go index f37cee4..356e755 100644 --- a/ast/returns_twice_attr.go +++ b/ast/returns_twice_attr.go @@ -18,9 +18,9 @@ func parseReturnsTwiceAttr(line string) Node { `, line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &ReturnsTwiceAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/returns_twice_attr_test.go b/ast/returns_twice_attr_test.go index f971721..beb60a8 100644 --- a/ast/returns_twice_attr_test.go +++ b/ast/returns_twice_attr_test.go @@ -6,29 +6,27 @@ import ( func TestReturnsTwiceAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7ff8e9091640 Implicit`: - testNode{&ReturnsTwiceAttr{ + `0x7ff8e9091640 Implicit`: testNode{&ReturnsTwiceAttr{ Addr: 0x7ff8e9091640, Pos: NewPositionFromString("col:7"), ChildNodes: []Node{}, Inherited: false, Implicit: true, }, - 0x7ff8e9091640, - NewPositionFromString("col:7"), - []Node{}, + 0x7ff8e9091640, + NewPositionFromString("col:7"), + []Node{}, }, - `0x564a73a5ccc8 Inherited Implicit`: - testNode{&ReturnsTwiceAttr{ + `0x564a73a5ccc8 Inherited Implicit`: testNode{&ReturnsTwiceAttr{ Addr: 0x564a73a5ccc8, Pos: NewPositionFromString("col:16"), ChildNodes: []Node{}, Inherited: true, Implicit: true, }, - 0x564a73a5ccc8, - NewPositionFromString("col:16"), - []Node{}, + 0x564a73a5ccc8, + NewPositionFromString("col:16"), + []Node{}, }, } diff --git a/ast/sentinel_attr_test.go b/ast/sentinel_attr_test.go index a4694fb..57f6595 100644 --- a/ast/sentinel_attr_test.go +++ b/ast/sentinel_attr_test.go @@ -6,17 +6,16 @@ import ( func TestSentinelAttr(t *testing.T) { nodes := map[string]testNode{ - `0x346df70 0 0`: - testNode{&SentinelAttr{ + `0x346df70 0 0`: testNode{&SentinelAttr{ Addr: 0x346df70, Pos: NewPositionFromString("line:3571:19, col:33"), A: 0, B: 0, ChildNodes: []Node{}, }, - 0x346df70, - NewPositionFromString("line:3571:19, col:33"), - []Node{}, + 0x346df70, + NewPositionFromString("line:3571:19, col:33"), + []Node{}, }, } diff --git a/ast/shuffle_vector_expr.go b/ast/shuffle_vector_expr.go index baa71f6..edd041f 100644 --- a/ast/shuffle_vector_expr.go +++ b/ast/shuffle_vector_expr.go @@ -2,11 +2,11 @@ package ast // ShuffleVectorExpr type ShuffleVectorExpr struct { - Addr Address - Pos Position - Type string - Type2 string - ChildNodes []Node + Addr Address + Pos Position + Type string + Type2 string + ChildNodes []Node } func parseShuffleVectorExpr(line string) Node { @@ -16,16 +16,16 @@ func parseShuffleVectorExpr(line string) Node { (?P:'.*?')?`, line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &ShuffleVectorExpr{ - Addr: ParseAddress(groups["address"]), - Pos: NewPositionFromString(groups["position"]), - Type: removeQuotes(groups["type"]), - Type2: groups["type2"], - ChildNodes: []Node{}, + Addr: ParseAddress(groups["address"]), + Pos: NewPositionFromString(groups["position"]), + Type: removeQuotes(groups["type"]), + Type2: groups["type2"], + ChildNodes: []Node{}, } } diff --git a/ast/shuffle_vector_expr_test.go b/ast/shuffle_vector_expr_test.go index 90f055a..bcd49b3 100644 --- a/ast/shuffle_vector_expr_test.go +++ b/ast/shuffle_vector_expr_test.go @@ -6,29 +6,27 @@ import ( func TestShuffleVectorExpr(t *testing.T) { nodes := map[string]testNode{ - `0x7fdef0862430 `: - testNode{&ShuffleVectorExpr{ - Addr: 0x7fdef0862430, - Pos: NewPositionFromString("line:120:1, col:16"), - Type: "", - Type2: "", - ChildNodes: []Node{}, + `0x7fdef0862430 `: testNode{&ShuffleVectorExpr{ + Addr: 0x7fdef0862430, + Pos: NewPositionFromString("line:120:1, col:16"), + Type: "", + Type2: "", + ChildNodes: []Node{}, }, - 0x7fdef0862430, - NewPositionFromString("line:120:1, col:16"), - []Node{}, + 0x7fdef0862430, + NewPositionFromString("line:120:1, col:16"), + []Node{}, }, - `0x113368318 '__v4sf':'__attribute__((__vector_size__(4 * sizeof(float)))) float'`: - testNode{&ShuffleVectorExpr{ - Addr: 0x113368318, - Pos: NewPositionFromString("line:1354:20, line:1355:70"), - Type: `__v4sf`, - Type2: `:'__attribute__((__vector_size__(4 * sizeof(float)))) float'`, - ChildNodes: []Node{}, + `0x113368318 '__v4sf':'__attribute__((__vector_size__(4 * sizeof(float)))) float'`: testNode{&ShuffleVectorExpr{ + Addr: 0x113368318, + Pos: NewPositionFromString("line:1354:20, line:1355:70"), + Type: `__v4sf`, + Type2: `:'__attribute__((__vector_size__(4 * sizeof(float)))) float'`, + ChildNodes: []Node{}, }, - 0x113368318, - NewPositionFromString("line:1354:20, line:1355:70"), - []Node{}, + 0x113368318, + NewPositionFromString("line:1354:20, line:1355:70"), + []Node{}, }, } diff --git a/ast/stmt_expr.go b/ast/stmt_expr.go index 0cf71b9..c017faf 100644 --- a/ast/stmt_expr.go +++ b/ast/stmt_expr.go @@ -13,9 +13,9 @@ func parseStmtExpr(line string) Node { "<(?P.*)> '(?P.*)'", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &StmtExpr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/stmt_expr_test.go b/ast/stmt_expr_test.go index 707a474..4353406 100644 --- a/ast/stmt_expr_test.go +++ b/ast/stmt_expr_test.go @@ -6,16 +6,15 @@ import ( func TestStmtExpr(t *testing.T) { nodes := map[string]testNode{ - `0x7ff4f9100d28 'int'`: - testNode{&StmtExpr{ + `0x7ff4f9100d28 'int'`: testNode{&StmtExpr{ Addr: 0x7ff4f9100d28, Pos: NewPositionFromString("col:11, col:18"), Type: "int", ChildNodes: []Node{}, }, - 0x7ff4f9100d28, - NewPositionFromString("col:11, col:18"), - []Node{}, + 0x7ff4f9100d28, + NewPositionFromString("col:11, col:18"), + []Node{}, }, } diff --git a/ast/string_literal.go b/ast/string_literal.go index e327fe8..ece7330 100644 --- a/ast/string_literal.go +++ b/ast/string_literal.go @@ -20,9 +20,9 @@ func parseStringLiteral(line string) Node { `<(?P.*)> '(?P.*)' lvalue (?P".*")`, line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } s, err := strconv.Unquote(groups["value"]) if err != nil { diff --git a/ast/string_literal_test.go b/ast/string_literal_test.go index f9cbf61..f39ee45 100644 --- a/ast/string_literal_test.go +++ b/ast/string_literal_test.go @@ -6,8 +6,7 @@ import ( func TestStringLiteral(t *testing.T) { nodes := map[string]testNode{ - `0x7fe16f0b4d58 'char [45]' lvalue "Number of command line arguments passed: %d\n"`: - testNode{&StringLiteral{ + `0x7fe16f0b4d58 'char [45]' lvalue "Number of command line arguments passed: %d\n"`: testNode{&StringLiteral{ Addr: 0x7fe16f0b4d58, Pos: NewPositionFromString("col:11"), Type: "char [45]", @@ -15,12 +14,11 @@ func TestStringLiteral(t *testing.T) { Value: "Number of command line arguments passed: %d\n", ChildNodes: []Node{}, }, - 0x7fe16f0b4d58, - NewPositionFromString("col:11"), - []Node{}, + 0x7fe16f0b4d58, + NewPositionFromString("col:11"), + []Node{}, }, - `0x22ac548 'char [14]' lvalue "x\vx\000xxx\axx\tx\n"`: - testNode{&StringLiteral{ + `0x22ac548 'char [14]' lvalue "x\vx\000xxx\axx\tx\n"`: testNode{&StringLiteral{ Addr: 0x22ac548, Pos: NewPositionFromString("col:14"), Type: "char [14]", @@ -28,9 +26,9 @@ func TestStringLiteral(t *testing.T) { Value: "x\vx\x00xxx\axx\tx\n", ChildNodes: []Node{}, }, - 0x22ac548, - NewPositionFromString("col:14"), - []Node{}, + 0x22ac548, + NewPositionFromString("col:14"), + []Node{}, }, } diff --git a/ast/swift_bridged_typedef_attr.go b/ast/swift_bridged_typedef_attr.go index 5a00194..c829845 100644 --- a/ast/swift_bridged_typedef_attr.go +++ b/ast/swift_bridged_typedef_attr.go @@ -12,9 +12,9 @@ func parseSwiftBridgedTypedefAttr(line string) Node { "<(?P.*)>", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &SwiftBridgedTypedefAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/swift_bridged_typedef_attr_test.go b/ast/swift_bridged_typedef_attr_test.go index 157fc3f..1c940b0 100644 --- a/ast/swift_bridged_typedef_attr_test.go +++ b/ast/swift_bridged_typedef_attr_test.go @@ -6,15 +6,14 @@ import ( func TestSwiftBridgedTypedefAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 `: - testNode{&SwiftBridgedTypedefAttr{ + `0x7fc0a69091d1 `: testNode{&SwiftBridgedTypedefAttr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/swift_error_attr.go b/ast/swift_error_attr.go index 9c67fd8..a920cfa 100644 --- a/ast/swift_error_attr.go +++ b/ast/swift_error_attr.go @@ -13,9 +13,9 @@ func parseSwiftErrorAttr(line string) Node { "<(?P.*)>(?P.*)", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &SwiftErrorAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/swift_error_attr_test.go b/ast/swift_error_attr_test.go index 89069ef..d7aba3d 100644 --- a/ast/swift_error_attr_test.go +++ b/ast/swift_error_attr_test.go @@ -6,16 +6,15 @@ import ( func TestSwiftErrorAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 content`: - testNode{&SwiftErrorAttr{ + `0x7fc0a69091d1 content`: testNode{&SwiftErrorAttr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), Content: " content", ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/swift_name_attr.go b/ast/swift_name_attr.go index 81646fc..fc53fd2 100644 --- a/ast/swift_name_attr.go +++ b/ast/swift_name_attr.go @@ -13,9 +13,9 @@ func parseSwiftNameAttr(line string) Node { "<(?P.*)>(?P.*)", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &SwiftNameAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/swift_name_attr_test.go b/ast/swift_name_attr_test.go index 6eee785..2ca28ac 100644 --- a/ast/swift_name_attr_test.go +++ b/ast/swift_name_attr_test.go @@ -6,16 +6,15 @@ import ( func TestSwiftNameAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 content`: - testNode{&SwiftNameAttr{ + `0x7fc0a69091d1 content`: testNode{&SwiftNameAttr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), Content: " content", ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/swift_newtype_attr.go b/ast/swift_newtype_attr.go index 953b0fc..9d6fcb0 100644 --- a/ast/swift_newtype_attr.go +++ b/ast/swift_newtype_attr.go @@ -14,9 +14,9 @@ func parseSwiftNewtypeAttr(line string) Node { (?P.*)`, line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &SwiftNewtypeAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/swift_newtype_attr_test.go b/ast/swift_newtype_attr_test.go index 5f14b42..51c1d1a 100644 --- a/ast/swift_newtype_attr_test.go +++ b/ast/swift_newtype_attr_test.go @@ -6,16 +6,15 @@ import ( func TestSwiftNewtypeAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 content`: - testNode{&SwiftNewtypeAttr{ + `0x7fc0a69091d1 content`: testNode{&SwiftNewtypeAttr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), Content: " content", ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/swift_private_attr.go b/ast/swift_private_attr.go index d3319cd..42455f5 100644 --- a/ast/swift_private_attr.go +++ b/ast/swift_private_attr.go @@ -12,9 +12,9 @@ func parseSwiftPrivateAttr(line string) Node { "<(?P.*)>", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &SwiftPrivateAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/swift_private_attr_test.go b/ast/swift_private_attr_test.go index 368a90f..e2954bf 100644 --- a/ast/swift_private_attr_test.go +++ b/ast/swift_private_attr_test.go @@ -6,15 +6,14 @@ import ( func TestSwiftPrivateAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 `: - testNode{&SwiftPrivateAttr{ + `0x7fc0a69091d1 `: testNode{&SwiftPrivateAttr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/switch_stmt.go b/ast/switch_stmt.go index 819edbc..e9c683a 100644 --- a/ast/switch_stmt.go +++ b/ast/switch_stmt.go @@ -9,9 +9,9 @@ type SwitchStmt struct { func parseSwitchStmt(line string) Node { groups := groupsFromRegex(`<(?P.*)>`, line) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &SwitchStmt{ Addr: ParseAddress(groups["address"]), diff --git a/ast/switch_stmt_test.go b/ast/switch_stmt_test.go index 64ea83f..1f8c12d 100644 --- a/ast/switch_stmt_test.go +++ b/ast/switch_stmt_test.go @@ -6,15 +6,14 @@ import ( func TestSwitchStmt(t *testing.T) { nodes := map[string]testNode{ - `0x7fbca3894638 `: - testNode{&SwitchStmt{ + `0x7fbca3894638 `: testNode{&SwitchStmt{ Addr: 0x7fbca3894638, Pos: NewPositionFromString("line:9:5, line:20:5"), ChildNodes: []Node{}, }, - 0x7fbca3894638, - NewPositionFromString("line:9:5, line:20:5"), - []Node{}, + 0x7fbca3894638, + NewPositionFromString("line:9:5, line:20:5"), + []Node{}, }, } diff --git a/ast/target_attr.go b/ast/target_attr.go index 25b5070..b8c1296 100644 --- a/ast/target_attr.go +++ b/ast/target_attr.go @@ -13,9 +13,9 @@ func parseTargetAttr(line string) Node { "<(?P.*)>(?P.*)", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &TargetAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/target_attr_test.go b/ast/target_attr_test.go index bd6ebc5..4f243b9 100644 --- a/ast/target_attr_test.go +++ b/ast/target_attr_test.go @@ -6,16 +6,15 @@ import ( func TestTargetAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 content`: - testNode{&TargetAttr{ + `0x7fc0a69091d1 content`: testNode{&TargetAttr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), Content: " content", ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/text_comment.go b/ast/text_comment.go index ec33590..f418d84 100644 --- a/ast/text_comment.go +++ b/ast/text_comment.go @@ -13,9 +13,9 @@ func parseTextComment(line string) Node { `<(?P.*)> Text="(?P.*)"`, line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &TextComment{ Addr: ParseAddress(groups["address"]), diff --git a/ast/text_comment_test.go b/ast/text_comment_test.go index 08efedb..4c4d116 100644 --- a/ast/text_comment_test.go +++ b/ast/text_comment_test.go @@ -6,16 +6,15 @@ import ( func TestTextComment(t *testing.T) { nodes := map[string]testNode{ - `0x3085bc0 Text="* CUSTOM AUXILIARY FUNCTIONS"`: - testNode{&TextComment{ + `0x3085bc0 Text="* CUSTOM AUXILIARY FUNCTIONS"`: testNode{&TextComment{ Addr: 0x3085bc0, Pos: NewPositionFromString("line:9950:2, col:29"), Text: "* CUSTOM AUXILIARY FUNCTIONS", ChildNodes: []Node{}, }, - 0x3085bc0, - NewPositionFromString("line:9950:2, col:29"), - []Node{}, + 0x3085bc0, + NewPositionFromString("line:9950:2, col:29"), + []Node{}, }, } diff --git a/ast/translation_unit_decl.go b/ast/translation_unit_decl.go index 0bccda3..9a717c5 100644 --- a/ast/translation_unit_decl.go +++ b/ast/translation_unit_decl.go @@ -8,9 +8,9 @@ type TranslationUnitDecl struct { func parseTranslationUnitDecl(line string) Node { groups := groupsFromRegex("<(?P.*)> <(?P.*)>", line) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &TranslationUnitDecl{ Addr: ParseAddress(groups["address"]), diff --git a/ast/translation_unit_decl_test.go b/ast/translation_unit_decl_test.go index 9437647..00515b9 100644 --- a/ast/translation_unit_decl_test.go +++ b/ast/translation_unit_decl_test.go @@ -6,14 +6,13 @@ import ( func TestTranslationUnitDecl(t *testing.T) { nodes := map[string]testNode{ - `0x7fe78a815ed0 <> `: - testNode{&TranslationUnitDecl{ + `0x7fe78a815ed0 <> `: testNode{&TranslationUnitDecl{ Addr: 0x7fe78a815ed0, ChildNodes: []Node{}, }, - 0x7fe78a815ed0, - NewPositionFromString(""), - []Node{}, + 0x7fe78a815ed0, + NewPositionFromString(""), + []Node{}, }, } diff --git a/ast/transparent_union_attr.go b/ast/transparent_union_attr.go index 01de6eb..e222ec6 100644 --- a/ast/transparent_union_attr.go +++ b/ast/transparent_union_attr.go @@ -10,9 +10,9 @@ type TransparentUnionAttr struct { func parseTransparentUnionAttr(line string) Node { groups := groupsFromRegex(`<(?P.*)>`, line) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &TransparentUnionAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/transparent_union_attr_test.go b/ast/transparent_union_attr_test.go index 6313b91..a5ef61f 100644 --- a/ast/transparent_union_attr_test.go +++ b/ast/transparent_union_attr_test.go @@ -6,15 +6,14 @@ import ( func TestTransparentUnionAttr(t *testing.T) { nodes := map[string]testNode{ - `0x304f700 `: - testNode{&TransparentUnionAttr{ + `0x304f700 `: testNode{&TransparentUnionAttr{ Addr: 0x304f700, Pos: NewPositionFromString("col:35"), ChildNodes: []Node{}, }, - 0x304f700, - NewPositionFromString("col:35"), - []Node{}, + 0x304f700, + NewPositionFromString("col:35"), + []Node{}, }, } diff --git a/ast/traverse.go b/ast/traverse.go index 1676a53..6131dd4 100644 --- a/ast/traverse.go +++ b/ast/traverse.go @@ -1,4 +1,5 @@ package ast + /* import ( "reflect" diff --git a/ast/typedef.go b/ast/typedef.go index 93cfb97..63e8536 100644 --- a/ast/typedef.go +++ b/ast/typedef.go @@ -12,9 +12,9 @@ func parseTypedef(line string) Node { "'(?P.*)'", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &Typedef{ Addr: ParseAddress(groups["address"]), diff --git a/ast/typedef_decl.go b/ast/typedef_decl.go index 4dccf82..f63be85 100644 --- a/ast/typedef_decl.go +++ b/ast/typedef_decl.go @@ -29,9 +29,9 @@ func parseTypedefDecl(line string) Node { (?P:'.*?')?`, line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } type2 := groups["type2"] if type2 != "" { diff --git a/ast/typedef_decl_test.go b/ast/typedef_decl_test.go index 49ff128..aef194a 100644 --- a/ast/typedef_decl_test.go +++ b/ast/typedef_decl_test.go @@ -6,8 +6,7 @@ import ( func TestTypedefDecl(t *testing.T) { nodes := map[string]testNode{ - `0x7fdef0862430 col:16`: - testNode{&TypedefDecl{ + `0x7fdef0862430 col:16`: testNode{&TypedefDecl{ Addr: 0x7fdef0862430, Pos: NewPositionFromString("line:120:1, col:16"), Position2: "col:16", @@ -18,12 +17,11 @@ func TestTypedefDecl(t *testing.T) { IsReferenced: false, ChildNodes: []Node{}, }, - 0x7fdef0862430, - NewPositionFromString("line:120:1, col:16"), - []Node{}, + 0x7fdef0862430, + NewPositionFromString("line:120:1, col:16"), + []Node{}, }, - `0x7ffb9f824278 <> implicit __uint128_t 'unsigned __int128'`: - testNode{&TypedefDecl{ + `0x7ffb9f824278 <> implicit __uint128_t 'unsigned __int128'`: testNode{&TypedefDecl{ Addr: 0x7ffb9f824278, Pos: NewPositionFromString(""), Position2: "", @@ -34,12 +32,11 @@ func TestTypedefDecl(t *testing.T) { IsReferenced: false, ChildNodes: []Node{}, }, - 0x7ffb9f824278, - NewPositionFromString(""), - []Node{}, + 0x7ffb9f824278, + NewPositionFromString(""), + []Node{}, }, - `0x7ffb9f824898 <> implicit referenced __builtin_va_list 'struct __va_list_tag [1]'`: - testNode{&TypedefDecl{ + `0x7ffb9f824898 <> implicit referenced __builtin_va_list 'struct __va_list_tag [1]'`: testNode{&TypedefDecl{ Addr: 0x7ffb9f824898, Pos: NewPositionFromString(""), Position2: "", @@ -50,12 +47,11 @@ func TestTypedefDecl(t *testing.T) { IsReferenced: true, ChildNodes: []Node{}, }, - 0x7ffb9f824898, - NewPositionFromString(""), - []Node{}, + 0x7ffb9f824898, + NewPositionFromString(""), + []Node{}, }, - `0x7ffb9f8248f8 col:24 __int8_t 'signed char'`: - testNode{&TypedefDecl{ + `0x7ffb9f8248f8 col:24 __int8_t 'signed char'`: testNode{&TypedefDecl{ Addr: 0x7ffb9f8248f8, Pos: NewPositionFromString("/usr/include/i386/_types.h:37:1, col:24"), Position2: "col:24", @@ -66,12 +62,11 @@ func TestTypedefDecl(t *testing.T) { IsReferenced: false, ChildNodes: []Node{}, }, - 0x7ffb9f8248f8, - NewPositionFromString("/usr/include/i386/_types.h:37:1, col:24"), - []Node{}, + 0x7ffb9f8248f8, + NewPositionFromString("/usr/include/i386/_types.h:37:1, col:24"), + []Node{}, }, - `0x7ffb9f8dbf50 col:27 referenced __darwin_va_list '__builtin_va_list':'struct __va_list_tag [1]'`: - testNode{&TypedefDecl{ + `0x7ffb9f8dbf50 col:27 referenced __darwin_va_list '__builtin_va_list':'struct __va_list_tag [1]'`: testNode{&TypedefDecl{ Addr: 0x7ffb9f8dbf50, Pos: NewPositionFromString("line:98:1, col:27"), Position2: "col:27", @@ -82,12 +77,11 @@ func TestTypedefDecl(t *testing.T) { IsReferenced: true, ChildNodes: []Node{}, }, - 0x7ffb9f8dbf50, - NewPositionFromString("line:98:1, col:27"), - []Node{}, + 0x7ffb9f8dbf50, + NewPositionFromString("line:98:1, col:27"), + []Node{}, }, - `0x34461f0 __io_read_fn '__ssize_t (void *, char *, size_t)'`: - testNode{&TypedefDecl{ + `0x34461f0 __io_read_fn '__ssize_t (void *, char *, size_t)'`: testNode{&TypedefDecl{ Addr: 0x34461f0, Pos: NewPositionFromString("line:338:1, col:77"), Position2: "", @@ -98,12 +92,11 @@ func TestTypedefDecl(t *testing.T) { IsReferenced: false, ChildNodes: []Node{}, }, - 0x34461f0, - NewPositionFromString("line:338:1, col:77"), - []Node{}, + 0x34461f0, + NewPositionFromString("line:338:1, col:77"), + []Node{}, }, - `0x55b9da8784b0 line:341:19 __io_write_fn '__ssize_t (void *, const char *, size_t)'`: - testNode{&TypedefDecl{ + `0x55b9da8784b0 line:341:19 __io_write_fn '__ssize_t (void *, const char *, size_t)'`: testNode{&TypedefDecl{ Addr: 0x55b9da8784b0, Pos: NewPositionFromString("line:341:1, line:342:16"), Position2: "line:341:19", @@ -114,12 +107,11 @@ func TestTypedefDecl(t *testing.T) { IsReferenced: false, ChildNodes: []Node{}, }, - 0x55b9da8784b0, - NewPositionFromString("line:341:1, line:342:16"), - []Node{}, + 0x55b9da8784b0, + NewPositionFromString("line:341:1, line:342:16"), + []Node{}, }, - `0x3f0b9b0 col:3 referenced extCoord 'struct extCoord':'extCoord'`: - testNode{&TypedefDecl{ + `0x3f0b9b0 col:3 referenced extCoord 'struct extCoord':'extCoord'`: testNode{&TypedefDecl{ Addr: 0x3f0b9b0, Pos: NewPositionFromString("line:12:1, line:15:3"), Position2: "col:3", @@ -130,9 +122,9 @@ func TestTypedefDecl(t *testing.T) { IsReferenced: true, ChildNodes: []Node{}, }, - 0x3f0b9b0, - NewPositionFromString("line:12:1, line:15:3"), - []Node{}, + 0x3f0b9b0, + NewPositionFromString("line:12:1, line:15:3"), + []Node{}, }, } diff --git a/ast/typedef_test.go b/ast/typedef_test.go index 89a3a44..58efbc9 100644 --- a/ast/typedef_test.go +++ b/ast/typedef_test.go @@ -6,15 +6,14 @@ import ( func TestTypedef(t *testing.T) { nodes := map[string]testNode{ - `0x7f84d10dc1d0 '__darwin_ssize_t'`: - testNode{&Typedef{ + `0x7f84d10dc1d0 '__darwin_ssize_t'`: testNode{&Typedef{ Addr: 0x7f84d10dc1d0, Type: "__darwin_ssize_t", ChildNodes: []Node{}, }, - 0x7f84d10dc1d0, - NewPositionFromString(""), - []Node{}, + 0x7f84d10dc1d0, + NewPositionFromString(""), + []Node{}, }, } diff --git a/ast/typedef_type.go b/ast/typedef_type.go index 6491e4e..b2293f2 100644 --- a/ast/typedef_type.go +++ b/ast/typedef_type.go @@ -13,9 +13,9 @@ func parseTypedefType(line string) Node { "'(?P.*)' (?P.+)", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &TypedefType{ Addr: ParseAddress(groups["address"]), diff --git a/ast/typedef_type_test.go b/ast/typedef_type_test.go index 082a0a3..2def0fb 100644 --- a/ast/typedef_type_test.go +++ b/ast/typedef_type_test.go @@ -6,16 +6,15 @@ import ( func TestTypedefType(t *testing.T) { nodes := map[string]testNode{ - `0x7f887a0dc760 '__uint16_t' sugar`: - testNode{&TypedefType{ + `0x7f887a0dc760 '__uint16_t' sugar`: testNode{&TypedefType{ Addr: 0x7f887a0dc760, Type: "__uint16_t", Tags: "sugar", ChildNodes: []Node{}, }, - 0x7f887a0dc760, - NewPositionFromString(""), - []Node{}, + 0x7f887a0dc760, + NewPositionFromString(""), + []Node{}, }, } diff --git a/ast/unary_expr_or_type_trait_expr.go b/ast/unary_expr_or_type_trait_expr.go index dce4462..2ca3606 100644 --- a/ast/unary_expr_or_type_trait_expr.go +++ b/ast/unary_expr_or_type_trait_expr.go @@ -21,9 +21,9 @@ func parseUnaryExprOrTypeTraitExpr(line string) Node { `, line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &UnaryExprOrTypeTraitExpr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/unary_expr_or_type_trait_expr_test.go b/ast/unary_expr_or_type_trait_expr_test.go index aeee1f6..b0fee26 100644 --- a/ast/unary_expr_or_type_trait_expr_test.go +++ b/ast/unary_expr_or_type_trait_expr_test.go @@ -6,8 +6,7 @@ import ( func TestUnaryExprOrTypeTraitExpr(t *testing.T) { nodes := map[string]testNode{ - `0x7fccd70adf50 'unsigned long' sizeof 'char'`: - testNode{&UnaryExprOrTypeTraitExpr{ + `0x7fccd70adf50 'unsigned long' sizeof 'char'`: testNode{&UnaryExprOrTypeTraitExpr{ Addr: 0x7fccd70adf50, Pos: NewPositionFromString("col:29, col:40"), Type1: "unsigned long", @@ -16,12 +15,11 @@ func TestUnaryExprOrTypeTraitExpr(t *testing.T) { Type3: "", ChildNodes: []Node{}, }, - 0x7fccd70adf50, - NewPositionFromString("col:29, col:40"), - []Node{}, + 0x7fccd70adf50, + NewPositionFromString("col:29, col:40"), + []Node{}, }, - `0x7fae1a800190 'unsigned long' sizeof`: - testNode{&UnaryExprOrTypeTraitExpr{ + `0x7fae1a800190 'unsigned long' sizeof`: testNode{&UnaryExprOrTypeTraitExpr{ Addr: 0x7fae1a800190, Pos: NewPositionFromString("col:36, col:44"), Type1: "unsigned long", @@ -30,12 +28,11 @@ func TestUnaryExprOrTypeTraitExpr(t *testing.T) { Type3: "", ChildNodes: []Node{}, }, - 0x7fae1a800190, - NewPositionFromString("col:36, col:44"), - []Node{}, + 0x7fae1a800190, + NewPositionFromString("col:36, col:44"), + []Node{}, }, - `0x557e575e70b8 'unsigned long' sizeof 'union MyUnion':'union MyUnion'`: - testNode{&UnaryExprOrTypeTraitExpr{ + `0x557e575e70b8 'unsigned long' sizeof 'union MyUnion':'union MyUnion'`: testNode{&UnaryExprOrTypeTraitExpr{ Addr: 0x557e575e70b8, Pos: NewPositionFromString("col:432, col:452"), Type1: "unsigned long", @@ -44,12 +41,11 @@ func TestUnaryExprOrTypeTraitExpr(t *testing.T) { Type3: "union MyUnion", ChildNodes: []Node{}, }, - 0x557e575e70b8, - NewPositionFromString("col:432, col:452"), - []Node{}, + 0x557e575e70b8, + NewPositionFromString("col:432, col:452"), + []Node{}, }, - `0x3f142d8 'unsigned long' sizeof 'extCoord':'extCoord'`: - testNode{&UnaryExprOrTypeTraitExpr{ + `0x3f142d8 'unsigned long' sizeof 'extCoord':'extCoord'`: testNode{&UnaryExprOrTypeTraitExpr{ Addr: 0x3f142d8, Pos: NewPositionFromString("col:30, col:45"), Type1: "unsigned long", @@ -58,9 +54,9 @@ func TestUnaryExprOrTypeTraitExpr(t *testing.T) { Type3: "extCoord", ChildNodes: []Node{}, }, - 0x3f142d8, - NewPositionFromString("col:30, col:45"), - []Node{}, + 0x3f142d8, + NewPositionFromString("col:30, col:45"), + []Node{}, }, } diff --git a/ast/unary_operator_test.go b/ast/unary_operator_test.go index 961f1b4..9614877 100644 --- a/ast/unary_operator_test.go +++ b/ast/unary_operator_test.go @@ -6,8 +6,7 @@ import ( func TestUnaryOperator(t *testing.T) { nodes := map[string]testNode{ - `0x7fe0260f50d8 'int' prefix '--'`: - testNode{&UnaryOperator{ + `0x7fe0260f50d8 'int' prefix '--'`: testNode{&UnaryOperator{ Addr: 0x7fe0260f50d8, Pos: NewPositionFromString("col:6, col:12"), Type: "int", @@ -17,12 +16,11 @@ func TestUnaryOperator(t *testing.T) { Operator: "--", ChildNodes: []Node{}, }, - 0x7fe0260f50d8, - NewPositionFromString("col:6, col:12"), - []Node{}, + 0x7fe0260f50d8, + NewPositionFromString("col:6, col:12"), + []Node{}, }, - `0x7fe0260fb468 'unsigned char' lvalue prefix '*'`: - testNode{&UnaryOperator{ + `0x7fe0260fb468 'unsigned char' lvalue prefix '*'`: testNode{&UnaryOperator{ Addr: 0x7fe0260fb468, Pos: NewPositionFromString("col:11, col:18"), Type: "unsigned char", @@ -32,12 +30,11 @@ func TestUnaryOperator(t *testing.T) { Operator: "*", ChildNodes: []Node{}, }, - 0x7fe0260fb468, - NewPositionFromString("col:11, col:18"), - []Node{}, + 0x7fe0260fb468, + NewPositionFromString("col:11, col:18"), + []Node{}, }, - `0x7fe0260fb448 'unsigned char *' postfix '++'`: - testNode{&UnaryOperator{ + `0x7fe0260fb448 'unsigned char *' postfix '++'`: testNode{&UnaryOperator{ Addr: 0x7fe0260fb448, Pos: NewPositionFromString("col:12, col:18"), Type: "unsigned char *", @@ -47,12 +44,11 @@ func TestUnaryOperator(t *testing.T) { Operator: "++", ChildNodes: []Node{}, }, - 0x7fe0260fb448, - NewPositionFromString("col:12, col:18"), - []Node{}, + 0x7fe0260fb448, + NewPositionFromString("col:12, col:18"), + []Node{}, }, - `0x26fd2b8 'extCoord':'extCoord' lvalue prefix '*'`: - testNode{&UnaryOperator{ + `0x26fd2b8 'extCoord':'extCoord' lvalue prefix '*'`: testNode{&UnaryOperator{ Addr: 0x26fd2b8, Pos: NewPositionFromString("col:20, col:32"), Type: "extCoord", @@ -62,9 +58,9 @@ func TestUnaryOperator(t *testing.T) { Operator: "*", ChildNodes: []Node{}, }, - 0x26fd2b8, - NewPositionFromString("col:20, col:32"), - []Node{}, + 0x26fd2b8, + NewPositionFromString("col:20, col:32"), + []Node{}, }, } diff --git a/ast/unavailable_attr.go b/ast/unavailable_attr.go index 3c46630..806b317 100644 --- a/ast/unavailable_attr.go +++ b/ast/unavailable_attr.go @@ -6,11 +6,11 @@ import ( // UnavailableAttr is node represents an unavailable attribute. type UnavailableAttr struct { - Addr Address - Pos Position - Position2 string - Content string - ChildNodes []Node + Addr Address + Pos Position + Position2 string + Content string + ChildNodes []Node } func parseUnavailableAttr(line string) Node { @@ -26,11 +26,11 @@ func parseUnavailableAttr(line string) Node { } return &UnavailableAttr{ - Addr: ParseAddress(groups["address"]), - Pos: NewPositionFromString(groups["position"]), + Addr: ParseAddress(groups["address"]), + Pos: NewPositionFromString(groups["position"]), //Position2: strings.TrimSpace(groups["position2"]), - Content: strings.TrimSpace(groups["content"]), - ChildNodes: []Node{}, + Content: strings.TrimSpace(groups["content"]), + ChildNodes: []Node{}, } } diff --git a/ast/unavailable_attr_test.go b/ast/unavailable_attr_test.go index cfdc898..a93b693 100644 --- a/ast/unavailable_attr_test.go +++ b/ast/unavailable_attr_test.go @@ -6,29 +6,27 @@ import ( func TestUnavailableAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7faa18a445d8 "" IR_None`: - testNode{&UnavailableAttr{ - Addr: 0x7faa18a445d8, - Pos: NewPositionFromString("line:66:45"), - Position2: "", - Content: `"" IR_None`, - ChildNodes: []Node{}, + `0x7faa18a445d8 "" IR_None`: testNode{&UnavailableAttr{ + Addr: 0x7faa18a445d8, + Pos: NewPositionFromString("line:66:45"), + Position2: "", + Content: `"" IR_None`, + ChildNodes: []Node{}, }, - 0x7faa18a445d8, - NewPositionFromString("line:66:45"), - []Node{}, + 0x7faa18a445d8, + NewPositionFromString("line:66:45"), + []Node{}, }, - `0x7faa18a289f8 "use a (__bridge id) cast instead" IR_None`: - testNode{&UnavailableAttr{ - Addr: 0x7faa18a289f8, - Pos: NewPositionFromString("line:150:54, col:70"), - Position2: "", - Content: `"use a (__bridge id) cast instead" IR_None`, - ChildNodes: []Node{}, + `0x7faa18a289f8 "use a (__bridge id) cast instead" IR_None`: testNode{&UnavailableAttr{ + Addr: 0x7faa18a289f8, + Pos: NewPositionFromString("line:150:54, col:70"), + Position2: "", + Content: `"use a (__bridge id) cast instead" IR_None`, + ChildNodes: []Node{}, }, - 0x7faa18a289f8, - NewPositionFromString("line:150:54, col:70"), - []Node{}, + 0x7faa18a289f8, + NewPositionFromString("line:150:54, col:70"), + []Node{}, }, } diff --git a/ast/unknown.go b/ast/unknown.go index 3688e50..330bf80 100644 --- a/ast/unknown.go +++ b/ast/unknown.go @@ -1,32 +1,32 @@ package ast import ( - //"strings" +//"strings" ) // Unknown is node represents an unknown node. type Unknown struct { - Name string - Addr Address - Pos Position - Content string - ChildNodes []Node + Name string + Addr Address + Pos Position + Content string + ChildNodes []Node } func parseUnknown(name, line string) *Unknown { groups := groupsFromRegex( - `(?:prev (?P0x[0-9a-f]+) )? + `(?:prev (?P0x[0-9a-f]+) )? <(?P.*.*?|.*.*?|.*|.*?)> (?P.*)`, line, ) return &Unknown{ - Name: name, - Addr: ParseAddress(groups["address"]), - Pos: NewPositionFromString(groups["position"]), - Content: groups["content"], - ChildNodes: []Node{}, + Name: name, + Addr: ParseAddress(groups["address"]), + Pos: NewPositionFromString(groups["position"]), + Content: groups["content"], + ChildNodes: []Node{}, } } diff --git a/ast/unknown_test.go b/ast/unknown_test.go index 0ebb317..3de79e1 100644 --- a/ast/unknown_test.go +++ b/ast/unknown_test.go @@ -10,819 +10,819 @@ func TestUnknown(t *testing.T) { runNodeTest(t, Parse(`SomeNode 0x7faa18a445d8 "asdf" aoeu`), testNode{&Unknown{ - Addr: 0x7faa18a445d8, - Name: "SomeNode", - Pos: NewPositionFromString("line:66:45"), - Content: ` "asdf" aoeu`, - ChildNodes: []Node{}, + Addr: 0x7faa18a445d8, + Name: "SomeNode", + Pos: NewPositionFromString("line:66:45"), + Content: ` "asdf" aoeu`, + ChildNodes: []Node{}, }, - 0x7faa18a445d8, - NewPositionFromString("line:66:45"), - []Node{}, + 0x7faa18a445d8, + NewPositionFromString("line:66:45"), + []Node{}, }, &i, ) runNodeTest(t, Parse(`AlignedAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`AllocSizeAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`AlwaysInlineAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ArcWeakrefUnavailableAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ArraySubscriptExpr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`AsmLabelAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`AttributedType 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`AvailabilityAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`BinaryOperator 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`BlockCommandComment 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`BlockPointerType 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`BreakStmt 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`BuiltinType 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`CFAuditedTransferAttr invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`CFConsumedAttr invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`CFReturnsNotRetainedAttr invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`CFReturnsRetainedAttr invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`CStyleCastExpr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`CallExpr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`CaseStmt 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`CharacterLiteral 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`CompoundAssignOperator 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`CompoundLiteralExpr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`CompoundStmt 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ConditionalOperator 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ConstantArrayType 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ContinueStmt 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ConvertVectorExpr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`DecayedType 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`DeclRefExpr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`DeclRefExpr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`DeclStmt 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`DefaultStmt 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`DeprecatedAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`DisableTailCallsAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`DoStmt 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ElaboratedType 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`EmptyDecl 0x7faa18a445d8 col:12 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`Enum 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`EnumConstantDecl 0x7faa18a445d8 col: 32 invalid invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`EnumDecl 0x7faa18a445d8 invalid invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`EnumType 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`EnumExtensibilityAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`Field 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`FieldDecl 0x7faa18a445d8 invalid invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`FlagEnumAttr invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`FloatingLiteral 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ForStmt 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`FormatArgAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`FormatAttr 0x7faa18a445d8 invalid invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`FullComment 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`FunctionDecl 0x7faa18a445d8 invalid invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`FunctionProtoType 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`GCCAsmStmt 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`GotoStmt 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`HTMLEndTagComment 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`HTMLStartTagComment 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`IBActionAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`IBOutletAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`IfStmt 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ImplicitCastExpr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ImplicitValueInitExpr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`IncompleteArrayType 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`IndirectFieldDecl 0x7faa18a445d8 invalid invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`InitListExpr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`InlineCommandComment 0x7faa18a445d8 `), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`IntegerLiteral 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`LabelStmt 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`MallocAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`MaxFieldAlignmentAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`MayAliasAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`MemberExpr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`MinVectorWidthAttr invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ModeAttr 0x7faa18a445d8 `), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`NoDebugAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`NoEscapeAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`NoInlineAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`NoThrowAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`NonNullAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`NotTailCalledAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`NSConsumedAttr invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`NSConsumesSelfAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`NSErrorDomainAttr invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`NSReturnsRetainedAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ObjCBoolLiteralExpr invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ObjCBoxableAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ObjCBridgeAttr invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ObjCBridgeMutableAttr invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ObjCBridgeRelatedAttr invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ObjCCategoryDecl 0x7faa18a445d8 invalid invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ObjCDesignatedInitializerAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ObjCExceptionAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ObjCExplicitProtocolImplAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ObjCIndependentClassAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ObjCInterface 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ObjCInterfaceDecl 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ObjCInterfaceType 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ObjCIvarDecl 0x7faa18a445d8 invalid invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ObjCMessageExpr invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ObjCMethod 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ObjCMethodDecl 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ObjCObjectPointerType 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ObjCObjectType 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ObjCPropertyDecl 0x7faa18a445d8 invalid invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ObjCProtocol 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ObjCProtocolDecl invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ObjCRequiresSuperAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ObjCReturnsInnerPointerAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ObjCRootClassAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ObjCTypeParamDecl 0x7faa18a445d8 invalid invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`OffsetOfExpr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`PackedAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ParagraphComment 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ParamCommandComment 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ParenExpr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ParenType 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ParmVarDecl 0x7faa18a445d8 invalid invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`PointerType 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`PredefinedExpr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`PureAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`QualType 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`Record 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`RecordDecl 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`RecordType 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`RestrictAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ReturnStmt 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ReturnsTwiceAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`SentinelAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`ShuffleVectorExpr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`StmtExpr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`StringLiteral 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`SwiftBridgedTypedefAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`SwiftErrorAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`SwiftNameAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`SwiftNewtypeAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`SwiftPrivateAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`SwitchStmt 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`TargetAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`TextComment 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`TranslationUnitDecl 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`TransparentUnionAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`Typedef 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`TypedefDecl 0x7faa18a445d8 invalid invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`TypedefType 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`UnaryExprOrTypeTraitExpr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`UnaryOperator 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`UnavailableAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`UnusedAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`UsedAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`VAArgExpr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`VarDecl 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`VectorType 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`VerbatimBlockComment 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`VerbatimBlockLineComment 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`VerbatimLineComment 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`VisibilityAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`WarnUnusedResultAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`WeakAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`WeakImportAttr 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) runNodeTest(t, Parse(`WhileStmt 0x7faa18a445d8 invalid`), - testNode{&Unknown{ }, 0, NewPositionFromString(""), nil}, + testNode{&Unknown{}, 0, NewPositionFromString(""), nil}, &i, ) - t.Run(fmt.Sprintf("Example%d",i),func(t *testing.T) { + t.Run(fmt.Sprintf("Example%d", i), func(t *testing.T) { node := Parse(`NullStmt`) if node != nil { t.Errorf("Parse(NullStmt) did not return nil\n") diff --git a/ast/unused_attr.go b/ast/unused_attr.go index 3932add..e651fdd 100644 --- a/ast/unused_attr.go +++ b/ast/unused_attr.go @@ -14,9 +14,9 @@ func parseUnusedAttr(line string) Node { "<(?P.*)>(?P unused)?", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &UnusedAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/unused_attr_test.go b/ast/unused_attr_test.go index 5eda410..a6d4df3 100644 --- a/ast/unused_attr_test.go +++ b/ast/unused_attr_test.go @@ -6,27 +6,25 @@ import ( func TestUnusedAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fe3e01416d0 unused`: - testNode{&UnusedAttr{ + `0x7fe3e01416d0 unused`: testNode{&UnusedAttr{ Addr: 0x7fe3e01416d0, Pos: NewPositionFromString("col:47"), ChildNodes: []Node{}, IsUnused: true, }, - 0x7fe3e01416d0, - NewPositionFromString("col:47"), - []Node{}, + 0x7fe3e01416d0, + NewPositionFromString("col:47"), + []Node{}, }, - `0x7fe3e01416d0 `: - testNode{&UnusedAttr{ + `0x7fe3e01416d0 `: testNode{&UnusedAttr{ Addr: 0x7fe3e01416d0, Pos: NewPositionFromString("col:47"), ChildNodes: []Node{}, IsUnused: false, }, - 0x7fe3e01416d0, - NewPositionFromString("col:47"), - []Node{}, + 0x7fe3e01416d0, + NewPositionFromString("col:47"), + []Node{}, }, } diff --git a/ast/used_attr.go b/ast/used_attr.go index a06d7bb..04aa472 100644 --- a/ast/used_attr.go +++ b/ast/used_attr.go @@ -12,9 +12,9 @@ func parseUsedAttr(line string) Node { "<(?P.*)>", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &UsedAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/used_attr_test.go b/ast/used_attr_test.go index 1dbb529..a841690 100644 --- a/ast/used_attr_test.go +++ b/ast/used_attr_test.go @@ -6,15 +6,14 @@ import ( func TestUsedAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 `: - testNode{&UsedAttr{ + `0x7fc0a69091d1 `: testNode{&UsedAttr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/util_test.go b/ast/util_test.go index 03e492e..5b46803 100644 --- a/ast/util_test.go +++ b/ast/util_test.go @@ -5,20 +5,19 @@ import ( ) func TestRemoveQuotes(t *testing.T) { - t.Run("RemoveQuotes1",func(t *testing.T) { + t.Run("RemoveQuotes1", func(t *testing.T) { if removeQuotes(`''`) != "" { t.Errorf("Empty single quoted string test failed\n") } }) - t.Run("RemoveQuotes2",func(t *testing.T) { + t.Run("RemoveQuotes2", func(t *testing.T) { if removeQuotes(`"hi there"`) != `hi there` { - t.Errorf("Double quoted string test failed: %s -> %s\n",`"hi there"`,removeQuotes(`"hi there"`)) + t.Errorf("Double quoted string test failed: %s -> %s\n", `"hi there"`, removeQuotes(`"hi there"`)) } }) - t.Run("TypesTree",func(t *testing.T) { - if typesTree(nil,0) != "" { + t.Run("TypesTree", func(t *testing.T) { + if typesTree(nil, 0) != "" { t.Errorf(`typesTree(nil,0) did not return ""`) } }) } - diff --git a/ast/va_arg_expr.go b/ast/va_arg_expr.go index fb9d041..4e339bf 100644 --- a/ast/va_arg_expr.go +++ b/ast/va_arg_expr.go @@ -13,9 +13,9 @@ func parseVAArgExpr(line string) Node { "<(?P.*)> '(?P.*)'", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &VAArgExpr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/va_arg_expr_test.go b/ast/va_arg_expr_test.go index 6defaab..ec8944f 100644 --- a/ast/va_arg_expr_test.go +++ b/ast/va_arg_expr_test.go @@ -6,16 +6,15 @@ import ( func TestVAArgExpr(t *testing.T) { nodes := map[string]testNode{ - `0x7ff7d314bca8 'int *'`: - testNode{&VAArgExpr{ + `0x7ff7d314bca8 'int *'`: testNode{&VAArgExpr{ Addr: 0x7ff7d314bca8, Pos: NewPositionFromString("col:6, col:31"), Type: "int *", ChildNodes: []Node{}, }, - 0x7ff7d314bca8, - NewPositionFromString("col:6, col:31"), - []Node{}, + 0x7ff7d314bca8, + NewPositionFromString("col:6, col:31"), + []Node{}, }, } diff --git a/ast/var_decl_test.go b/ast/var_decl_test.go index 73c2e9b..672c57f 100644 --- a/ast/var_decl_test.go +++ b/ast/var_decl_test.go @@ -6,8 +6,7 @@ import ( func TestVarDecl(t *testing.T) { nodes := map[string]testNode{ - `0x7fd5e90e5a00 col:17 'int'`: - testNode{&VarDecl{ + `0x7fd5e90e5a00 col:17 'int'`: testNode{&VarDecl{ Addr: 0x7fd5e90e5a00, Pos: NewPositionFromString("col:14"), Position2: "col:17", @@ -23,12 +22,11 @@ func TestVarDecl(t *testing.T) { Parent: 0, ChildNodes: []Node{}, }, - 0x7fd5e90e5a00, - NewPositionFromString("col:14"), - []Node{}, + 0x7fd5e90e5a00, + NewPositionFromString("col:14"), + []Node{}, }, - `0x7fd5e90e9078 col:14 __stdinp 'FILE *' extern`: - testNode{&VarDecl{ + `0x7fd5e90e9078 col:14 __stdinp 'FILE *' extern`: testNode{&VarDecl{ Addr: 0x7fd5e90e9078, Pos: NewPositionFromString("line:156:1, col:14"), Position2: "col:14", @@ -44,12 +42,11 @@ func TestVarDecl(t *testing.T) { Parent: 0, ChildNodes: []Node{}, }, - 0x7fd5e90e9078, - NewPositionFromString("line:156:1, col:14"), - []Node{}, + 0x7fd5e90e9078, + NewPositionFromString("line:156:1, col:14"), + []Node{}, }, - `0x7fd5e90ed630 col:47 __size 'size_t':'unsigned long'`: - testNode{&VarDecl{ + `0x7fd5e90ed630 col:47 __size 'size_t':'unsigned long'`: testNode{&VarDecl{ Addr: 0x7fd5e90ed630, Pos: NewPositionFromString("col:40, col:47"), Position2: "col:47", @@ -65,12 +62,11 @@ func TestVarDecl(t *testing.T) { Parent: 0, ChildNodes: []Node{}, }, - 0x7fd5e90ed630, - NewPositionFromString("col:40, col:47"), - []Node{}, + 0x7fd5e90ed630, + NewPositionFromString("col:40, col:47"), + []Node{}, }, - `0x7fee35907a78 col:8 used c 'int'`: - testNode{&VarDecl{ + `0x7fee35907a78 col:8 used c 'int'`: testNode{&VarDecl{ Addr: 0x7fee35907a78, Pos: NewPositionFromString("col:4, col:8"), Position2: "col:8", @@ -86,12 +82,11 @@ func TestVarDecl(t *testing.T) { Parent: 0, ChildNodes: []Node{}, }, - 0x7fee35907a78, - NewPositionFromString("col:4, col:8"), - []Node{}, + 0x7fee35907a78, + NewPositionFromString("col:4, col:8"), + []Node{}, }, - `0x7fb0fd90ba30 tests/assert/assert.c:13:9 used b 'int *' cinit`: - testNode{&VarDecl{ + `0x7fb0fd90ba30 tests/assert/assert.c:13:9 used b 'int *' cinit`: testNode{&VarDecl{ Addr: 0x7fb0fd90ba30, Pos: NewPositionFromString("col:3, /usr/include/sys/_types.h:52:33"), Position2: "tests/assert/assert.c:13:9", @@ -107,12 +102,11 @@ func TestVarDecl(t *testing.T) { Parent: 0, ChildNodes: []Node{}, }, - 0x7fb0fd90ba30, - NewPositionFromString("col:3, /usr/include/sys/_types.h:52:33"), - []Node{}, + 0x7fb0fd90ba30, + NewPositionFromString("col:3, /usr/include/sys/_types.h:52:33"), + []Node{}, }, - `0x7fb20308bd40 col:11 referenced a 'short'`: - testNode{&VarDecl{ + `0x7fb20308bd40 col:11 referenced a 'short'`: testNode{&VarDecl{ Addr: 0x7fb20308bd40, Pos: NewPositionFromString("col:5, col:11"), Position2: "col:11", @@ -128,12 +122,11 @@ func TestVarDecl(t *testing.T) { Parent: 0, ChildNodes: []Node{}, }, - 0x7fb20308bd40, - NewPositionFromString("col:5, col:11"), - []Node{}, + 0x7fb20308bd40, + NewPositionFromString("col:5, col:11"), + []Node{}, }, - `0x55a040ddd798 line:66:27 used sqlite3azCompileOpt 'const char *const [2]' static cinit`: - testNode{&VarDecl{ + `0x55a040ddd798 line:66:27 used sqlite3azCompileOpt 'const char *const [2]' static cinit`: testNode{&VarDecl{ Addr: 0x55a040ddd798, Pos: NewPositionFromString("sqlite3.c:66:1, line:770:1"), Position2: "line:66:27", @@ -149,12 +142,11 @@ func TestVarDecl(t *testing.T) { Parent: 0, ChildNodes: []Node{}, }, - 0x55a040ddd798, - NewPositionFromString("sqlite3.c:66:1, line:770:1"), - []Node{}, + 0x55a040ddd798, + NewPositionFromString("sqlite3.c:66:1, line:770:1"), + []Node{}, }, - `0x55772c7774d0 col:27 used a 'unsigned char *' register`: - testNode{&VarDecl{ + `0x55772c7774d0 col:27 used a 'unsigned char *' register`: testNode{&VarDecl{ Addr: 0x55772c7774d0, Pos: NewPositionFromString("col:3, col:27"), Position2: "col:27", @@ -170,12 +162,11 @@ func TestVarDecl(t *testing.T) { Parent: 0, ChildNodes: []Node{}, }, - 0x55772c7774d0, - NewPositionFromString("col:3, col:27"), - []Node{}, + 0x55772c7774d0, + NewPositionFromString("col:3, col:27"), + []Node{}, }, - `0x26fd180 col:13 used aExt 'extCoord':'extCoord' cinit`: - testNode{&VarDecl{ + `0x26fd180 col:13 used aExt 'extCoord':'extCoord' cinit`: testNode{&VarDecl{ Addr: 0x26fd180, Pos: NewPositionFromString("col:4, col:32"), Position2: "col:13", @@ -191,12 +182,11 @@ func TestVarDecl(t *testing.T) { Parent: 0, ChildNodes: []Node{}, }, - 0x26fd180, - NewPositionFromString("col:4, col:32"), - []Node{}, + 0x26fd180, + NewPositionFromString("col:4, col:32"), + []Node{}, }, - `0x7f985e0ffb10 parent 0x7f985e0246d0 col:20 used DEFAULT_MEM_ALLOCATOR 'cmark_mem':'struct cmark_mem' extern`: - testNode{&VarDecl{ + `0x7f985e0ffb10 parent 0x7f985e0246d0 col:20 used DEFAULT_MEM_ALLOCATOR 'cmark_mem':'struct cmark_mem' extern`: testNode{&VarDecl{ Addr: 0x7f985e0ffb10, Pos: NewPositionFromString("col:3, col:20"), Position2: "col:20", @@ -212,9 +202,9 @@ func TestVarDecl(t *testing.T) { Parent: 0x7f985e0246d0, ChildNodes: []Node{}, }, - 0x7f985e0ffb10, - NewPositionFromString("col:3, col:20"), - []Node{}, + 0x7f985e0ffb10, + NewPositionFromString("col:3, col:20"), + []Node{}, }, } diff --git a/ast/variadic_test.go b/ast/variadic_test.go index 578f5e4..36f8ecc 100644 --- a/ast/variadic_test.go +++ b/ast/variadic_test.go @@ -11,9 +11,9 @@ func TestVariadic(t *testing.T) { testNode{&Variadic{ ChildNodes: []Node{}, }, - 0, - NewPositionFromString(""), - []Node{}, + 0, + NewPositionFromString(""), + []Node{}, }, &i, ) diff --git a/ast/vector_type_test.go b/ast/vector_type_test.go index 49f660a..dbe4977 100644 --- a/ast/vector_type_test.go +++ b/ast/vector_type_test.go @@ -6,27 +6,25 @@ import ( func TestVectorType(t *testing.T) { nodes := map[string]testNode{ - `0x7faa18f2d520 '__attribute__((__vector_size__(1 * sizeof(long long)))) long long' 1`: - testNode{&VectorType{ - Addr: 0x7faa18f2d520, - Type: `__attribute__((__vector_size__(1 * sizeof(long long)))) long long`, - Length: 1, - ChildNodes: []Node{}, + `0x7faa18f2d520 '__attribute__((__vector_size__(1 * sizeof(long long)))) long long' 1`: testNode{&VectorType{ + Addr: 0x7faa18f2d520, + Type: `__attribute__((__vector_size__(1 * sizeof(long long)))) long long`, + Length: 1, + ChildNodes: []Node{}, }, - 0x7faa18f2d520, - NewPositionFromString(""), - []Node{}, + 0x7faa18f2d520, + NewPositionFromString(""), + []Node{}, }, - `0x7fca42b88f30 '__attribute__((__vector_size__(16 * sizeof(signed char)))) signed char' 16`: - testNode{&VectorType{ - Addr: 0x7fca42b88f30, - Type: `__attribute__((__vector_size__(16 * sizeof(signed char)))) signed char`, - Length: 16, - ChildNodes: []Node{}, + `0x7fca42b88f30 '__attribute__((__vector_size__(16 * sizeof(signed char)))) signed char' 16`: testNode{&VectorType{ + Addr: 0x7fca42b88f30, + Type: `__attribute__((__vector_size__(16 * sizeof(signed char)))) signed char`, + Length: 16, + ChildNodes: []Node{}, }, - 0x7fca42b88f30, - NewPositionFromString(""), - []Node{}, + 0x7fca42b88f30, + NewPositionFromString(""), + []Node{}, }, } diff --git a/ast/verbatim_block_comment.go b/ast/verbatim_block_comment.go index c0686f4..2dbc7c3 100644 --- a/ast/verbatim_block_comment.go +++ b/ast/verbatim_block_comment.go @@ -16,9 +16,9 @@ func parseVerbatimBlockComment(line string) Node { CloseName="(?P.*?)"`, line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &VerbatimBlockComment{ Addr: ParseAddress(groups["address"]), diff --git a/ast/verbatim_block_comment_test.go b/ast/verbatim_block_comment_test.go index ee6b7d6..01d79b7 100644 --- a/ast/verbatim_block_comment_test.go +++ b/ast/verbatim_block_comment_test.go @@ -6,17 +6,16 @@ import ( func TestVerbatimBlockComment(t *testing.T) { nodes := map[string]testNode{ - `0x107781dd0 Name="link" CloseName=""`: - testNode{&VerbatimBlockComment{ + `0x107781dd0 Name="link" CloseName=""`: testNode{&VerbatimBlockComment{ Addr: 0x107781dd0, Pos: NewPositionFromString("col:34, col:39"), Name: "link", CloseName: "", ChildNodes: []Node{}, }, - 0x107781dd0, - NewPositionFromString("col:34, col:39"), - []Node{}, + 0x107781dd0, + NewPositionFromString("col:34, col:39"), + []Node{}, }, } diff --git a/ast/verbatim_block_line_comment.go b/ast/verbatim_block_line_comment.go index 2ece548..7c876cf 100644 --- a/ast/verbatim_block_line_comment.go +++ b/ast/verbatim_block_line_comment.go @@ -13,9 +13,9 @@ func parseVerbatimBlockLineComment(line string) Node { `<(?P.*)> Text="(?P.*?)"`, line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &VerbatimBlockLineComment{ Addr: ParseAddress(groups["address"]), diff --git a/ast/verbatim_block_line_comment_test.go b/ast/verbatim_block_line_comment_test.go index 27ee843..bc3d2bb 100644 --- a/ast/verbatim_block_line_comment_test.go +++ b/ast/verbatim_block_line_comment_test.go @@ -6,16 +6,15 @@ import ( func TestVerbatimBlockLineComment(t *testing.T) { nodes := map[string]testNode{ - `0x10f8e8e20 Text=" OSAtomicAdd32}"`: - testNode{&VerbatimBlockLineComment{ + `0x10f8e8e20 Text=" OSAtomicAdd32}"`: testNode{&VerbatimBlockLineComment{ Addr: 0x10f8e8e20, Pos: NewPositionFromString("col:39, col:54"), Text: " OSAtomicAdd32}", ChildNodes: []Node{}, }, - 0x10f8e8e20, - NewPositionFromString("col:39, col:54"), - []Node{}, + 0x10f8e8e20, + NewPositionFromString("col:39, col:54"), + []Node{}, }, } diff --git a/ast/verbatim_line_comment.go b/ast/verbatim_line_comment.go index d091b53..533588f 100644 --- a/ast/verbatim_line_comment.go +++ b/ast/verbatim_line_comment.go @@ -13,9 +13,9 @@ func parseVerbatimLineComment(line string) Node { `<(?P.*)> Text="(?P.*)"`, line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &VerbatimLineComment{ Addr: ParseAddress(groups["address"]), diff --git a/ast/verbatim_line_comment_test.go b/ast/verbatim_line_comment_test.go index ece9157..eb87658 100644 --- a/ast/verbatim_line_comment_test.go +++ b/ast/verbatim_line_comment_test.go @@ -6,16 +6,15 @@ import ( func TestVerbatimLineComment(t *testing.T) { nodes := map[string]testNode{ - `0x108af4dd0 Text=" qos_class_self"`: - testNode{&VerbatimLineComment{ + `0x108af4dd0 Text=" qos_class_self"`: testNode{&VerbatimLineComment{ Addr: 0x108af4dd0, Pos: NewPositionFromString("col:4, col:28"), Text: " qos_class_self", ChildNodes: []Node{}, }, - 0x108af4dd0, - NewPositionFromString("col:4, col:28"), - []Node{}, + 0x108af4dd0, + NewPositionFromString("col:4, col:28"), + []Node{}, }, } diff --git a/ast/visibility_attr_test.go b/ast/visibility_attr_test.go index 9591ad2..57bacd6 100644 --- a/ast/visibility_attr_test.go +++ b/ast/visibility_attr_test.go @@ -6,29 +6,27 @@ import ( func TestVisibilityAttr(t *testing.T) { nodes := map[string]testNode{ - `0x55c49d8dd1d8 Default`: - testNode{&VisibilityAttr{ + `0x55c49d8dd1d8 Default`: testNode{&VisibilityAttr{ Addr: 0x55c49d8dd1d8, Pos: NewPositionFromString("col:16, col:36"), ChildNodes: []Node{}, IsInherited: false, IsDefault: true, }, - 0x55c49d8dd1d8, - NewPositionFromString("col:16, col:36"), - []Node{}, + 0x55c49d8dd1d8, + NewPositionFromString("col:16, col:36"), + []Node{}, }, - `0x7f8e7b00bb80 Inherited Default`: - testNode{&VisibilityAttr{ + `0x7f8e7b00bb80 Inherited Default`: testNode{&VisibilityAttr{ Addr: 0x7f8e7b00bb80, Pos: NewPositionFromString("/cmark/src/cmark.h:497:16, col:36"), ChildNodes: []Node{}, IsInherited: true, IsDefault: true, }, - 0x7f8e7b00bb80, - NewPositionFromString("/cmark/src/cmark.h:497:16, col:36"), - []Node{}, + 0x7f8e7b00bb80, + NewPositionFromString("/cmark/src/cmark.h:497:16, col:36"), + []Node{}, }, } diff --git a/ast/warn_unused_result_attr.go b/ast/warn_unused_result_attr.go index fcd12de..3e3bba8 100644 --- a/ast/warn_unused_result_attr.go +++ b/ast/warn_unused_result_attr.go @@ -10,9 +10,9 @@ type WarnUnusedResultAttr struct { func parseWarnUnusedResultAttr(line string) Node { groups := groupsFromRegex(`<(?P.*)>( warn_unused_result)?`, line) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &WarnUnusedResultAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/warn_unused_result_attr_test.go b/ast/warn_unused_result_attr_test.go index db86b58..33d038d 100644 --- a/ast/warn_unused_result_attr_test.go +++ b/ast/warn_unused_result_attr_test.go @@ -6,25 +6,23 @@ import ( func TestWarnUnusedResultAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fa1d704d420 warn_unused_result`: - testNode{&WarnUnusedResultAttr{ + `0x7fa1d704d420 warn_unused_result`: testNode{&WarnUnusedResultAttr{ Addr: 0x7fa1d704d420, Pos: NewPositionFromString("col:60"), ChildNodes: []Node{}, }, - 0x7fa1d704d420, - NewPositionFromString("col:60"), - []Node{}, + 0x7fa1d704d420, + NewPositionFromString("col:60"), + []Node{}, }, - `0x1fac810 `: - testNode{&WarnUnusedResultAttr{ + `0x1fac810 `: testNode{&WarnUnusedResultAttr{ Addr: 0x1fac810, Pos: NewPositionFromString("line:481:52"), ChildNodes: []Node{}, }, - 0x1fac810, - NewPositionFromString("line:481:52"), - []Node{}, + 0x1fac810, + NewPositionFromString("line:481:52"), + []Node{}, }, } diff --git a/ast/weak_attr.go b/ast/weak_attr.go index 9c0863e..cc569b5 100644 --- a/ast/weak_attr.go +++ b/ast/weak_attr.go @@ -12,9 +12,9 @@ func parseWeakAttr(line string) Node { `<(?P.*)>`, line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &WeakAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/weak_attr_test.go b/ast/weak_attr_test.go index 2fe630d..77be4f4 100644 --- a/ast/weak_attr_test.go +++ b/ast/weak_attr_test.go @@ -6,15 +6,14 @@ import ( func TestWeakAttr(t *testing.T) { nodes := map[string]testNode{ - `0x56069ece5110 `: - testNode{&WeakAttr{ + `0x56069ece5110 `: testNode{&WeakAttr{ Addr: 0x56069ece5110, Pos: NewPositionFromString("line:736:22"), ChildNodes: []Node{}, }, - 0x56069ece5110, - NewPositionFromString("line:736:22"), - []Node{}, + 0x56069ece5110, + NewPositionFromString("line:736:22"), + []Node{}, }, } diff --git a/ast/weak_import_attr.go b/ast/weak_import_attr.go index 517f578..8b6ef1b 100644 --- a/ast/weak_import_attr.go +++ b/ast/weak_import_attr.go @@ -12,9 +12,9 @@ func parseWeakImportAttr(line string) Node { "<(?P.*)>", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &WeakImportAttr{ Addr: ParseAddress(groups["address"]), diff --git a/ast/weak_import_attr_test.go b/ast/weak_import_attr_test.go index a30c36f..a56aa1a 100644 --- a/ast/weak_import_attr_test.go +++ b/ast/weak_import_attr_test.go @@ -6,15 +6,14 @@ import ( func TestWeakImportAttr(t *testing.T) { nodes := map[string]testNode{ - `0x7fc0a69091d1 `: - testNode{&WeakImportAttr{ + `0x7fc0a69091d1 `: testNode{&WeakImportAttr{ Addr: 0x7fc0a69091d1, Pos: NewPositionFromString("line:11:7, line:18:7"), ChildNodes: []Node{}, }, - 0x7fc0a69091d1, - NewPositionFromString("line:11:7, line:18:7"), - []Node{}, + 0x7fc0a69091d1, + NewPositionFromString("line:11:7, line:18:7"), + []Node{}, }, } diff --git a/ast/while_stmt.go b/ast/while_stmt.go index 6acb39d..e60d02a 100644 --- a/ast/while_stmt.go +++ b/ast/while_stmt.go @@ -12,9 +12,9 @@ func parseWhileStmt(line string) Node { "<(?P.*)>", line, ) - if groups == nil { - return &Unknown{} - } + if groups == nil { + return &Unknown{} + } return &WhileStmt{ Addr: ParseAddress(groups["address"]), diff --git a/ast/while_stmt_test.go b/ast/while_stmt_test.go index 280e047..e6c22ba 100644 --- a/ast/while_stmt_test.go +++ b/ast/while_stmt_test.go @@ -6,15 +6,14 @@ import ( func TestWhileStmt(t *testing.T) { nodes := map[string]testNode{ - `0x7fa1478273a0 `: - testNode{&WhileStmt{ + `0x7fa1478273a0 `: testNode{&WhileStmt{ Addr: 0x7fa1478273a0, Pos: NewPositionFromString("line:7:4, line:11:4"), ChildNodes: []Node{}, }, - 0x7fa1478273a0, - NewPositionFromString("line:7:4, line:11:4"), - []Node{}, + 0x7fa1478273a0, + NewPositionFromString("line:7:4, line:11:4"), + []Node{}, }, } diff --git a/examples/app/main.go b/examples/app/main.go index bfe6155..0c3cea5 100644 --- a/examples/app/main.go +++ b/examples/app/main.go @@ -1,10 +1,11 @@ package main + //go:generate nswrap import ( "fmt" - "runtime" "git.wow.st/gmp/nswrap/examples/app/ns" + "runtime" ) //Shortcut for literal NSStrings @@ -21,12 +22,12 @@ func pb2() { func didFinishLaunching(n ns.NSNotification) { fmt.Println("Go: did finish launching") - fmt.Printf("Notification: %s\n",n.Name().UTF8String()) + fmt.Printf("Notification: %s\n", n.Name().UTF8String()) //Set up an NSWindow win = ns.NSWindowAlloc().InitWithContentRectStyleMask( - ns.NSMakeRect(200,200,600,600), - ns.NSWindowStyleMaskTitled | ns.NSWindowStyleMaskClosable | - ns.NSWindowStyleMaskResizable, + ns.NSMakeRect(200, 200, 600, 600), + ns.NSWindowStyleMaskTitled|ns.NSWindowStyleMaskClosable| + ns.NSWindowStyleMaskResizable, ns.NSBackingStoreBuffered, 0, ) @@ -51,7 +52,7 @@ func didFinishLaunching(n ns.NSNotification) { appMenu.AddItemWithTitle(nst("About"), nil, nst("")) appMenu.AddItemWithTitle(nst("Preferences"), nil, nst("")) - appMenu.AddItemWithTitle(nst("Quit"),ns.Selector("terminate:"), nst("q")) + appMenu.AddItemWithTitle(nst("Quit"), ns.Selector("terminate:"), nst("q")) a.SetMainMenu(m1) fileMenu.AddItemWithTitle(nst("Open"), nil, nst("")) fileMenu.AddItemWithTitle(nst("New"), nil, nst("")) @@ -86,15 +87,15 @@ func didFinishLaunching(n ns.NSNotification) { cv.AddSubview(b2.NSView) viewmap := ns.NSDictionaryWithObjectsForKeys( - ns.NSArrayWithObjects(b1,b2), - ns.NSArrayWithObjects(nst("b1"),nst("b2"))) + ns.NSArrayWithObjects(b1, b2), + ns.NSArrayWithObjects(nst("b1"), nst("b2"))) cv.AddConstraints(ns.NSLayoutConstraintsWithVisualFormat( - nst("V:|-[b1]"),0, ns.NSDictionary{}, viewmap)) + nst("V:|-[b1]"), 0, ns.NSDictionary{}, viewmap)) cv.AddConstraints(ns.NSLayoutConstraintsWithVisualFormat( - nst("H:|-[b1]"),0, ns.NSDictionary{}, viewmap)) + nst("H:|-[b1]"), 0, ns.NSDictionary{}, viewmap)) cv.AddConstraints(ns.NSLayoutConstraintsWithVisualFormat( - nst("H:[b1]-[b2]"),ns.NSLayoutFormatAlignAllBaseline, + nst("H:[b1]-[b2]"), ns.NSLayoutFormatAlignAllBaseline, ns.NSDictionary{}, viewmap)) a.ActivateIgnoringOtherApps(1) @@ -110,11 +111,11 @@ func willTerminate(n ns.NSNotification) { func didBecomeActive(n ns.NSNotification) { fmt.Println("Go: did become active") - fmt.Printf("Notification: %s\n",n.Name().UTF8String()) + fmt.Printf("Notification: %s\n", n.Name().UTF8String()) } var ( - a ns.NSApplication + a ns.NSApplication win ns.NSWindow ) @@ -140,6 +141,5 @@ func app() { func main() { //Run our app in an autorelease pool just for fun go ns.Autoreleasepool(app) - select { } + select {} } - diff --git a/examples/bluetooth/main.go b/examples/bluetooth/main.go index 9bee4ee..5fbc819 100644 --- a/examples/bluetooth/main.go +++ b/examples/bluetooth/main.go @@ -23,7 +23,7 @@ func updateState(c ns.CBCentralManager) { fmt.Printf(" powered off\n") case ns.CBManagerStatePoweredOn: fmt.Printf(" powered on\n") - cm.ScanForPeripheralsWithServices(ns.NSArrayWithObjects(hrm_uuid),ns.NSDictionary{}) + cm.ScanForPeripheralsWithServices(ns.NSArrayWithObjects(hrm_uuid), ns.NSDictionary{}) } } @@ -35,7 +35,7 @@ func discoverPeripheral(c ns.CBCentralManager, p ns.CBPeripheral, d ns.NSDiction } peripheral = p peripheral.Retain() - c.ConnectPeripheral(peripheral,ns.NSDictionary{}) + c.ConnectPeripheral(peripheral, ns.NSDictionary{}) } func connectPeripheral(c ns.CBCentralManager, p ns.CBPeripheral) { @@ -51,10 +51,10 @@ func discoverServices(p ns.CBPeripheral, e ns.NSError) { switch { case serv.UUID().IsEqualTo(hrm_uuid): fmt.Printf("--heart rate monitor service\n") - p.DiscoverCharacteristics(ns.NSArray{},serv) + p.DiscoverCharacteristics(ns.NSArray{}, serv) case serv.UUID().IsEqualTo(ns.CBUUIDWithGoString("180A")): fmt.Printf("--device information service\n") - p.DiscoverCharacteristics(ns.NSArray{},serv) + p.DiscoverCharacteristics(ns.NSArray{}, serv) } return true }) @@ -64,9 +64,9 @@ func hr(d ns.NSData) int { if l := int(d.Length()); l < 4 { return 0 } - x := C.GoBytes(d.Bytes(),4) + x := C.GoBytes(d.Bytes(), 4) flags := x[0] - if flags & 0x80 != 0 { // uint16 format + if flags&0x80 != 0 { // uint16 format return int(binary.BigEndian.Uint16(x[1:2])) } else { return int(x[1]) @@ -75,13 +75,13 @@ func hr(d ns.NSData) int { func discoverCharacteristics(p ns.CBPeripheral, s ns.CBService, e ns.NSError) { fmt.Printf("Did discover characteristics\n") - fmt.Printf("----%s\n",s.UUID().UUIDString().UTF8String()) + fmt.Printf("----%s\n", s.UUID().UUIDString().UTF8String()) if s.UUID().IsEqualTo(hrm_uuid) { s.Characteristics().ObjectEnumerator().ForIn(func(o ns.Id) bool { chr := o.CBCharacteristic() - fmt.Printf("------%s\n",chr.UUID().UUIDString().UTF8String()) + fmt.Printf("------%s\n", chr.UUID().UUIDString().UTF8String()) if chr.UUID().IsEqualTo(hrv_uuid) { - p.SetNotifyValue(1,chr) + p.SetNotifyValue(1, chr) v := chr.Value() fmt.Println(hr(v)) } @@ -93,20 +93,20 @@ func discoverCharacteristics(p ns.CBPeripheral, s ns.CBService, e ns.NSError) { func updateValue(p ns.CBPeripheral, chr ns.CBCharacteristic, e ns.NSError) { if chr.UUID().IsEqualTo(hrv_uuid) { v := chr.Value() - fmt.Printf("Heart rate: %d\n",hr(v)) + fmt.Printf("Heart rate: %d\n", hr(v)) } } var ( - hrm_uuid ns.CBUUID - hrv_uuid ns.CBUUID - cd ns.CBDelegate - cm ns.CBCentralManager + hrm_uuid ns.CBUUID + hrv_uuid ns.CBUUID + cd ns.CBDelegate + cm ns.CBCentralManager peripheral ns.CBPeripheral ) func main() { - queue := ns.DispatchQueueCreate(ns.CharWithGoString("my_new_queue"),nil) + queue := ns.DispatchQueueCreate(ns.CharWithGoString("my_new_queue"), nil) cd = ns.CBDelegateAlloc() @@ -121,7 +121,7 @@ func main() { hrv_uuid = ns.CBUUIDWithGoString("2A37") //We defined our own queue because this won't work on the main queue. - cm = ns.CBCentralManagerAlloc().InitWithDelegateQueue(cd,queue) + cm = ns.CBCentralManagerAlloc().InitWithDelegateQueue(cd, queue) - select { } + select {} } diff --git a/examples/foundation/main.go b/examples/foundation/main.go index 801f2d4..6f51abd 100644 --- a/examples/foundation/main.go +++ b/examples/foundation/main.go @@ -1,4 +1,5 @@ package main + //go:generate nswrap import ( @@ -16,43 +17,43 @@ func main() { n2 := ns.NSStringAlloc() n2 = n2.InitWithGoString("hi world") n3 := ns.NSStringWithGoString("ok bye") - fmt.Printf("%s\n",n3) + fmt.Printf("%s\n", n3) fmt.Printf("\nCreating an array:\n") - a := ns.NSMutableArrayWithObjects(n1,n2,n3) - fmt.Println("Length(a) = ",a.Count()) - fmt.Println("is n2 in a?",a.ContainsObject(n2)) - fmt.Println("is c1 in a?",a.ContainsObject(c1)) + a := ns.NSMutableArrayWithObjects(n1, n2, n3) + fmt.Println("Length(a) = ", a.Count()) + fmt.Println("is n2 in a?", a.ContainsObject(n2)) + fmt.Println("is c1 in a?", a.ContainsObject(c1)) fmt.Printf("\nCreating substrings and adding to the array:\n") n4 := n2.SubstringFromIndex(3) n5 := n3.SubstringToIndex(4) a.AddObject(n4) a.AddObject(n5) - fmt.Println("Length(a) = ",a.Count()) + fmt.Println("Length(a) = ", a.Count()) fmt.Printf("\nSubarray with range:\n") - a2 := a.SubarrayWithRange(ns.NSMakeRange(1,3)) - fmt.Println("Length(a2) = ",a2.Count()) + a2 := a.SubarrayWithRange(ns.NSMakeRange(1, 3)) + fmt.Println("Length(a2) = ", a2.Count()) fmt.Printf("\nObjectAtIndex(1):\n") i1 := a.ObjectAtIndex(1).NSString() - fmt.Printf("i1 = %@\n",i1) - fmt.Printf("i1.Ptr() = %p\n",i1.Ptr()) + fmt.Printf("i1 = %@\n", i1) + fmt.Printf("i1.Ptr() = %p\n", i1.Ptr()) fmt.Printf("\nNSArray.ObjectEnumerator().ForIn():\n") a.ObjectEnumerator().ForIn(func(o ns.Id) bool { fmt.Println(o.NSString()) return true }) fmt.Printf("\nNSSetWithObjectsCount():\n") - s1 := ns.NSSetWithObjectsCount(&[]ns.Id{n1.Id,n2.Id},2) + s1 := ns.NSSetWithObjectsCount(&[]ns.Id{n1.Id, n2.Id}, 2) fmt.Printf("\nNSSet.ObjectEnumerator().ForIn():\n") s1.ObjectEnumerator().ForIn(func(o ns.Id) bool { fmt.Println(o.NSString()) return true }) fmt.Printf("\nNSMutableArrayWithObjects()\n") - a = ns.NSMutableArrayWithObjects(n1,s1) + a = ns.NSMutableArrayWithObjects(n1, s1) fmt.Printf("\nNSArray.ObjectEnumerator().ForIn():\n") a.ObjectEnumerator().ForIn(func(o ns.Id) bool { - fmt.Printf("%s -- ",o.ClassName().UTF8String()) + fmt.Printf("%s -- ", o.ClassName().UTF8String()) switch { case o.IsKindOfClass(ns.NSStringClass()): fmt.Printf(" It's a string\n") @@ -64,40 +65,40 @@ func main() { return true }) fmt.Printf("\nNSArrayWithObjects()\n") - a2 = ns.NSArrayWithObjects(n1,n2,n3,s1) + a2 = ns.NSArrayWithObjects(n1, n2, n3, s1) fmt.Printf("\nNSArray.ObjectEnumerator().ForIn():\n") - a2.ObjectEnumerator().ForIn(func (o ns.Id) bool { + a2.ObjectEnumerator().ForIn(func(o ns.Id) bool { switch { case o.IsKindOfClass(ns.NSStringClass()): fmt.Println(o.NSString().UTF8String()) - return true // continue enumeration + return true // continue enumeration default: fmt.Println("Unknown class") - return false // terminate enumeration + return false // terminate enumeration } }) nst := ns.NSStringWithGoString fmt.Printf("\nNSDictionaryWithObjectsForKeys()\n") d := ns.NSDictionaryWithObjectsForKeys( - ns.NSArrayWithObjects(nst("obj1"),nst("obj2")), - ns.NSArrayWithObjects(nst("key1"),nst("key2")), + ns.NSArrayWithObjects(nst("obj1"), nst("obj2")), + ns.NSArrayWithObjects(nst("key1"), nst("key2")), ) - os := make([]ns.Id,0,5) - fmt.Printf("Length of os is %d\n",len(os)) - ks := make([]ns.Id,0,5) + os := make([]ns.Id, 0, 5) + fmt.Printf("Length of os is %d\n", len(os)) + ks := make([]ns.Id, 0, 5) fmt.Printf("\nGetObjects()\n") - d.GetObjects(&os,&ks,4) - fmt.Printf("Length of os is now %d\n",len(os)) - for i,k := range ks { - fmt.Printf("-- %s -> %s\n",k.NSString(),os[i].NSString()) + d.GetObjects(&os, &ks, 4) + fmt.Printf("Length of os is now %d\n", len(os)) + for i, k := range ks { + fmt.Printf("-- %s -> %s\n", k.NSString(), os[i].NSString()) } fmt.Printf("\nNSStringWithContentsOfURLEncoding()\n") - err := make([]ns.NSError,1) - n1 = ns.NSStringWithContentsOfURLEncoding(ns.NSURLWithGoString("htttypo://example.com"),0,&err) - fmt.Printf("err: %s\n",err[0].LocalizedDescription()) + err := make([]ns.NSError, 1) + n1 = ns.NSStringWithContentsOfURLEncoding(ns.NSURLWithGoString("htttypo://example.com"), 0, &err) + fmt.Printf("err: %s\n", err[0].LocalizedDescription()) fmt.Printf("\nNSStringWithFormat()\n") - str := ns.NSStringWithFormat(nst("(%@) (%@)\n(%@)\n"),n2,n3,s1) - fmt.Printf("%s\n",str) + str := ns.NSStringWithFormat(nst("(%@) (%@)\n(%@)\n"), n2, n3, s1) + fmt.Printf("%s\n", str) } diff --git a/examples/gc/main.go b/examples/gc/main.go new file mode 100644 index 0000000..57cf1ba --- /dev/null +++ b/examples/gc/main.go @@ -0,0 +1,99 @@ +package main + +import "C" +import ( + "fmt" + "runtime" + "time" + + "git.wow.st/gmp/nswrap/examples/gc/ns" +) + +func releaseX(x int) func (ns.MyClassSupermethods) { + return func(super ns.MyClassSupermethods) { + //fmt.Printf("--release %d\n", x) + super.Release() // comment out for leak + } +} +func memtest1() { + fmt.Println("memtest1 started") + for { + arr := make([]ns.MyClass,1000) + for i := 0; i < 1000; i++ { + // Alloc methods set a finalizer that causes the Go GC to + // Release these objects. + arr[i] = ns.MyClassAlloc() + arr[i].ReleaseCallback(releaseX(i)) + + // You can still manually retain objects, but that will cause + // them to stick around after their Go pointers are collected. + // This may be necessary if you are adding objects to an + // Objective-C collection? + //arr[i].Retain() // uncomment for leak + } + // Manually run the Go GC at every loop iteration. May not be needed + // in a real program. + runtime.GC() + time.Sleep(time.Second/50) + fmt.Printf("Loop complete\n") + } +} + +func memtest2() { + fmt.Println("memtest2 started") + for { + o1 := ns.NSStringAlloc().InitWithGoString("one string") + + // NSWrap runs object constructors inside an @autoreleasepool block, + // and then calls "retain" on them before returning to Go. A Go + // finalizer is set allowing the Go GC to call Release(). + + o2 := ns.NSStringWithGoString("two string") // does not leak + + arr := ns.NSArrayWithObjects(o1,o2) + _ = arr + + runtime.GC() + time.Sleep(time.Second/50) + } +} + +func addStr(arr ns.NSMutableArray) { + s1 := ns.NSStringAlloc().InitWithGoString("a string") + arr.AddObject(s1) + + // s1 should be eligible for Go garbage collection here, but is still referenced + // on the Objective-C side. By adding s1 to an array, the array automatically + // calls 'retain' on the underlying Objective-C string. +} + +func memtest3() { + fmt.Println("memtest3 started") + + arr := ns.NSMutableArrayAlloc().Init() // arr will be garbage collected by Go + addStr(arr) + runtime.GC() + time.Sleep(time.Second) + s1 := arr.ObjectAtIndex(0) + fmt.Println(s1.NSString().UTF8String()) + fmt.Println("memtest3 done") +} + +func memtest4() { + fmt.Println("memtest4 started") + for { + o1 := ns.NSStringAlloc().InitWithGoString("four string") + c1 := o1.UTF8String() + _ = o1 + _ = c1 + time.Sleep(time.Second/10) + } +} + +func main() { + go memtest1() + go memtest2() + go memtest3() + go memtest4() + select {} +} diff --git a/examples/memory/ns/exports.go b/examples/gc/ns-old/exports.go similarity index 87% rename from examples/memory/ns/exports.go rename to examples/gc/ns-old/exports.go index bc840c9..9988f07 100644 --- a/examples/memory/ns/exports.go +++ b/examples/gc/ns-old/exports.go @@ -16,16 +16,11 @@ import ( "unsafe" ) -//export MyClassDealloc -func MyClassDealloc(o unsafe.Pointer) { - cb := MyClassLookup[o].Dealloc - if cb == nil { return } - cb() -} - //export MyClassRelease func MyClassRelease(o unsafe.Pointer) { + MyClassMux.RLock() cb := MyClassLookup[o].Release + MyClassMux.RUnlock() if cb == nil { return } self := MyClass{} self.ptr = o @@ -34,3 +29,12 @@ func MyClassRelease(o unsafe.Pointer) { } cb(super) } + +//export MyClassDealloc +func MyClassDealloc(o unsafe.Pointer) { + MyClassMux.RLock() + cb := MyClassLookup[o].Dealloc + MyClassMux.RUnlock() + if cb == nil { return } + cb() +} diff --git a/examples/memory/ns/main.go b/examples/gc/ns-old/main.go similarity index 99% rename from examples/memory/ns/main.go rename to examples/gc/ns-old/main.go index a5c777a..9a09269 100644 --- a/examples/memory/ns/main.go +++ b/examples/gc/ns-old/main.go @@ -10,20 +10,24 @@ package ns void* -NSArray_AllocWithZone(void* zone) { - return [NSArray allocWithZone:zone]; +NSArray_Superclass() { + return [NSArray superclass]; } -void* _Nonnull -NSArray_Array() { - return [NSArray array]; +NSUInteger +NSArray_Hash() { + return [NSArray hash]; } -BOOL -NSArray_AutomaticallyNotifiesObserversForKey(void* key) { - return [NSArray automaticallyNotifiesObserversForKey:key]; +void* +NSArray_Description() { + return [NSArray description]; } -void* _Nonnull -NSArray_KeyPathsForValuesAffectingValueForKey(void* key) { - return [NSArray keyPathsForValuesAffectingValueForKey:key]; +void* _Nullable +NSArray_ArrayWithContentsOfFile(void* path) { + return [NSArray arrayWithContentsOfFile:path]; +} +void +NSArray_Load() { + [NSArray load]; } void* selectorFromString(char *s) { @@ -31,44 +35,108 @@ selectorFromString(char *s) { } BOOL -NSArray_InstancesRespondToSelector(void* aSelector) { - return [NSArray instancesRespondToSelector:aSelector]; +NSArray_ResolveClassMethod(void* sel) { + return [NSArray resolveClassMethod:sel]; } -void* -NSArray_MutableCopyWithZone(void* zone) { - return [NSArray mutableCopyWithZone:zone]; +void* _Nonnull +NSArray_ArrayWithObject(void* anObject) { + return [NSArray arrayWithObject:anObject]; } void* _Nonnull NSArray_ClassForKeyedUnarchiver() { return [NSArray classForKeyedUnarchiver]; } void* -NSArray_Description() { - return [NSArray description]; +NSArray_Alloc() { + return [NSArray alloc]; +} +BOOL +NSArray_AccessInstanceVariablesDirectly() { + return [NSArray accessInstanceVariablesDirectly]; +} +void +NSArray_SetVersion(NSInteger aVersion) { + [NSArray setVersion:aVersion]; +} +NSInteger +NSArray_Version() { + return [NSArray version]; +} +void* +NSArray_CopyWithZone(void* zone) { + return [NSArray copyWithZone:zone]; +} +BOOL +NSArray_ResolveInstanceMethod(void* sel) { + return [NSArray resolveInstanceMethod:sel]; +} +void* _Nonnull +NSArray_ClassFallbacksForKeyedArchiver() { + return [NSArray classFallbacksForKeyedArchiver]; +} +void* _Nonnull +NSArray_KeyPathsForValuesAffectingValueForKey(void* key) { + return [NSArray keyPathsForValuesAffectingValueForKey:key]; } void* _Nonnull NSArray_ArrayWithArray(void* array) { return [NSArray arrayWithArray:array]; } void* -NSArray_New() { - return [NSArray new]; +NSArray_MutableCopyWithZone(void* zone) { + return [NSArray mutableCopyWithZone:zone]; } void* -NSArray_DebugDescription() { - return [NSArray debugDescription]; -} -NSInteger -NSArray_Version() { - return [NSArray version]; +NSArray_Class() { + return [NSArray class]; } BOOL NSArray_ConformsToProtocol(void* protocol) { return [NSArray conformsToProtocol:protocol]; } +BOOL +NSArray_InstancesRespondToSelector(void* aSelector) { + return [NSArray instancesRespondToSelector:aSelector]; +} void* -NSArray_Superclass() { - return [NSArray superclass]; +NSArray_AllocWithZone(void* zone) { + return [NSArray allocWithZone:zone]; +} +BOOL +NSArray_AutomaticallyNotifiesObserversForKey(void* key) { + return [NSArray automaticallyNotifiesObserversForKey:key]; +} +void* +NSArray_DebugDescription() { + return [NSArray debugDescription]; +} +void* _Nullable +NSArray_ArrayWithContentsOfURL(void* url) { + return [NSArray arrayWithContentsOfURL:url]; +} +void* _Nullable +NSArray_ArrayWithContentsOfURLError(void* url, void* error) { + return [NSArray arrayWithContentsOfURL:url error:error]; +} +void* _Nonnull +NSArray_Array() { + return [NSArray array]; +} +BOOL +NSArray_IsSubclassOfClass(void* aClass) { + return [NSArray isSubclassOfClass:aClass]; +} +void* +NSArray_InstanceMethodSignatureForSelector(void* aSelector) { + return [NSArray instanceMethodSignatureForSelector:aSelector]; +} +void +NSArray_CancelPreviousPerformRequestsWithTarget(void* aTarget) { + [NSArray cancelPreviousPerformRequestsWithTarget:aTarget]; +} +void +NSArray_CancelPreviousPerformRequestsWithTargetSelector(void* aTarget, void* aSelector, void* anArgument) { + [NSArray cancelPreviousPerformRequestsWithTarget:aTarget selector:aSelector object:anArgument]; } void* _Nonnull NSArray_ArrayWithObjectsCount(void* objects, NSUInteger cnt) { @@ -79,118 +147,21 @@ NSArray_ArrayWithObjects(void* firstObj, void* object) { NSObject** arr = object; return [NSArray arrayWithObjects:firstObj , arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7], arr[8], arr[9], arr[10], arr[11], arr[12], arr[13], arr[14], arr[15], nil]; } -NSUInteger -NSArray_Hash() { - return [NSArray hash]; -} -void -NSArray_SetVersion(NSInteger aVersion) { - [NSArray setVersion:aVersion]; -} -BOOL -NSArray_ResolveInstanceMethod(void* sel) { - return [NSArray resolveInstanceMethod:sel]; -} void* -NSArray_InstanceMethodSignatureForSelector(void* aSelector) { - return [NSArray instanceMethodSignatureForSelector:aSelector]; +NSArray_New() { + return [NSArray new]; +} +void* _Nonnull +NSArray_inst_ArrayByAddingObjectsFromArray(void* o, void* otherArray) { + return [(NSArray*)o arrayByAddingObjectsFromArray:otherArray]; } void* _Nullable -NSArray_ArrayWithContentsOfURL(void* url) { - return [NSArray arrayWithContentsOfURL:url]; -} -void* _Nullable -NSArray_ArrayWithContentsOfURLError(void* url, void* error) { - return [NSArray arrayWithContentsOfURL:url error:error]; -} -BOOL -NSArray_ResolveClassMethod(void* sel) { - return [NSArray resolveClassMethod:sel]; -} -void -NSArray_CancelPreviousPerformRequestsWithTarget(void* aTarget) { - [NSArray cancelPreviousPerformRequestsWithTarget:aTarget]; -} -void -NSArray_CancelPreviousPerformRequestsWithTargetSelector(void* aTarget, void* aSelector, void* anArgument) { - [NSArray cancelPreviousPerformRequestsWithTarget:aTarget selector:aSelector object:anArgument]; -} -void -NSArray_Load() { - [NSArray load]; +NSArray_inst_InitWithContentsOfFile(void* o, void* path) { + return [(NSArray*)o initWithContentsOfFile:path]; } void* _Nonnull -NSArray_ClassFallbacksForKeyedArchiver() { - return [NSArray classFallbacksForKeyedArchiver]; -} -void* -NSArray_CopyWithZone(void* zone) { - return [NSArray copyWithZone:zone]; -} -void* -NSArray_Alloc() { - return [NSArray alloc]; -} -BOOL -NSArray_AccessInstanceVariablesDirectly() { - return [NSArray accessInstanceVariablesDirectly]; -} -void* -NSArray_Class() { - return [NSArray class]; -} -void* _Nonnull -NSArray_ArrayWithObject(void* anObject) { - return [NSArray arrayWithObject:anObject]; -} -void* _Nullable -NSArray_ArrayWithContentsOfFile(void* path) { - return [NSArray arrayWithContentsOfFile:path]; -} -BOOL -NSArray_IsSubclassOfClass(void* aClass) { - return [NSArray isSubclassOfClass:aClass]; -} -void* _Nonnull -NSArray_inst_Description(void* o) { - return [(NSArray*)o description]; -} -void* _Nonnull -NSArray_inst_FilteredArrayUsingPredicate(void* o, void* predicate) { - return [(NSArray*)o filteredArrayUsingPredicate:predicate]; -} -void* _Nonnull -NSArray_inst_InitWithObjectsCount(void* o, void* objects, NSUInteger cnt) { - return [(NSArray*)o initWithObjects:objects count:cnt]; -} -void* _Nonnull -NSArray_inst_InitWithObjects(void* o, void* firstObj, void* object) { - NSObject** arr = object; - return [(NSArray*)o initWithObjects:firstObj , arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7], arr[8], arr[9], arr[10], arr[11], arr[12], arr[13], arr[14], arr[15], nil]; -} -void* _Nonnull -NSArray_inst_ComponentsJoinedByString(void* o, void* separator) { - return [(NSArray*)o componentsJoinedByString:separator]; -} -void* _Nonnull -NSArray_inst_Init(void* o) { - return [(NSArray*)o init]; -} -void -NSArray_inst_SetValue(void* o, void* value, void* key) { - [(NSArray*)o setValue:value forKey:key]; -} -void* _Nonnull -NSArray_inst_ObjectEnumerator(void* o) { - return [(NSArray*)o objectEnumerator]; -} -void* _Nonnull -NSArray_inst_ObjectsAtIndexes(void* o, void* indexes) { - return [(NSArray*)o objectsAtIndexes:indexes]; -} -void* _Nonnull -NSArray_inst_SortedArrayHint(void* o) { - return [(NSArray*)o sortedArrayHint]; +NSArray_inst_PathsMatchingExtensions(void* o, void* filterTypes) { + return [(NSArray*)o pathsMatchingExtensions:filterTypes]; } void* _Nonnull NSArray_inst_DescriptionWithLocale(void* o, void* locale) { @@ -200,142 +171,10 @@ void* _Nonnull NSArray_inst_DescriptionWithLocaleIndent(void* o, void* locale, NSUInteger level) { return [(NSArray*)o descriptionWithLocale:locale indent:level]; } -NSUInteger -NSArray_inst_Count(void* o) { - return [(NSArray*)o count]; -} -void* _Nonnull -NSArray_inst_SortedArrayUsingSelector(void* o, void* comparator) { - return [(NSArray*)o sortedArrayUsingSelector:comparator]; -} -void* _Nullable -NSArray_inst_FirstObject(void* o) { - return [(NSArray*)o firstObject]; -} -void -NSArray_inst_MakeObjectsPerformSelector(void* o, void* aSelector) { - [(NSArray*)o makeObjectsPerformSelector:aSelector]; -} -void -NSArray_inst_MakeObjectsPerformSelectorWithObject(void* o, void* aSelector, void* argument) { - [(NSArray*)o makeObjectsPerformSelector:aSelector withObject:argument]; -} -void* _Nonnull -NSArray_inst_SubarrayWithRange(void* o, NSRange range) { - return [(NSArray*)o subarrayWithRange:range]; -} -void* _Nonnull -NSArray_inst_ArrayByAddingObject(void* o, void* anObject) { - return [(NSArray*)o arrayByAddingObject:anObject]; -} -void* _Nullable -NSArray_inst_InitWithContentsOfFile(void* o, void* path) { - return [(NSArray*)o initWithContentsOfFile:path]; -} -BOOL -NSArray_inst_WriteToURLError(void* o, void* url, void* error) { - return [(NSArray*)o writeToURL:url error:error]; -} -BOOL -NSArray_inst_WriteToURLAtomically(void* o, void* url, BOOL atomically) { - return [(NSArray*)o writeToURL:url atomically:atomically]; -} -void* _Nullable -NSArray_inst_InitWithContentsOfURL(void* o, void* url) { - return [(NSArray*)o initWithContentsOfURL:url]; -} -void* _Nullable -NSArray_inst_InitWithContentsOfURLError(void* o, void* url, void* error) { - return [(NSArray*)o initWithContentsOfURL:url error:error]; -} -void* _Nonnull -NSArray_inst_ArrayByAddingObjectsFromArray(void* o, void* otherArray) { - return [(NSArray*)o arrayByAddingObjectsFromArray:otherArray]; -} -void* _Nullable -NSArray_inst_FirstObjectCommonWithArray(void* o, void* otherArray) { - return [(NSArray*)o firstObjectCommonWithArray:otherArray]; -} -void* _Nonnull -NSArray_inst_InitWithArray(void* o, void* array) { - return [(NSArray*)o initWithArray:array]; -} -void* _Nonnull -NSArray_inst_InitWithArrayCopyItems(void* o, void* array, BOOL flag) { - return [(NSArray*)o initWithArray:array copyItems:flag]; -} -BOOL -NSArray_inst_ContainsObject(void* o, void* anObject) { - return [(NSArray*)o containsObject:anObject]; -} -void* _Nonnull -NSArray_inst_ObjectAtIndexedSubscript(void* o, NSUInteger idx) { - return [(NSArray*)o objectAtIndexedSubscript:idx]; -} -NSUInteger -NSArray_inst_IndexOfObjectIdenticalTo(void* o, void* anObject) { - return [(NSArray*)o indexOfObjectIdenticalTo:anObject]; -} -NSUInteger -NSArray_inst_IndexOfObjectIdenticalToInRange(void* o, void* anObject, NSRange range) { - return [(NSArray*)o indexOfObjectIdenticalTo:anObject inRange:range]; -} -BOOL -NSArray_inst_IsEqualToArray(void* o, void* otherArray) { - return [(NSArray*)o isEqualToArray:otherArray]; -} -void -NSArray_inst_AddObserverForKeyPath(void* o, void* observer, void* keyPath, NSKeyValueObservingOptions options, void* context) { - [(NSArray*)o addObserver:observer forKeyPath:keyPath options:options context:context]; -} -void -NSArray_inst_AddObserverToObjectsAtIndexes(void* o, void* observer, void* indexes, void* keyPath, NSKeyValueObservingOptions options, void* context) { - [(NSArray*)o addObserver:observer toObjectsAtIndexes:indexes forKeyPath:keyPath options:options context:context]; -} -NSUInteger -NSArray_inst_IndexOfObject(void* o, void* anObject) { - return [(NSArray*)o indexOfObject:anObject]; -} -NSUInteger -NSArray_inst_IndexOfObjectInRange(void* o, void* anObject, NSRange range) { - return [(NSArray*)o indexOfObject:anObject inRange:range]; -} -BOOL -NSArray_inst_WriteToFile(void* o, void* path, BOOL useAuxiliaryFile) { - return [(NSArray*)o writeToFile:path atomically:useAuxiliaryFile]; -} -void* _Nullable -NSArray_inst_InitWithCoder(void* o, void* aDecoder) { - return [(NSArray*)o initWithCoder:aDecoder]; -} -void* _Nonnull -NSArray_inst_ReverseObjectEnumerator(void* o) { - return [(NSArray*)o reverseObjectEnumerator]; -} -void* _Nonnull -NSArray_inst_ValueForKey(void* o, void* key) { - return [(NSArray*)o valueForKey:key]; -} -void* _Nonnull -NSArray_inst_PathsMatchingExtensions(void* o, void* filterTypes) { - return [(NSArray*)o pathsMatchingExtensions:filterTypes]; -} -void -NSArray_inst_GetObjects(void* o, void* objects, NSRange range) { - [(NSArray*)o getObjects:objects range:range]; -} void* _Nonnull NSArray_inst_ObjectAtIndex(void* o, NSUInteger index) { return [(NSArray*)o objectAtIndex:index]; } -void* _Nonnull -NSArray_inst_SortedArrayUsingDescriptors(void* o, void* sortDescriptors) { - return [(NSArray*)o sortedArrayUsingDescriptors:sortDescriptors]; -} -void* _Nullable -NSArray_inst_LastObject(void* o) { - return [(NSArray*)o lastObject]; -} void NSArray_inst_RemoveObserverForKeyPath(void* o, void* observer, void* keyPath) { [(NSArray*)o removeObserver:observer forKeyPath:keyPath]; @@ -352,6 +191,167 @@ void NSArray_inst_RemoveObserverFromObjectsAtIndexesForKeyPath(void* o, void* observer, void* indexes, void* keyPath, void* context) { [(NSArray*)o removeObserver:observer fromObjectsAtIndexes:indexes forKeyPath:keyPath context:context]; } +NSUInteger +NSArray_inst_Count(void* o) { + return [(NSArray*)o count]; +} +void* _Nonnull +NSArray_inst_SortedArrayUsingDescriptors(void* o, void* sortDescriptors) { + return [(NSArray*)o sortedArrayUsingDescriptors:sortDescriptors]; +} +void* _Nonnull +NSArray_inst_ObjectAtIndexedSubscript(void* o, NSUInteger idx) { + return [(NSArray*)o objectAtIndexedSubscript:idx]; +} +void* _Nullable +NSArray_inst_FirstObject(void* o) { + return [(NSArray*)o firstObject]; +} +void +NSArray_inst_SetValue(void* o, void* value, void* key) { + [(NSArray*)o setValue:value forKey:key]; +} +void* _Nullable +NSArray_inst_FirstObjectCommonWithArray(void* o, void* otherArray) { + return [(NSArray*)o firstObjectCommonWithArray:otherArray]; +} +void* _Nullable +NSArray_inst_InitWithCoder(void* o, void* aDecoder) { + return [(NSArray*)o initWithCoder:aDecoder]; +} +void* _Nonnull +NSArray_inst_ValueForKey(void* o, void* key) { + return [(NSArray*)o valueForKey:key]; +} +NSUInteger +NSArray_inst_IndexOfObjectIdenticalTo(void* o, void* anObject) { + return [(NSArray*)o indexOfObjectIdenticalTo:anObject]; +} +NSUInteger +NSArray_inst_IndexOfObjectIdenticalToInRange(void* o, void* anObject, NSRange range) { + return [(NSArray*)o indexOfObjectIdenticalTo:anObject inRange:range]; +} +BOOL +NSArray_inst_ContainsObject(void* o, void* anObject) { + return [(NSArray*)o containsObject:anObject]; +} +BOOL +NSArray_inst_IsEqualToArray(void* o, void* otherArray) { + return [(NSArray*)o isEqualToArray:otherArray]; +} +void* _Nonnull +NSArray_inst_SortedArrayHint(void* o) { + return [(NSArray*)o sortedArrayHint]; +} +void* _Nonnull +NSArray_inst_ComponentsJoinedByString(void* o, void* separator) { + return [(NSArray*)o componentsJoinedByString:separator]; +} +void* _Nonnull +NSArray_inst_FilteredArrayUsingPredicate(void* o, void* predicate) { + return [(NSArray*)o filteredArrayUsingPredicate:predicate]; +} +BOOL +NSArray_inst_WriteToFile(void* o, void* path, BOOL useAuxiliaryFile) { + return [(NSArray*)o writeToFile:path atomically:useAuxiliaryFile]; +} +void* _Nullable +NSArray_inst_InitWithContentsOfURL(void* o, void* url) { + return [(NSArray*)o initWithContentsOfURL:url]; +} +void* _Nullable +NSArray_inst_InitWithContentsOfURLError(void* o, void* url, void* error) { + return [(NSArray*)o initWithContentsOfURL:url error:error]; +} +void* _Nonnull +NSArray_inst_ArrayByAddingObject(void* o, void* anObject) { + return [(NSArray*)o arrayByAddingObject:anObject]; +} +BOOL +NSArray_inst_WriteToURLError(void* o, void* url, void* error) { + return [(NSArray*)o writeToURL:url error:error]; +} +BOOL +NSArray_inst_WriteToURLAtomically(void* o, void* url, BOOL atomically) { + return [(NSArray*)o writeToURL:url atomically:atomically]; +} +void* _Nonnull +NSArray_inst_SubarrayWithRange(void* o, NSRange range) { + return [(NSArray*)o subarrayWithRange:range]; +} +void* _Nonnull +NSArray_inst_InitWithArray(void* o, void* array) { + return [(NSArray*)o initWithArray:array]; +} +void* _Nonnull +NSArray_inst_InitWithArrayCopyItems(void* o, void* array, BOOL flag) { + return [(NSArray*)o initWithArray:array copyItems:flag]; +} +void +NSArray_inst_MakeObjectsPerformSelector(void* o, void* aSelector) { + [(NSArray*)o makeObjectsPerformSelector:aSelector]; +} +void +NSArray_inst_MakeObjectsPerformSelectorWithObject(void* o, void* aSelector, void* argument) { + [(NSArray*)o makeObjectsPerformSelector:aSelector withObject:argument]; +} +void* _Nonnull +NSArray_inst_ObjectsAtIndexes(void* o, void* indexes) { + return [(NSArray*)o objectsAtIndexes:indexes]; +} +NSUInteger +NSArray_inst_IndexOfObject(void* o, void* anObject) { + return [(NSArray*)o indexOfObject:anObject]; +} +NSUInteger +NSArray_inst_IndexOfObjectInRange(void* o, void* anObject, NSRange range) { + return [(NSArray*)o indexOfObject:anObject inRange:range]; +} +void* _Nonnull +NSArray_inst_ObjectEnumerator(void* o) { + return [(NSArray*)o objectEnumerator]; +} +void* _Nonnull +NSArray_inst_ReverseObjectEnumerator(void* o) { + return [(NSArray*)o reverseObjectEnumerator]; +} +void* _Nonnull +NSArray_inst_Description(void* o) { + return [(NSArray*)o description]; +} +void* _Nullable +NSArray_inst_LastObject(void* o) { + return [(NSArray*)o lastObject]; +} +void* _Nonnull +NSArray_inst_Init(void* o) { + return [(NSArray*)o init]; +} +void +NSArray_inst_AddObserverForKeyPath(void* o, void* observer, void* keyPath, NSKeyValueObservingOptions options, void* context) { + [(NSArray*)o addObserver:observer forKeyPath:keyPath options:options context:context]; +} +void +NSArray_inst_AddObserverToObjectsAtIndexes(void* o, void* observer, void* indexes, void* keyPath, NSKeyValueObservingOptions options, void* context) { + [(NSArray*)o addObserver:observer toObjectsAtIndexes:indexes forKeyPath:keyPath options:options context:context]; +} +void +NSArray_inst_GetObjects(void* o, void* objects, NSRange range) { + [(NSArray*)o getObjects:objects range:range]; +} +void* _Nonnull +NSArray_inst_SortedArrayUsingSelector(void* o, void* comparator) { + return [(NSArray*)o sortedArrayUsingSelector:comparator]; +} +void* _Nonnull +NSArray_inst_InitWithObjectsCount(void* o, void* objects, NSUInteger cnt) { + return [(NSArray*)o initWithObjects:objects count:cnt]; +} +void* _Nonnull +NSArray_inst_InitWithObjects(void* o, void* firstObj, void* object) { + NSObject** arr = object; + return [(NSArray*)o initWithObjects:firstObj , arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7], arr[8], arr[9], arr[10], arr[11], arr[12], arr[13], arr[14], arr[15], nil]; +} void* _Nonnull NSArray_inst_CopyWithZone(void* o, void* zone) { return [(NSArray*)o copyWithZone:zone]; @@ -368,33 +368,21 @@ NSUInteger NSArray_inst_CountByEnumeratingWithState(void* o, void* state, void* buffer, NSUInteger len) { return [(NSArray*)o countByEnumeratingWithState:state objects:buffer count:len]; } -void* _Nonnull -NSMutableArray_ArrayWithArray(void* array) { - return [NSMutableArray arrayWithArray:array]; -} -void* _Nonnull -NSMutableArray_KeyPathsForValuesAffectingValueForKey(void* key) { - return [NSMutableArray keyPathsForValuesAffectingValueForKey:key]; -} -void* _Nonnull -NSMutableArray_ClassFallbacksForKeyedArchiver() { - return [NSMutableArray classFallbacksForKeyedArchiver]; +BOOL +NSMutableArray_ResolveClassMethod(void* sel) { + return [NSMutableArray resolveClassMethod:sel]; } void* -NSMutableArray_Description() { - return [NSMutableArray description]; -} -void* _Nonnull -NSMutableArray_Array() { - return [NSMutableArray array]; -} -void* _Nonnull -NSMutableArray_ArrayWithCapacity(NSUInteger numItems) { - return [NSMutableArray arrayWithCapacity:numItems]; +NSMutableArray_MutableCopyWithZone(void* zone) { + return [NSMutableArray mutableCopyWithZone:zone]; } BOOL -NSMutableArray_AutomaticallyNotifiesObserversForKey(void* key) { - return [NSMutableArray automaticallyNotifiesObserversForKey:key]; +NSMutableArray_AccessInstanceVariablesDirectly() { + return [NSMutableArray accessInstanceVariablesDirectly]; +} +NSUInteger +NSMutableArray_Hash() { + return [NSMutableArray hash]; } void NSMutableArray_CancelPreviousPerformRequestsWithTarget(void* aTarget) { @@ -404,29 +392,33 @@ void NSMutableArray_CancelPreviousPerformRequestsWithTargetSelector(void* aTarget, void* aSelector, void* anArgument) { [NSMutableArray cancelPreviousPerformRequestsWithTarget:aTarget selector:aSelector object:anArgument]; } -void* -NSMutableArray_MutableCopyWithZone(void* zone) { - return [NSMutableArray mutableCopyWithZone:zone]; -} -void* -NSMutableArray_Superclass() { - return [NSMutableArray superclass]; -} -void* -NSMutableArray_InstanceMethodSignatureForSelector(void* aSelector) { - return [NSMutableArray instanceMethodSignatureForSelector:aSelector]; -} -BOOL -NSMutableArray_ResolveClassMethod(void* sel) { - return [NSMutableArray resolveClassMethod:sel]; +void* _Nonnull +NSMutableArray_ClassFallbacksForKeyedArchiver() { + return [NSMutableArray classFallbacksForKeyedArchiver]; } void* _Nonnull -NSMutableArray_ArrayWithObject(void* anObject) { - return [NSMutableArray arrayWithObject:anObject]; +NSMutableArray_ArrayWithCapacity(NSUInteger numItems) { + return [NSMutableArray arrayWithCapacity:numItems]; } -void -NSMutableArray_Load() { - [NSMutableArray load]; +void* +NSMutableArray_New() { + return [NSMutableArray new]; +} +void* +NSMutableArray_AllocWithZone(void* zone) { + return [NSMutableArray allocWithZone:zone]; +} +BOOL +NSMutableArray_ConformsToProtocol(void* protocol) { + return [NSMutableArray conformsToProtocol:protocol]; +} +void* _Nullable +NSMutableArray_ArrayWithContentsOfFile(void* path) { + return [NSMutableArray arrayWithContentsOfFile:path]; +} +void* _Nonnull +NSMutableArray_Array() { + return [NSMutableArray array]; } void* _Nullable NSMutableArray_ArrayWithContentsOfURL(void* url) { @@ -436,37 +428,13 @@ void* _Nullable NSMutableArray_ArrayWithContentsOfURLError(void* url, void* error) { return [NSMutableArray arrayWithContentsOfURL:url error:error]; } -BOOL -NSMutableArray_IsSubclassOfClass(void* aClass) { - return [NSMutableArray isSubclassOfClass:aClass]; -} -NSInteger -NSMutableArray_Version() { - return [NSMutableArray version]; -} -BOOL -NSMutableArray_ResolveInstanceMethod(void* sel) { - return [NSMutableArray resolveInstanceMethod:sel]; -} -void* _Nonnull -NSMutableArray_ClassForKeyedUnarchiver() { - return [NSMutableArray classForKeyedUnarchiver]; +void* +NSMutableArray_Alloc() { + return [NSMutableArray alloc]; } void* -NSMutableArray_New() { - return [NSMutableArray new]; -} -BOOL -NSMutableArray_ConformsToProtocol(void* protocol) { - return [NSMutableArray conformsToProtocol:protocol]; -} -NSUInteger -NSMutableArray_Hash() { - return [NSMutableArray hash]; -} -void* _Nullable -NSMutableArray_ArrayWithContentsOfFile(void* path) { - return [NSMutableArray arrayWithContentsOfFile:path]; +NSMutableArray_Superclass() { + return [NSMutableArray superclass]; } void* NSMutableArray_Class() { @@ -476,29 +444,13 @@ void* NSMutableArray_CopyWithZone(void* zone) { return [NSMutableArray copyWithZone:zone]; } -void -NSMutableArray_SetVersion(NSInteger aVersion) { - [NSMutableArray setVersion:aVersion]; -} -void* -NSMutableArray_DebugDescription() { - return [NSMutableArray debugDescription]; -} -void* -NSMutableArray_AllocWithZone(void* zone) { - return [NSMutableArray allocWithZone:zone]; -} BOOL -NSMutableArray_AccessInstanceVariablesDirectly() { - return [NSMutableArray accessInstanceVariablesDirectly]; +NSMutableArray_AutomaticallyNotifiesObserversForKey(void* key) { + return [NSMutableArray automaticallyNotifiesObserversForKey:key]; } -void* -NSMutableArray_Alloc() { - return [NSMutableArray alloc]; -} -BOOL -NSMutableArray_InstancesRespondToSelector(void* aSelector) { - return [NSMutableArray instancesRespondToSelector:aSelector]; +NSInteger +NSMutableArray_Version() { + return [NSMutableArray version]; } void* _Nonnull NSMutableArray_ArrayWithObjectsCount(void* objects, NSUInteger cnt) { @@ -509,29 +461,53 @@ NSMutableArray_ArrayWithObjects(void* firstObj, void* object) { NSObject** arr = object; return [NSMutableArray arrayWithObjects:firstObj , arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7], arr[8], arr[9], arr[10], arr[11], arr[12], arr[13], arr[14], arr[15], nil]; } -void -NSMutableArray_inst_RemoveObject(void* o, void* anObject) { - [(NSMutableArray*)o removeObject:anObject]; +void* +NSMutableArray_InstanceMethodSignatureForSelector(void* aSelector) { + return [NSMutableArray instanceMethodSignatureForSelector:aSelector]; +} +void* _Nonnull +NSMutableArray_KeyPathsForValuesAffectingValueForKey(void* key) { + return [NSMutableArray keyPathsForValuesAffectingValueForKey:key]; +} +void* _Nonnull +NSMutableArray_ArrayWithObject(void* anObject) { + return [NSMutableArray arrayWithObject:anObject]; +} +BOOL +NSMutableArray_ResolveInstanceMethod(void* sel) { + return [NSMutableArray resolveInstanceMethod:sel]; +} +BOOL +NSMutableArray_InstancesRespondToSelector(void* aSelector) { + return [NSMutableArray instancesRespondToSelector:aSelector]; +} +void* _Nonnull +NSMutableArray_ClassForKeyedUnarchiver() { + return [NSMutableArray classForKeyedUnarchiver]; +} +BOOL +NSMutableArray_IsSubclassOfClass(void* aClass) { + return [NSMutableArray isSubclassOfClass:aClass]; } void -NSMutableArray_inst_RemoveObjectInRange(void* o, void* anObject, NSRange range) { - [(NSMutableArray*)o removeObject:anObject inRange:range]; +NSMutableArray_SetVersion(NSInteger aVersion) { + [NSMutableArray setVersion:aVersion]; +} +void* +NSMutableArray_Description() { + return [NSMutableArray description]; +} +void* +NSMutableArray_DebugDescription() { + return [NSMutableArray debugDescription]; } void -NSMutableArray_inst_RemoveLastObject(void* o) { - [(NSMutableArray*)o removeLastObject]; +NSMutableArray_Load() { + [NSMutableArray load]; } -void -NSMutableArray_inst_RemoveObjectsInArray(void* o, void* otherArray) { - [(NSMutableArray*)o removeObjectsInArray:otherArray]; -} -void* _Nullable -NSMutableArray_inst_InitWithCoder(void* o, void* aDecoder) { - return [(NSMutableArray*)o initWithCoder:aDecoder]; -} -void -NSMutableArray_inst_AddObject(void* o, void* anObject) { - [(NSMutableArray*)o addObject:anObject]; +void* _Nonnull +NSMutableArray_ArrayWithArray(void* array) { + return [NSMutableArray arrayWithArray:array]; } void NSMutableArray_inst_RemoveObjectIdenticalTo(void* o, void* anObject) { @@ -542,16 +518,20 @@ NSMutableArray_inst_RemoveObjectIdenticalToInRange(void* o, void* anObject, NSRa [(NSMutableArray*)o removeObjectIdenticalTo:anObject inRange:range]; } void -NSMutableArray_inst_ExchangeObjectAtIndex(void* o, NSUInteger idx1, NSUInteger idx2) { - [(NSMutableArray*)o exchangeObjectAtIndex:idx1 withObjectAtIndex:idx2]; +NSMutableArray_inst_InsertObjects(void* o, void* objects, void* indexes) { + [(NSMutableArray*)o insertObjects:objects atIndexes:indexes]; } void -NSMutableArray_inst_RemoveObjectsAtIndexes(void* o, void* indexes) { - [(NSMutableArray*)o removeObjectsAtIndexes:indexes]; +NSMutableArray_inst_RemoveObjectsInRange(void* o, NSRange range) { + [(NSMutableArray*)o removeObjectsInRange:range]; } -void* _Nonnull -NSMutableArray_inst_Init(void* o) { - return [(NSMutableArray*)o init]; +void +NSMutableArray_inst_RemoveAllObjects(void* o) { + [(NSMutableArray*)o removeAllObjects]; +} +void +NSMutableArray_inst_InsertObject(void* o, void* anObject, NSUInteger index) { + [(NSMutableArray*)o insertObject:anObject atIndex:index]; } void NSMutableArray_inst_ReplaceObjectsInRangeWithObjectsFromArray(void* o, NSRange range, void* otherArray) { @@ -561,33 +541,65 @@ void NSMutableArray_inst_ReplaceObjectsInRangeWithObjectsFromArrayRange(void* o, NSRange range, void* otherArray, NSRange otherRange) { [(NSMutableArray*)o replaceObjectsInRange:range withObjectsFromArray:otherArray range:otherRange]; } -void -NSMutableArray_inst_SetObject(void* o, void* obj, NSUInteger idx) { - [(NSMutableArray*)o setObject:obj atIndexedSubscript:idx]; +void* _Nullable +NSMutableArray_inst_InitWithContentsOfURL(void* o, void* url) { + return [(NSMutableArray*)o initWithContentsOfURL:url]; } void -NSMutableArray_inst_InsertObject(void* o, void* anObject, NSUInteger index) { - [(NSMutableArray*)o insertObject:anObject atIndex:index]; +NSMutableArray_inst_FilterUsingPredicate(void* o, void* predicate) { + [(NSMutableArray*)o filterUsingPredicate:predicate]; } void -NSMutableArray_inst_InsertObjects(void* o, void* objects, void* indexes) { - [(NSMutableArray*)o insertObjects:objects atIndexes:indexes]; +NSMutableArray_inst_RemoveObject(void* o, void* anObject) { + [(NSMutableArray*)o removeObject:anObject]; } void -NSMutableArray_inst_SortUsingDescriptors(void* o, void* sortDescriptors) { - [(NSMutableArray*)o sortUsingDescriptors:sortDescriptors]; +NSMutableArray_inst_RemoveObjectInRange(void* o, void* anObject, NSRange range) { + [(NSMutableArray*)o removeObject:anObject inRange:range]; } -void -NSMutableArray_inst_RemoveAllObjects(void* o) { - [(NSMutableArray*)o removeAllObjects]; +void* _Nullable +NSMutableArray_inst_InitWithCoder(void* o, void* aDecoder) { + return [(NSMutableArray*)o initWithCoder:aDecoder]; +} +void* _Nonnull +NSMutableArray_inst_InitWithCapacity(void* o, NSUInteger numItems) { + return [(NSMutableArray*)o initWithCapacity:numItems]; } void NSMutableArray_inst_SetArray(void* o, void* otherArray) { [(NSMutableArray*)o setArray:otherArray]; } void -NSMutableArray_inst_RemoveObjectsInRange(void* o, NSRange range) { - [(NSMutableArray*)o removeObjectsInRange:range]; +NSMutableArray_inst_RemoveObjectsAtIndexes(void* o, void* indexes) { + [(NSMutableArray*)o removeObjectsAtIndexes:indexes]; +} +void +NSMutableArray_inst_ExchangeObjectAtIndex(void* o, NSUInteger idx1, NSUInteger idx2) { + [(NSMutableArray*)o exchangeObjectAtIndex:idx1 withObjectAtIndex:idx2]; +} +void +NSMutableArray_inst_SetObject(void* o, void* obj, NSUInteger idx) { + [(NSMutableArray*)o setObject:obj atIndexedSubscript:idx]; +} +void +NSMutableArray_inst_RemoveObjectsInArray(void* o, void* otherArray) { + [(NSMutableArray*)o removeObjectsInArray:otherArray]; +} +void* _Nonnull +NSMutableArray_inst_Init(void* o) { + return [(NSMutableArray*)o init]; +} +void +NSMutableArray_inst_AddObject(void* o, void* anObject) { + [(NSMutableArray*)o addObject:anObject]; +} +void +NSMutableArray_inst_SortUsingDescriptors(void* o, void* sortDescriptors) { + [(NSMutableArray*)o sortUsingDescriptors:sortDescriptors]; +} +void* _Nullable +NSMutableArray_inst_InitWithContentsOfFile(void* o, void* path) { + return [(NSMutableArray*)o initWithContentsOfFile:path]; } void NSMutableArray_inst_ReplaceObjectAtIndex(void* o, NSUInteger index, void* anObject) { @@ -597,26 +609,6 @@ void NSMutableArray_inst_SortUsingSelector(void* o, void* comparator) { [(NSMutableArray*)o sortUsingSelector:comparator]; } -void* _Nullable -NSMutableArray_inst_InitWithContentsOfFile(void* o, void* path) { - return [(NSMutableArray*)o initWithContentsOfFile:path]; -} -void -NSMutableArray_inst_FilterUsingPredicate(void* o, void* predicate) { - [(NSMutableArray*)o filterUsingPredicate:predicate]; -} -void* _Nonnull -NSMutableArray_inst_InitWithCapacity(void* o, NSUInteger numItems) { - return [(NSMutableArray*)o initWithCapacity:numItems]; -} -void -NSMutableArray_inst_ReplaceObjectsAtIndexes(void* o, void* indexes, void* objects) { - [(NSMutableArray*)o replaceObjectsAtIndexes:indexes withObjects:objects]; -} -void* _Nullable -NSMutableArray_inst_InitWithContentsOfURL(void* o, void* url) { - return [(NSMutableArray*)o initWithContentsOfURL:url]; -} void NSMutableArray_inst_AddObjectsFromArray(void* o, void* otherArray) { [(NSMutableArray*)o addObjectsFromArray:otherArray]; @@ -625,25 +617,37 @@ void NSMutableArray_inst_RemoveObjectAtIndex(void* o, NSUInteger index) { [(NSMutableArray*)o removeObjectAtIndex:index]; } -void* _Nonnull -NSString_PathWithComponents(void* components) { - return [NSString pathWithComponents:components]; +void +NSMutableArray_inst_RemoveLastObject(void* o) { + [(NSMutableArray*)o removeLastObject]; } -void* -NSString_Description() { - return [NSString description]; +void +NSMutableArray_inst_ReplaceObjectsAtIndexes(void* o, void* indexes, void* objects) { + [(NSMutableArray*)o replaceObjectsAtIndexes:indexes withObjects:objects]; +} +void +NSString_SetVersion(NSInteger aVersion) { + [NSString setVersion:aVersion]; } BOOL -NSString_AccessInstanceVariablesDirectly() { - return [NSString accessInstanceVariablesDirectly]; +NSString_ResolveClassMethod(void* sel) { + return [NSString resolveClassMethod:sel]; +} +void* _Nonnull +NSString_KeyPathsForValuesAffectingValueForKey(void* key) { + return [NSString keyPathsForValuesAffectingValueForKey:key]; +} +void* +NSString_AllocWithZone(void* zone) { + return [NSString allocWithZone:zone]; } NSUInteger NSString_Hash() { return [NSString hash]; } -void* _Nonnull -NSString_StringWithString(void* string) { - return [NSString stringWithString:string]; +void* +NSString_InstanceMethodSignatureForSelector(void* aSelector) { + return [NSString instanceMethodSignatureForSelector:aSelector]; } void* _Nullable NSString_StringWithContentsOfURLEncoding(void* url, NSStringEncoding enc, void* error) { @@ -653,25 +657,104 @@ void* _Nullable NSString_StringWithContentsOfURLUsedEncoding(void* url, void* enc, void* error) { return [NSString stringWithContentsOfURL:url usedEncoding:enc error:error]; } -void* _Nullable -NSString_StringWithCString(void* cString, NSStringEncoding enc) { - return [NSString stringWithCString:cString encoding:enc]; -} -BOOL -NSString_InstancesRespondToSelector(void* aSelector) { - return [NSString instancesRespondToSelector:aSelector]; +void* +NSString_Description() { + return [NSString description]; } void* _Nonnull NSString_ClassForKeyedUnarchiver() { return [NSString classForKeyedUnarchiver]; } -void* -NSString_Class() { - return [NSString class]; +BOOL +NSString_IsSubclassOfClass(void* aClass) { + return [NSString isSubclassOfClass:aClass]; } BOOL -NSString_ResolveClassMethod(void* sel) { - return [NSString resolveClassMethod:sel]; +NSString_AccessInstanceVariablesDirectly() { + return [NSString accessInstanceVariablesDirectly]; +} +BOOL +NSString_InstancesRespondToSelector(void* aSelector) { + return [NSString instancesRespondToSelector:aSelector]; +} +void* _Nullable +NSString_StringWithCString(void* cString, NSStringEncoding enc) { + return [NSString stringWithCString:cString encoding:enc]; +} +NSStringEncoding +NSString_StringEncodingForData(void* data, void* opts, void* string, void* usedLossyConversion) { + return [NSString stringEncodingForData:data encodingOptions:opts convertedString:string usedLossyConversion:usedLossyConversion]; +} +void* _Nonnull +NSString_ClassFallbacksForKeyedArchiver() { + return [NSString classFallbacksForKeyedArchiver]; +} +const void* _Nonnull +NSString_AvailableStringEncodings() { + return [NSString availableStringEncodings]; +} +void* _Nonnull +NSString_PathWithComponents(void* components) { + return [NSString pathWithComponents:components]; +} +void* _Nullable +NSString_StringWithUTF8String(void* nullTerminatedCString) { + NSString* ret; + @autoreleasepool { + ret = [NSString stringWithUTF8String:nullTerminatedCString]; + [ret retain]; + } + return ret; +} +void* _Nonnull +NSString_StringWithCharacters(void* characters, NSUInteger length) { + return [NSString stringWithCharacters:characters length:length]; +} +void* +NSString_Superclass() { + return [NSString superclass]; +} +void* _Nonnull +NSString_LocalizedStringWithFormat(void* format, void* object) { + NSObject** arr = object; + return [NSString localizedStringWithFormat:format , arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7], arr[8], arr[9], arr[10], arr[11], arr[12], arr[13], arr[14], arr[15], nil]; +} +BOOL +NSString_AutomaticallyNotifiesObserversForKey(void* key) { + return [NSString automaticallyNotifiesObserversForKey:key]; +} +void* +NSString_New() { + return [NSString new]; +} +void* +NSString_CopyWithZone(void* zone) { + return [NSString copyWithZone:zone]; +} +NSStringEncoding +NSString_DefaultCStringEncoding() { + return [NSString defaultCStringEncoding]; +} +void* +NSString_DebugDescription() { + return [NSString debugDescription]; +} +void* _Nonnull +NSString_StringWithFormat(void* format, void* object) { + NSObject** arr = object; + return [NSString stringWithFormat:format , arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7], arr[8], arr[9], arr[10], arr[11], arr[12], arr[13], arr[14], arr[15], nil]; +} +NSInteger +NSString_Version() { + return [NSString version]; +} +void* +NSString_Alloc() { + return [NSString alloc]; +} +void +NSString_Load() { + [NSString load]; } void* _Nullable NSString_StringWithContentsOfFileEncoding(void* path, NSStringEncoding enc, void* error) { @@ -681,29 +764,25 @@ void* _Nullable NSString_StringWithContentsOfFileUsedEncoding(void* path, void* enc, void* error) { return [NSString stringWithContentsOfFile:path usedEncoding:enc error:error]; } -void* -NSString_DebugDescription() { - return [NSString debugDescription]; -} BOOL NSString_ConformsToProtocol(void* protocol) { return [NSString conformsToProtocol:protocol]; } -NSStringEncoding -NSString_DefaultCStringEncoding() { - return [NSString defaultCStringEncoding]; -} void* NSString_MutableCopyWithZone(void* zone) { return [NSString mutableCopyWithZone:zone]; } +BOOL +NSString_ResolveInstanceMethod(void* sel) { + return [NSString resolveInstanceMethod:sel]; +} void* -NSString_CopyWithZone(void* zone) { - return [NSString copyWithZone:zone]; +NSString_Class() { + return [NSString class]; } void* _Nonnull -NSString_LocalizedNameOfStringEncoding(NSStringEncoding encoding) { - return [NSString localizedNameOfStringEncoding:encoding]; +NSString_String() { + return [NSString string]; } void NSString_CancelPreviousPerformRequestsWithTarget(void* aTarget) { @@ -713,119 +792,174 @@ void NSString_CancelPreviousPerformRequestsWithTargetSelector(void* aTarget, void* aSelector, void* anArgument) { [NSString cancelPreviousPerformRequestsWithTarget:aTarget selector:aSelector object:anArgument]; } -NSInteger -NSString_Version() { - return [NSString version]; -} -BOOL -NSString_AutomaticallyNotifiesObserversForKey(void* key) { - return [NSString automaticallyNotifiesObserversForKey:key]; -} -const void* _Nonnull -NSString_AvailableStringEncodings() { - return [NSString availableStringEncodings]; -} -BOOL -NSString_IsSubclassOfClass(void* aClass) { - return [NSString isSubclassOfClass:aClass]; -} -void* -NSString_Superclass() { - return [NSString superclass]; -} -void* -NSString_New() { - return [NSString new]; -} -void -NSString_SetVersion(NSInteger aVersion) { - [NSString setVersion:aVersion]; -} -void* -NSString_AllocWithZone(void* zone) { - return [NSString allocWithZone:zone]; +void* _Nonnull +NSString_StringWithString(void* string) { + NSString* ret; + @autoreleasepool { + ret = [NSString stringWithString:string]; + [ret retain]; + } + return (void* _Nonnull)ret; } void* _Nonnull -NSString_ClassFallbacksForKeyedArchiver() { - return [NSString classFallbacksForKeyedArchiver]; -} -void -NSString_Load() { - [NSString load]; +NSString_LocalizedNameOfStringEncoding(NSStringEncoding encoding) { + return [NSString localizedNameOfStringEncoding:encoding]; } void* _Nonnull -NSString_LocalizedStringWithFormat(void* format, void* object) { - NSObject** arr = object; - return [NSString localizedStringWithFormat:format , arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7], arr[8], arr[9], arr[10], arr[11], arr[12], arr[13], arr[14], arr[15], nil]; -} -void* -NSString_Alloc() { - return [NSString alloc]; +NSString_inst_StringByDeletingPathExtension(void* o) { + return [(NSString*)o stringByDeletingPathExtension]; } void* _Nonnull -NSString_StringWithCharacters(void* characters, NSUInteger length) { - return [NSString stringWithCharacters:characters length:length]; +NSString_inst_LocalizedCapitalizedString(void* o) { + return [(NSString*)o localizedCapitalizedString]; } -NSStringEncoding -NSString_StringEncodingForData(void* data, void* opts, void* string, void* usedLossyConversion) { - return [NSString stringEncodingForData:data encodingOptions:opts convertedString:string usedLossyConversion:usedLossyConversion]; +void* _Nonnull +NSString_inst_StringByExpandingTildeInPath(void* o) { + return [(NSString*)o stringByExpandingTildeInPath]; } -BOOL -NSString_ResolveInstanceMethod(void* sel) { - return [NSString resolveInstanceMethod:sel]; +void* _Nonnull +NSString_inst_StringByReplacingCharactersInRange(void* o, NSRange range, void* replacement) { + return [(NSString*)o stringByReplacingCharactersInRange:range withString:replacement]; } void* _Nullable -NSString_StringWithUTF8String(void* nullTerminatedCString) { - return [NSString stringWithUTF8String:nullTerminatedCString]; +NSString_inst_InitWithBytes(void* o, void* bytes, NSUInteger len, NSStringEncoding encoding) { + return [(NSString*)o initWithBytes:bytes length:len encoding:encoding]; } -void* _Nonnull -NSString_KeyPathsForValuesAffectingValueForKey(void* key) { - return [NSString keyPathsForValuesAffectingValueForKey:key]; -} -void* _Nonnull -NSString_String() { - return [NSString string]; -} -void* -NSString_InstanceMethodSignatureForSelector(void* aSelector) { - return [NSString instanceMethodSignatureForSelector:aSelector]; -} -void* _Nonnull -NSString_StringWithFormat(void* format, void* object) { - NSObject** arr = object; - return [NSString stringWithFormat:format , arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7], arr[8], arr[9], arr[10], arr[11], arr[12], arr[13], arr[14], arr[15], nil]; -} -void* _Nonnull -NSString_inst_InitWithCharacters(void* o, void* characters, NSUInteger length) { - return [(NSString*)o initWithCharacters:characters length:length]; -} -void* _Nonnull -NSString_inst_StringByStandardizingPath(void* o) { - return [(NSString*)o stringByStandardizingPath]; +unichar +NSString_inst_CharacterAtIndex(void* o, NSUInteger index) { + return [(NSString*)o characterAtIndex:index]; } BOOL -NSString_inst_HasSuffix(void* o, void* str) { - return [(NSString*)o hasSuffix:str]; -} -void* _Nonnull -NSString_inst_ComponentsSeparatedByCharactersInSet(void* o, void* separator) { - return [(NSString*)o componentsSeparatedByCharactersInSet:separator]; -} -NSUInteger -NSString_inst_LengthOfBytesUsingEncoding(void* o, NSStringEncoding enc) { - return [(NSString*)o lengthOfBytesUsingEncoding:enc]; +NSString_inst_WriteToFile(void* o, void* path, BOOL useAuxiliaryFile, NSStringEncoding enc, void* error) { + return [(NSString*)o writeToFile:path atomically:useAuxiliaryFile encoding:enc error:error]; } BOOL -NSString_inst_LocalizedCaseInsensitiveContainsString(void* o, void* str) { - return [(NSString*)o localizedCaseInsensitiveContainsString:str]; +NSString_inst_LocalizedStandardContainsString(void* o, void* str) { + return [(NSString*)o localizedStandardContainsString:str]; +} +void* _Nonnull +NSString_inst_PrecomposedStringWithCanonicalMapping(void* o) { + return [(NSString*)o precomposedStringWithCanonicalMapping]; +} +void* _Nonnull +NSString_inst_StringByAppendingString(void* o, void* aString) { + return [(NSString*)o stringByAppendingString:aString]; +} +void +NSString_inst_GetParagraphStart(void* o, void* startPtr, void* parEndPtr, void* contentsEndPtr, NSRange range) { + [(NSString*)o getParagraphStart:startPtr end:parEndPtr contentsEnd:contentsEndPtr forRange:range]; +} +void* _Nullable +NSString_inst_InitWithUTF8String(void* o, void* nullTerminatedCString) { + return [(NSString*)o initWithUTF8String:nullTerminatedCString]; +} +void* _Nonnull +NSString_inst_StringByFoldingWithOptions(void* o, NSStringCompareOptions options, void* locale) { + return [(NSString*)o stringByFoldingWithOptions:options locale:locale]; +} +void* _Nullable +NSString_inst_InitWithData(void* o, void* data, NSStringEncoding encoding) { + return [(NSString*)o initWithData:data encoding:encoding]; +} +void* _Nonnull +NSString_inst_Description(void* o) { + return [(NSString*)o description]; +} +void* _Nonnull +NSString_inst_StringByResolvingSymlinksInPath(void* o) { + return [(NSString*)o stringByResolvingSymlinksInPath]; +} +void +NSString_inst_GetLineStart(void* o, void* startPtr, void* lineEndPtr, void* contentsEndPtr, NSRange range) { + [(NSString*)o getLineStart:startPtr end:lineEndPtr contentsEnd:contentsEndPtr forRange:range]; +} +void* _Nonnull +NSString_inst_StringByPaddingToLength(void* o, NSUInteger newLength, void* padString, NSUInteger padIndex) { + return [(NSString*)o stringByPaddingToLength:newLength withString:padString startingAtIndex:padIndex]; } void* _Nonnull NSString_inst_CapitalizedString(void* o) { return [(NSString*)o capitalizedString]; } +double +NSString_inst_DoubleValue(void* o) { + return [(NSString*)o doubleValue]; +} +void* _Nonnull +NSString_inst_LocalizedLowercaseString(void* o) { + return [(NSString*)o localizedLowercaseString]; +} +void* _Nullable +NSString_inst_StringByAddingPercentEncodingWithAllowedCharacters(void* o, void* allowedCharacters) { + return [(NSString*)o stringByAddingPercentEncodingWithAllowedCharacters:allowedCharacters]; +} +void* _Nonnull +NSString_inst_StringsByAppendingPaths(void* o, void* paths) { + return [(NSString*)o stringsByAppendingPaths:paths]; +} +BOOL +NSString_inst_IsEqualToString(void* o, void* aString) { + return [(NSString*)o isEqualToString:aString]; +} +void* _Nonnull +NSString_inst_VariantFittingPresentationWidth(void* o, NSInteger width) { + return [(NSString*)o variantFittingPresentationWidth:width]; +} NSUInteger -NSString_inst_Hash(void* o) { - return [(NSString*)o hash]; +NSString_inst_CompletePathIntoString(void* o, void* outputName, BOOL flag, void* outputArray, void* filterTypes) { + return [(NSString*)o completePathIntoString:outputName caseSensitive:flag matchesIntoArray:outputArray filterTypes:filterTypes]; +} +void* _Nonnull +NSString_inst_CapitalizedStringWithLocale(void* o, void* locale) { + return [(NSString*)o capitalizedStringWithLocale:locale]; +} +void* _Nullable +NSString_inst_StringByApplyingTransform(void* o, void* transform, BOOL reverse) { + return [(NSString*)o stringByApplyingTransform:transform reverse:reverse]; +} +void* _Nonnull +NSString_inst_StringByReplacingOccurrencesOfStringWithString(void* o, void* target, void* replacement) { + return [(NSString*)o stringByReplacingOccurrencesOfString:target withString:replacement]; +} +void* _Nonnull +NSString_inst_StringByReplacingOccurrencesOfStringWithStringOptions(void* o, void* target, void* replacement, NSStringCompareOptions options, NSRange searchRange) { + return [(NSString*)o stringByReplacingOccurrencesOfString:target withString:replacement options:options range:searchRange]; +} +NSRange +NSString_inst_RangeOfComposedCharacterSequencesForRange(void* o, NSRange range) { + return [(NSString*)o rangeOfComposedCharacterSequencesForRange:range]; +} +void* _Nonnull +NSString_inst_SubstringFromIndex(void* o, NSUInteger from) { + return [(NSString*)o substringFromIndex:from]; +} +void* _Nonnull +NSString_inst_PrecomposedStringWithCompatibilityMapping(void* o) { + return [(NSString*)o precomposedStringWithCompatibilityMapping]; +} +const void* _Nonnull +NSString_inst_FileSystemRepresentation(void* o) { + return [(NSString*)o fileSystemRepresentation]; +} +BOOL +NSString_inst_BoolValue(void* o) { + return [(NSString*)o boolValue]; +} +BOOL +NSString_inst_HasPrefix(void* o, void* str) { + return [(NSString*)o hasPrefix:str]; +} +NSComparisonResult +NSString_inst_LocalizedCompare(void* o, void* string) { + return [(NSString*)o localizedCompare:string]; +} +void* _Nonnull +NSString_inst_LowercaseString(void* o) { + return [(NSString*)o lowercaseString]; +} +void* _Nonnull +NSString_inst_InitWithString(void* o, void* aString) { + return [(NSString*)o initWithString:aString]; } void* _Nullable NSString_inst_InitWithContentsOfURLEncoding(void* o, void* url, NSStringEncoding enc, void* error) { @@ -835,13 +969,77 @@ void* _Nullable NSString_inst_InitWithContentsOfURLUsedEncoding(void* o, void* url, void* enc, void* error) { return [(NSString*)o initWithContentsOfURL:url usedEncoding:enc error:error]; } -NSUInteger -NSString_inst_CompletePathIntoString(void* o, void* outputName, BOOL flag, void* outputArray, void* filterTypes) { - return [(NSString*)o completePathIntoString:outputName caseSensitive:flag matchesIntoArray:outputArray filterTypes:filterTypes]; +NSRange +NSString_inst_RangeOfString(void* o, void* searchString) { + return [(NSString*)o rangeOfString:searchString]; +} +NSRange +NSString_inst_RangeOfStringOptions(void* o, void* searchString, NSStringCompareOptions mask) { + return [(NSString*)o rangeOfString:searchString options:mask]; +} +NSRange +NSString_inst_RangeOfStringOptionsRange(void* o, void* searchString, NSStringCompareOptions mask, NSRange rangeOfReceiverToSearch) { + return [(NSString*)o rangeOfString:searchString options:mask range:rangeOfReceiverToSearch]; +} +NSRange +NSString_inst_RangeOfStringOptionsRangeLocale(void* o, void* searchString, NSStringCompareOptions mask, NSRange rangeOfReceiverToSearch, void* locale) { + return [(NSString*)o rangeOfString:searchString options:mask range:rangeOfReceiverToSearch locale:locale]; +} +const void* _Nullable +NSString_inst_CStringUsingEncoding(void* o, NSStringEncoding encoding) { + return [(NSString*)o cStringUsingEncoding:encoding]; +} +BOOL +NSString_inst_GetFileSystemRepresentation(void* o, void* cname, NSUInteger max) { + return [(NSString*)o getFileSystemRepresentation:cname maxLength:max]; +} +BOOL +NSString_inst_CanBeConvertedToEncoding(void* o, NSStringEncoding encoding) { + return [(NSString*)o canBeConvertedToEncoding:encoding]; } void* _Nonnull -NSString_inst_DecomposedStringWithCanonicalMapping(void* o) { - return [(NSString*)o decomposedStringWithCanonicalMapping]; +NSString_inst_ComponentsSeparatedByCharactersInSet(void* o, void* separator) { + return [(NSString*)o componentsSeparatedByCharactersInSet:separator]; +} +void* _Nonnull +NSString_inst_StringByDeletingLastPathComponent(void* o) { + return [(NSString*)o stringByDeletingLastPathComponent]; +} +void* _Nonnull +NSString_inst_StringByAbbreviatingWithTildeInPath(void* o) { + return [(NSString*)o stringByAbbreviatingWithTildeInPath]; +} +int +NSString_inst_IntValue(void* o) { + return [(NSString*)o intValue]; +} +long long +NSString_inst_LongLongValue(void* o) { + return [(NSString*)o longLongValue]; +} +void* _Nullable +NSString_inst_DataUsingEncoding(void* o, NSStringEncoding encoding) { + return [(NSString*)o dataUsingEncoding:encoding]; +} +void* _Nullable +NSString_inst_DataUsingEncodingAllowLossyConversion(void* o, NSStringEncoding encoding, BOOL lossy) { + return [(NSString*)o dataUsingEncoding:encoding allowLossyConversion:lossy]; +} +void* _Nonnull +NSString_inst_StringByStandardizingPath(void* o) { + return [(NSString*)o stringByStandardizingPath]; +} +void* _Nonnull +NSString_inst_InitWithCharacters(void* o, void* characters, NSUInteger length) { + return [(NSString*)o initWithCharacters:characters length:length]; +} +void* _Nullable +NSString_inst_PropertyListFromStringsFileFormat(void* o) { + return [(NSString*)o propertyListFromStringsFileFormat]; +} +NSUInteger +NSString_inst_LengthOfBytesUsingEncoding(void* o, NSStringEncoding enc) { + return [(NSString*)o lengthOfBytesUsingEncoding:enc]; } void* _Nonnull NSString_inst_InitWithFormat(void* o, void* format, void* object) { @@ -853,10 +1051,107 @@ NSString_inst_InitWithFormatLocale(void* o, void* format, void* locale, void* ob NSObject** arr = object; return [(NSString*)o initWithFormat:format locale:locale , arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7], arr[8], arr[9], arr[10], arr[11], arr[12], arr[13], arr[14], arr[15], nil]; } +NSRange +NSString_inst_RangeOfComposedCharacterSequenceAtIndex(void* o, NSUInteger index) { + return [(NSString*)o rangeOfComposedCharacterSequenceAtIndex:index]; +} +BOOL +NSString_inst_IsAbsolutePath(void* o) { + return [(NSString*)o isAbsolutePath]; +} +BOOL +NSString_inst_GetCString(void* o, void* buffer, NSUInteger maxBufferCount, NSStringEncoding encoding) { + return [(NSString*)o getCString:buffer maxLength:maxBufferCount encoding:encoding]; +} +void* _Nullable +NSString_inst_InitWithCString(void* o, void* nullTerminatedCString, NSStringEncoding encoding) { + return [(NSString*)o initWithCString:nullTerminatedCString encoding:encoding]; +} +void* _Nonnull +NSString_inst_StringByAppendingFormat(void* o, void* format, void* object) { + NSObject** arr = object; + return [(NSString*)o stringByAppendingFormat:format , arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7], arr[8], arr[9], arr[10], arr[11], arr[12], arr[13], arr[14], arr[15], nil]; +} +void* _Nonnull +NSString_inst_StringByAppendingPathComponent(void* o, void* str) { + return [(NSString*)o stringByAppendingPathComponent:str]; +} +void* _Nonnull +NSString_inst_Init(void* o) { + return [(NSString*)o init]; +} +void* _Nonnull +NSString_inst_LastPathComponent(void* o) { + return [(NSString*)o lastPathComponent]; +} +NSInteger +NSString_inst_IntegerValue(void* o) { + return [(NSString*)o integerValue]; +} void* _Nonnull NSString_inst_SubstringWithRange(void* o, NSRange range) { return [(NSString*)o substringWithRange:range]; } +NSComparisonResult +NSString_inst_CaseInsensitiveCompare(void* o, void* string) { + return [(NSString*)o caseInsensitiveCompare:string]; +} +void* _Nonnull +NSString_inst_LowercaseStringWithLocale(void* o, void* locale) { + return [(NSString*)o lowercaseStringWithLocale:locale]; +} +NSComparisonResult +NSString_inst_LocalizedStandardCompare(void* o, void* string) { + return [(NSString*)o localizedStandardCompare:string]; +} +NSUInteger +NSString_inst_Hash(void* o) { + return [(NSString*)o hash]; +} +NSComparisonResult +NSString_inst_LocalizedCaseInsensitiveCompare(void* o, void* string) { + return [(NSString*)o localizedCaseInsensitiveCompare:string]; +} +NSUInteger +NSString_inst_Length(void* o) { + return [(NSString*)o length]; +} +void* _Nullable +NSString_inst_InitWithBytesNoCopy(void* o, void* bytes, NSUInteger len, NSStringEncoding encoding, BOOL freeBuffer) { + return [(NSString*)o initWithBytesNoCopy:bytes length:len encoding:encoding freeWhenDone:freeBuffer]; +} +NSStringEncoding +NSString_inst_SmallestEncoding(void* o) { + return [(NSString*)o smallestEncoding]; +} +void* _Nonnull +NSString_inst_InitWithCharactersNoCopy(void* o, void* characters, NSUInteger length, BOOL freeBuffer) { + return [(NSString*)o initWithCharactersNoCopy:characters length:length freeWhenDone:freeBuffer]; +} +BOOL +NSString_inst_ContainsString(void* o, void* str) { + return [(NSString*)o containsString:str]; +} +void* _Nonnull +NSString_inst_CommonPrefixWithString(void* o, void* str, NSStringCompareOptions mask) { + return [(NSString*)o commonPrefixWithString:str options:mask]; +} +void* _Nullable +NSString_inst_InitWithContentsOfFileEncoding(void* o, void* path, NSStringEncoding enc, void* error) { + return [(NSString*)o initWithContentsOfFile:path encoding:enc error:error]; +} +void* _Nullable +NSString_inst_InitWithContentsOfFileUsedEncoding(void* o, void* path, void* enc, void* error) { + return [(NSString*)o initWithContentsOfFile:path usedEncoding:enc error:error]; +} +NSUInteger +NSString_inst_MaximumLengthOfBytesUsingEncoding(void* o, NSStringEncoding enc) { + return [(NSString*)o maximumLengthOfBytesUsingEncoding:enc]; +} +void* _Nonnull +NSString_inst_DecomposedStringWithCanonicalMapping(void* o) { + return [(NSString*)o decomposedStringWithCanonicalMapping]; +} void NSString_inst_GetCharacters(void* o, void* buffer) { [(NSString*)o getCharacters:buffer]; @@ -865,138 +1160,9 @@ void NSString_inst_GetCharactersRange(void* o, void* buffer, NSRange range) { [(NSString*)o getCharacters:buffer range:range]; } -void* _Nonnull -NSString_inst_LowercaseStringWithLocale(void* o, void* locale) { - return [(NSString*)o lowercaseStringWithLocale:locale]; -} -void* _Nonnull -NSString_inst_StringByExpandingTildeInPath(void* o) { - return [(NSString*)o stringByExpandingTildeInPath]; -} -void* _Nonnull -NSString_inst_StringByAppendingFormat(void* o, void* format, void* object) { - NSObject** arr = object; - return [(NSString*)o stringByAppendingFormat:format , arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7], arr[8], arr[9], arr[10], arr[11], arr[12], arr[13], arr[14], arr[15], nil]; -} -NSRange -NSString_inst_RangeOfComposedCharacterSequencesForRange(void* o, NSRange range) { - return [(NSString*)o rangeOfComposedCharacterSequencesForRange:range]; -} -void* _Nullable -NSString_inst_PropertyListFromStringsFileFormat(void* o) { - return [(NSString*)o propertyListFromStringsFileFormat]; -} -void* _Nonnull -NSString_inst_CommonPrefixWithString(void* o, void* str, NSStringCompareOptions mask) { - return [(NSString*)o commonPrefixWithString:str options:mask]; -} -const void* _Nonnull -NSString_inst_FileSystemRepresentation(void* o) { - return [(NSString*)o fileSystemRepresentation]; -} -void* _Nonnull -NSString_inst_StringByFoldingWithOptions(void* o, NSStringCompareOptions options, void* locale) { - return [(NSString*)o stringByFoldingWithOptions:options locale:locale]; -} -void* _Nonnull -NSString_inst_StringsByAppendingPaths(void* o, void* paths) { - return [(NSString*)o stringsByAppendingPaths:paths]; -} -void* _Nonnull -NSString_inst_InitWithCharactersNoCopy(void* o, void* characters, NSUInteger length, BOOL freeBuffer) { - return [(NSString*)o initWithCharactersNoCopy:characters length:length freeWhenDone:freeBuffer]; -} -NSComparisonResult -NSString_inst_LocalizedStandardCompare(void* o, void* string) { - return [(NSString*)o localizedStandardCompare:string]; -} -void* _Nonnull -NSString_inst_LocalizedCapitalizedString(void* o) { - return [(NSString*)o localizedCapitalizedString]; -} -void* _Nonnull -NSString_inst_UppercaseString(void* o) { - return [(NSString*)o uppercaseString]; -} -void* _Nonnull -NSString_inst_PropertyList(void* o) { - return [(NSString*)o propertyList]; -} -NSRange -NSString_inst_LocalizedStandardRangeOfString(void* o, void* str) { - return [(NSString*)o localizedStandardRangeOfString:str]; -} BOOL -NSString_inst_WriteToFile(void* o, void* path, BOOL useAuxiliaryFile, NSStringEncoding enc, void* error) { - return [(NSString*)o writeToFile:path atomically:useAuxiliaryFile encoding:enc error:error]; -} -unichar -NSString_inst_CharacterAtIndex(void* o, NSUInteger index) { - return [(NSString*)o characterAtIndex:index]; -} -void* _Nonnull -NSString_inst_StringByDeletingPathExtension(void* o) { - return [(NSString*)o stringByDeletingPathExtension]; -} -void* _Nonnull -NSString_inst_StringByTrimmingCharactersInSet(void* o, void* set) { - return [(NSString*)o stringByTrimmingCharactersInSet:set]; -} -void* _Nonnull -NSString_inst_PrecomposedStringWithCompatibilityMapping(void* o) { - return [(NSString*)o precomposedStringWithCompatibilityMapping]; -} -void* _Nonnull -NSString_inst_ComponentsSeparatedByString(void* o, void* separator) { - return [(NSString*)o componentsSeparatedByString:separator]; -} -void* _Nonnull -NSString_inst_StringByDeletingLastPathComponent(void* o) { - return [(NSString*)o stringByDeletingLastPathComponent]; -} -void* _Nonnull -NSString_inst_PrecomposedStringWithCanonicalMapping(void* o) { - return [(NSString*)o precomposedStringWithCanonicalMapping]; -} -void -NSString_inst_GetParagraphStart(void* o, void* startPtr, void* parEndPtr, void* contentsEndPtr, NSRange range) { - [(NSString*)o getParagraphStart:startPtr end:parEndPtr contentsEnd:contentsEndPtr forRange:range]; -} -void* _Nullable -NSString_inst_InitWithCoder(void* o, void* aDecoder) { - return [(NSString*)o initWithCoder:aDecoder]; -} -NSRange -NSString_inst_LineRangeForRange(void* o, NSRange range) { - return [(NSString*)o lineRangeForRange:range]; -} -NSRange -NSString_inst_RangeOfComposedCharacterSequenceAtIndex(void* o, NSUInteger index) { - return [(NSString*)o rangeOfComposedCharacterSequenceAtIndex:index]; -} -void* _Nonnull -NSString_inst_StringByAppendingPathComponent(void* o, void* str) { - return [(NSString*)o stringByAppendingPathComponent:str]; -} -BOOL -NSString_inst_WriteToURL(void* o, void* url, BOOL useAuxiliaryFile, NSStringEncoding enc, void* error) { - return [(NSString*)o writeToURL:url atomically:useAuxiliaryFile encoding:enc error:error]; -} -void* _Nullable -NSString_inst_InitWithBytes(void* o, void* bytes, NSUInteger len, NSStringEncoding encoding) { - return [(NSString*)o initWithBytes:bytes length:len encoding:encoding]; -} -void* _Nullable -NSString_inst_DataUsingEncoding(void* o, NSStringEncoding encoding) { - return [(NSString*)o dataUsingEncoding:encoding]; -} -void* _Nullable -NSString_inst_DataUsingEncodingAllowLossyConversion(void* o, NSStringEncoding encoding, BOOL lossy) { - return [(NSString*)o dataUsingEncoding:encoding allowLossyConversion:lossy]; -} -void -NSString_inst_GetLineStart(void* o, void* startPtr, void* lineEndPtr, void* contentsEndPtr, NSRange range) { - [(NSString*)o getLineStart:startPtr end:lineEndPtr contentsEnd:contentsEndPtr forRange:range]; +NSString_inst_GetBytes(void* o, void* buffer, NSUInteger maxBufferCount, void* usedBufferCount, NSStringEncoding encoding, NSStringEncodingConversionOptions options, NSRange range, void* leftover) { + return [(NSString*)o getBytes:buffer maxLength:maxBufferCount usedLength:usedBufferCount encoding:encoding options:options range:range remainingRange:leftover]; } NSRange NSString_inst_RangeOfCharacterFromSet(void* o, void* searchSet) { @@ -1010,54 +1176,84 @@ NSRange NSString_inst_RangeOfCharacterFromSetOptionsRange(void* o, void* searchSet, NSStringCompareOptions mask, NSRange rangeOfReceiverToSearch) { return [(NSString*)o rangeOfCharacterFromSet:searchSet options:mask range:rangeOfReceiverToSearch]; } -void* _Nonnull -NSString_inst_LastPathComponent(void* o) { - return [(NSString*)o lastPathComponent]; +NSRange +NSString_inst_ParagraphRangeForRange(void* o, NSRange range) { + return [(NSString*)o paragraphRangeForRange:range]; } void* _Nonnull -NSString_inst_StringByResolvingSymlinksInPath(void* o) { - return [(NSString*)o stringByResolvingSymlinksInPath]; -} -void* _Nonnull -NSString_inst_PathExtension(void* o) { - return [(NSString*)o pathExtension]; -} -NSUInteger -NSString_inst_Length(void* o) { - return [(NSString*)o length]; -} -void* _Nonnull -NSString_inst_StringByReplacingCharactersInRange(void* o, NSRange range, void* replacement) { - return [(NSString*)o stringByReplacingCharactersInRange:range withString:replacement]; -} -NSUInteger -NSString_inst_MaximumLengthOfBytesUsingEncoding(void* o, NSStringEncoding enc) { - return [(NSString*)o maximumLengthOfBytesUsingEncoding:enc]; -} -void* _Nonnull -NSString_inst_UppercaseStringWithLocale(void* o, void* locale) { - return [(NSString*)o uppercaseStringWithLocale:locale]; -} -BOOL -NSString_inst_HasPrefix(void* o, void* str) { - return [(NSString*)o hasPrefix:str]; +NSString_inst_ComponentsSeparatedByString(void* o, void* separator) { + return [(NSString*)o componentsSeparatedByString:separator]; } void* _Nullable -NSString_inst_InitWithUTF8String(void* o, void* nullTerminatedCString) { - return [(NSString*)o initWithUTF8String:nullTerminatedCString]; +NSString_inst_InitWithCoder(void* o, void* aDecoder) { + return [(NSString*)o initWithCoder:aDecoder]; +} +void* _Nullable +NSString_inst_StringByAppendingPathExtension(void* o, void* str) { + return [(NSString*)o stringByAppendingPathExtension:str]; +} +BOOL +NSString_inst_LocalizedCaseInsensitiveContainsString(void* o, void* str) { + return [(NSString*)o localizedCaseInsensitiveContainsString:str]; } void* _Nonnull -NSString_inst_VariantFittingPresentationWidth(void* o, NSInteger width) { - return [(NSString*)o variantFittingPresentationWidth:width]; +NSString_inst_LinguisticTagsInRange(void* o, NSRange range, void* scheme, NSLinguisticTaggerOptions options, void* orthography, void* tokenRanges) { + return [(NSString*)o linguisticTagsInRange:range scheme:scheme options:options orthography:orthography tokenRanges:tokenRanges]; } -void* _Nonnull -NSString_inst_SubstringFromIndex(void* o, NSUInteger from) { - return [(NSString*)o substringFromIndex:from]; +NSRange +NSString_inst_LocalizedStandardRangeOfString(void* o, void* str) { + return [(NSString*)o localizedStandardRangeOfString:str]; +} +const void* _Nullable +NSString_inst_UTF8String(void* o) { + const void* _Nullable ret; + @autoreleasepool { ret = (const void* _Nullable)[(NSString*)o UTF8String]; } + return ret; } void* _Nonnull NSString_inst_SubstringToIndex(void* o, NSUInteger to) { return [(NSString*)o substringToIndex:to]; } +BOOL +NSString_inst_HasSuffix(void* o, void* str) { + return [(NSString*)o hasSuffix:str]; +} +void* _Nonnull +NSString_inst_PathComponents(void* o) { + return [(NSString*)o pathComponents]; +} +void* _Nonnull +NSString_inst_DecomposedStringWithCompatibilityMapping(void* o) { + return [(NSString*)o decomposedStringWithCompatibilityMapping]; +} +void* _Nonnull +NSString_inst_PropertyList(void* o) { + return [(NSString*)o propertyList]; +} +void* _Nullable +NSString_inst_StringByRemovingPercentEncoding(void* o) { + return [(NSString*)o stringByRemovingPercentEncoding]; +} +BOOL +NSString_inst_WriteToURL(void* o, void* url, BOOL useAuxiliaryFile, NSStringEncoding enc, void* error) { + return [(NSString*)o writeToURL:url atomically:useAuxiliaryFile encoding:enc error:error]; +} +NSRange +NSString_inst_LineRangeForRange(void* o, NSRange range) { + return [(NSString*)o lineRangeForRange:range]; +} +void* _Nonnull +NSString_inst_LocalizedUppercaseString(void* o) { + return [(NSString*)o localizedUppercaseString]; +} +float +NSString_inst_FloatValue(void* o) { + return [(NSString*)o floatValue]; +} +void* _Nonnull +NSString_inst_UppercaseString(void* o) { + return [(NSString*)o uppercaseString]; +} NSComparisonResult NSString_inst_Compare(void* o, void* string) { return [(NSString*)o compare:string]; @@ -1074,205 +1270,21 @@ NSComparisonResult NSString_inst_CompareOptionsRangeLocale(void* o, void* string, NSStringCompareOptions mask, NSRange rangeOfReceiverToCompare, void* locale) { return [(NSString*)o compare:string options:mask range:rangeOfReceiverToCompare locale:locale]; } -NSInteger -NSString_inst_IntegerValue(void* o) { - return [(NSString*)o integerValue]; -} -void* _Nullable -NSString_inst_StringByRemovingPercentEncoding(void* o) { - return [(NSString*)o stringByRemovingPercentEncoding]; -} -void* _Nullable -NSString_inst_InitWithCString(void* o, void* nullTerminatedCString, NSStringEncoding encoding) { - return [(NSString*)o initWithCString:nullTerminatedCString encoding:encoding]; -} -BOOL -NSString_inst_IsEqualToString(void* o, void* aString) { - return [(NSString*)o isEqualToString:aString]; +void* _Nonnull +NSString_inst_UppercaseStringWithLocale(void* o, void* locale) { + return [(NSString*)o uppercaseStringWithLocale:locale]; } void* _Nonnull -NSString_inst_LocalizedLowercaseString(void* o) { - return [(NSString*)o localizedLowercaseString]; -} -void* _Nonnull -NSString_inst_StringByAbbreviatingWithTildeInPath(void* o) { - return [(NSString*)o stringByAbbreviatingWithTildeInPath]; -} -void* _Nullable -NSString_inst_StringByApplyingTransform(void* o, void* transform, BOOL reverse) { - return [(NSString*)o stringByApplyingTransform:transform reverse:reverse]; -} -void* _Nonnull -NSString_inst_DecomposedStringWithCompatibilityMapping(void* o) { - return [(NSString*)o decomposedStringWithCompatibilityMapping]; -} -NSComparisonResult -NSString_inst_LocalizedCaseInsensitiveCompare(void* o, void* string) { - return [(NSString*)o localizedCaseInsensitiveCompare:string]; +NSString_inst_PathExtension(void* o) { + return [(NSString*)o pathExtension]; } NSStringEncoding NSString_inst_FastestEncoding(void* o) { return [(NSString*)o fastestEncoding]; } void* _Nonnull -NSString_inst_CapitalizedStringWithLocale(void* o, void* locale) { - return [(NSString*)o capitalizedStringWithLocale:locale]; -} -BOOL -NSString_inst_ContainsString(void* o, void* str) { - return [(NSString*)o containsString:str]; -} -void* _Nonnull -NSString_inst_InitWithString(void* o, void* aString) { - return [(NSString*)o initWithString:aString]; -} -BOOL -NSString_inst_BoolValue(void* o) { - return [(NSString*)o boolValue]; -} -NSStringEncoding -NSString_inst_SmallestEncoding(void* o) { - return [(NSString*)o smallestEncoding]; -} -NSComparisonResult -NSString_inst_LocalizedCompare(void* o, void* string) { - return [(NSString*)o localizedCompare:string]; -} -const void* _Nullable -NSString_inst_CStringUsingEncoding(void* o, NSStringEncoding encoding) { - return [(NSString*)o cStringUsingEncoding:encoding]; -} -BOOL -NSString_inst_LocalizedStandardContainsString(void* o, void* str) { - return [(NSString*)o localizedStandardContainsString:str]; -} -void* _Nullable -NSString_inst_StringByAppendingPathExtension(void* o, void* str) { - return [(NSString*)o stringByAppendingPathExtension:str]; -} -void* _Nullable -NSString_inst_InitWithBytesNoCopy(void* o, void* bytes, NSUInteger len, NSStringEncoding encoding, BOOL freeBuffer) { - return [(NSString*)o initWithBytesNoCopy:bytes length:len encoding:encoding freeWhenDone:freeBuffer]; -} -void* _Nonnull -NSString_inst_PathComponents(void* o) { - return [(NSString*)o pathComponents]; -} -double -NSString_inst_DoubleValue(void* o) { - return [(NSString*)o doubleValue]; -} -void* _Nullable -NSString_inst_InitWithContentsOfFileEncoding(void* o, void* path, NSStringEncoding enc, void* error) { - return [(NSString*)o initWithContentsOfFile:path encoding:enc error:error]; -} -void* _Nullable -NSString_inst_InitWithContentsOfFileUsedEncoding(void* o, void* path, void* enc, void* error) { - return [(NSString*)o initWithContentsOfFile:path usedEncoding:enc error:error]; -} -BOOL -NSString_inst_GetCString(void* o, void* buffer, NSUInteger maxBufferCount, NSStringEncoding encoding) { - return [(NSString*)o getCString:buffer maxLength:maxBufferCount encoding:encoding]; -} -void* _Nonnull -NSString_inst_StringByAppendingString(void* o, void* aString) { - return [(NSString*)o stringByAppendingString:aString]; -} -BOOL -NSString_inst_GetBytes(void* o, void* buffer, NSUInteger maxBufferCount, void* usedBufferCount, NSStringEncoding encoding, NSStringEncodingConversionOptions options, NSRange range, void* leftover) { - return [(NSString*)o getBytes:buffer maxLength:maxBufferCount usedLength:usedBufferCount encoding:encoding options:options range:range remainingRange:leftover]; -} -void* _Nonnull -NSString_inst_Init(void* o) { - return [(NSString*)o init]; -} -void* _Nullable -NSString_inst_InitWithData(void* o, void* data, NSStringEncoding encoding) { - return [(NSString*)o initWithData:data encoding:encoding]; -} -NSComparisonResult -NSString_inst_CaseInsensitiveCompare(void* o, void* string) { - return [(NSString*)o caseInsensitiveCompare:string]; -} -BOOL -NSString_inst_GetFileSystemRepresentation(void* o, void* cname, NSUInteger max) { - return [(NSString*)o getFileSystemRepresentation:cname maxLength:max]; -} -void* _Nonnull -NSString_inst_LowercaseString(void* o) { - return [(NSString*)o lowercaseString]; -} -void* _Nonnull -NSString_inst_StringByPaddingToLength(void* o, NSUInteger newLength, void* padString, NSUInteger padIndex) { - return [(NSString*)o stringByPaddingToLength:newLength withString:padString startingAtIndex:padIndex]; -} -void* _Nonnull -NSString_inst_StringByReplacingOccurrencesOfStringWithString(void* o, void* target, void* replacement) { - return [(NSString*)o stringByReplacingOccurrencesOfString:target withString:replacement]; -} -void* _Nonnull -NSString_inst_StringByReplacingOccurrencesOfStringWithStringOptions(void* o, void* target, void* replacement, NSStringCompareOptions options, NSRange searchRange) { - return [(NSString*)o stringByReplacingOccurrencesOfString:target withString:replacement options:options range:searchRange]; -} -int -NSString_inst_IntValue(void* o) { - return [(NSString*)o intValue]; -} -BOOL -NSString_inst_CanBeConvertedToEncoding(void* o, NSStringEncoding encoding) { - return [(NSString*)o canBeConvertedToEncoding:encoding]; -} -void* _Nullable -NSString_inst_StringByAddingPercentEncodingWithAllowedCharacters(void* o, void* allowedCharacters) { - return [(NSString*)o stringByAddingPercentEncodingWithAllowedCharacters:allowedCharacters]; -} -const void* _Nullable -NSString_inst_UTF8String(void* o) { - return [(NSString*)o UTF8String]; -} -NSRange -NSString_inst_ParagraphRangeForRange(void* o, NSRange range) { - return [(NSString*)o paragraphRangeForRange:range]; -} -void* _Nonnull -NSString_inst_LinguisticTagsInRange(void* o, NSRange range, void* scheme, NSLinguisticTaggerOptions options, void* orthography, void* tokenRanges) { - return [(NSString*)o linguisticTagsInRange:range scheme:scheme options:options orthography:orthography tokenRanges:tokenRanges]; -} -void* _Nonnull -NSString_inst_Description(void* o) { - return [(NSString*)o description]; -} -float -NSString_inst_FloatValue(void* o) { - return [(NSString*)o floatValue]; -} -void* _Nonnull -NSString_inst_LocalizedUppercaseString(void* o) { - return [(NSString*)o localizedUppercaseString]; -} -long long -NSString_inst_LongLongValue(void* o) { - return [(NSString*)o longLongValue]; -} -BOOL -NSString_inst_IsAbsolutePath(void* o) { - return [(NSString*)o isAbsolutePath]; -} -NSRange -NSString_inst_RangeOfString(void* o, void* searchString) { - return [(NSString*)o rangeOfString:searchString]; -} -NSRange -NSString_inst_RangeOfStringOptions(void* o, void* searchString, NSStringCompareOptions mask) { - return [(NSString*)o rangeOfString:searchString options:mask]; -} -NSRange -NSString_inst_RangeOfStringOptionsRange(void* o, void* searchString, NSStringCompareOptions mask, NSRange rangeOfReceiverToSearch) { - return [(NSString*)o rangeOfString:searchString options:mask range:rangeOfReceiverToSearch]; -} -NSRange -NSString_inst_RangeOfStringOptionsRangeLocale(void* o, void* searchString, NSStringCompareOptions mask, NSRange rangeOfReceiverToSearch, void* locale) { - return [(NSString*)o rangeOfString:searchString options:mask range:rangeOfReceiverToSearch locale:locale]; +NSString_inst_StringByTrimmingCharactersInSet(void* o, void* set) { + return [(NSString*)o stringByTrimmingCharactersInSet:set]; } void* _Nonnull NSString_inst_CopyWithZone(void* o, void* zone) { @@ -1311,16 +1323,12 @@ NSString_inst_WritableTypeIdentifiersForItemProvider(void* o) { return [(NSString*)o writableTypeIdentifiersForItemProvider]; } void* -NSObject_Description() { - return [NSObject description]; +NSObject_Superclass() { + return [NSObject superclass]; } -void* -NSObject_CopyWithZone(void* zone) { - return [NSObject copyWithZone:zone]; -} -void* -NSObject_MutableCopyWithZone(void* zone) { - return [NSObject mutableCopyWithZone:zone]; +BOOL +NSObject_ResolveInstanceMethod(void* sel) { + return [NSObject resolveInstanceMethod:sel]; } void NSObject_CancelPreviousPerformRequestsWithTarget(void* aTarget) { @@ -1330,101 +1338,101 @@ void NSObject_CancelPreviousPerformRequestsWithTargetSelector(void* aTarget, void* aSelector, void* anArgument) { [NSObject cancelPreviousPerformRequestsWithTarget:aTarget selector:aSelector object:anArgument]; } +BOOL +NSObject_InstancesRespondToSelector(void* aSelector) { + return [NSObject instancesRespondToSelector:aSelector]; +} NSUInteger NSObject_Hash() { return [NSObject hash]; } void* -NSObject_AllocWithZone(void* zone) { - return [NSObject allocWithZone:zone]; +NSObject_Alloc() { + return [NSObject alloc]; } void* NSObject_DebugDescription() { return [NSObject debugDescription]; } -BOOL -NSObject_IsSubclassOfClass(void* aClass) { - return [NSObject isSubclassOfClass:aClass]; +void* +NSObject_InstanceMethodSignatureForSelector(void* aSelector) { + return [NSObject instanceMethodSignatureForSelector:aSelector]; } BOOL -NSObject_InstancesRespondToSelector(void* aSelector) { - return [NSObject instancesRespondToSelector:aSelector]; +NSObject_ConformsToProtocol(void* protocol) { + return [NSObject conformsToProtocol:protocol]; } void* _Nonnull NSObject_KeyPathsForValuesAffectingValueForKey(void* key) { return [NSObject keyPathsForValuesAffectingValueForKey:key]; } -BOOL -NSObject_ResolveClassMethod(void* sel) { - return [NSObject resolveClassMethod:sel]; -} -void* -NSObject_Alloc() { - return [NSObject alloc]; -} -void* _Nonnull -NSObject_ClassFallbacksForKeyedArchiver() { - return [NSObject classFallbacksForKeyedArchiver]; -} -void* _Nonnull -NSObject_ClassForKeyedUnarchiver() { - return [NSObject classForKeyedUnarchiver]; -} -void -NSObject_SetVersion(NSInteger aVersion) { - [NSObject setVersion:aVersion]; -} NSInteger NSObject_Version() { return [NSObject version]; } BOOL -NSObject_ConformsToProtocol(void* protocol) { - return [NSObject conformsToProtocol:protocol]; -} -void* -NSObject_InstanceMethodSignatureForSelector(void* aSelector) { - return [NSObject instanceMethodSignatureForSelector:aSelector]; -} -void* -NSObject_Superclass() { - return [NSObject superclass]; -} -BOOL NSObject_AutomaticallyNotifiesObserversForKey(void* key) { return [NSObject automaticallyNotifiesObserversForKey:key]; } -void -NSObject_Load() { - [NSObject load]; +void* _Nonnull +NSObject_ClassFallbacksForKeyedArchiver() { + return [NSObject classFallbacksForKeyedArchiver]; +} +BOOL +NSObject_IsSubclassOfClass(void* aClass) { + return [NSObject isSubclassOfClass:aClass]; +} +void* +NSObject_Description() { + return [NSObject description]; } BOOL NSObject_AccessInstanceVariablesDirectly() { return [NSObject accessInstanceVariablesDirectly]; } -void* -NSObject_New() { - return [NSObject new]; -} BOOL -NSObject_ResolveInstanceMethod(void* sel) { - return [NSObject resolveInstanceMethod:sel]; +NSObject_ResolveClassMethod(void* sel) { + return [NSObject resolveClassMethod:sel]; +} +void* +NSObject_AllocWithZone(void* zone) { + return [NSObject allocWithZone:zone]; +} +void +NSObject_SetVersion(NSInteger aVersion) { + [NSObject setVersion:aVersion]; +} +void* +NSObject_MutableCopyWithZone(void* zone) { + return [NSObject mutableCopyWithZone:zone]; +} +void* +NSObject_CopyWithZone(void* zone) { + return [NSObject copyWithZone:zone]; +} +void* _Nonnull +NSObject_ClassForKeyedUnarchiver() { + return [NSObject classForKeyedUnarchiver]; +} +void +NSObject_Load() { + [NSObject load]; } void* NSObject_Class() { return [NSObject class]; } -void* _Nonnull -NSObject_inst_AutoContentAccessingProxy(void* o) { - return [(NSObject*)o autoContentAccessingProxy]; -} -BOOL -NSObject_inst_IsLessThanOrEqualTo(void* o, void* object) { - return [(NSObject*)o isLessThanOrEqualTo:object]; -} void* -NSObject_inst_MutableCopy(void* o) { - return [(NSObject*)o mutableCopy]; +NSObject_New() { + return [NSObject new]; +} +void* _Nullable +NSObject_inst_IndicesOfObjectsByEvaluatingObjectSpecifier(void* o, void* specifier) { + return [(NSObject*)o indicesOfObjectsByEvaluatingObjectSpecifier:specifier]; +} +void* _Nonnull +NSObject_inst_MutableSetValueForKey(void* o, void* key) { + return [(NSObject*)o mutableSetValueForKey:key]; } void NSObject_inst_DoesNotRecognizeSelector(void* o, void* aSelector) { @@ -1434,17 +1442,73 @@ void* _Nonnull NSObject_inst_DictionaryWithValuesForKeys(void* o, void* keys) { return [(NSObject*)o dictionaryWithValuesForKeys:keys]; } -void* _Nullable -NSObject_inst_ObservationInfo(void* o) { - return [(NSObject*)o observationInfo]; +void +NSObject_inst_ReplaceValueAtIndex(void* o, NSUInteger index, void* key, void* value) { + [(NSObject*)o replaceValueAtIndex:index inPropertyWithKey:key withValue:value]; } -BOOL -NSObject_inst_AttemptRecoveryFromErrorOptionIndex(void* o, void* error, NSUInteger recoveryOptionIndex) { - return [(NSObject*)o attemptRecoveryFromError:error optionIndex:recoveryOptionIndex]; +void* _Nullable +NSObject_inst_ValueWithName(void* o, void* name, void* key) { + return [(NSObject*)o valueWithName:name inPropertyWithKey:key]; +} +void* _Nullable +NSObject_inst_ValueForKeyPath(void* o, void* keyPath) { + return [(NSObject*)o valueForKeyPath:keyPath]; } void -NSObject_inst_AttemptRecoveryFromErrorOptionIndexDelegate(void* o, void* error, NSUInteger recoveryOptionIndex, void* delegate, void* didRecoverSelector, void* contextInfo) { - [(NSObject*)o attemptRecoveryFromError:error optionIndex:recoveryOptionIndex delegate:delegate didRecoverSelector:didRecoverSelector contextInfo:contextInfo]; +NSObject_inst_PerformSelectorOnMainThreadWithObject(void* o, void* aSelector, void* arg, BOOL wait) { + [(NSObject*)o performSelectorOnMainThread:aSelector withObject:arg waitUntilDone:wait]; +} +void +NSObject_inst_PerformSelectorOnMainThreadWithObjectWaitUntilDone(void* o, void* aSelector, void* arg, BOOL wait, void* array) { + [(NSObject*)o performSelectorOnMainThread:aSelector withObject:arg waitUntilDone:wait modes:array]; +} +void +NSObject_inst_SetValuesForKeysWithDictionary(void* o, void* keyedValues) { + [(NSObject*)o setValuesForKeysWithDictionary:keyedValues]; +} +BOOL +NSObject_inst_ScriptingContains(void* o, void* object) { + return [(NSObject*)o scriptingContains:object]; +} +void* _Nonnull +NSObject_inst_AutoContentAccessingProxy(void* o) { + return [(NSObject*)o autoContentAccessingProxy]; +} +BOOL +NSObject_inst_IsLessThanOrEqualTo(void* o, void* object) { + return [(NSObject*)o isLessThanOrEqualTo:object]; +} +void +NSObject_inst_WillChangeValueForKey(void* o, void* key) { + [(NSObject*)o willChangeValueForKey:key]; +} +void +NSObject_inst_WillChangeValueForKeyWithSetMutation(void* o, void* key, NSKeyValueSetMutationKind mutationKind, void* objects) { + [(NSObject*)o willChangeValueForKey:key withSetMutation:mutationKind usingObjects:objects]; +} +void* _Nonnull +NSObject_inst_ClassName(void* o) { + return [(NSObject*)o className]; +} +void +NSObject_inst_SetObservationInfo(void* o, void* observationInfo) { + [(NSObject*)o setObservationInfo:observationInfo]; +} +void +NSObject_inst_Dealloc(void* o) { + [(NSObject*)o dealloc]; +} +void +NSObject_inst_AddObserver(void* o, void* observer, void* keyPath, NSKeyValueObservingOptions options, void* context) { + [(NSObject*)o addObserver:observer forKeyPath:keyPath options:options context:context]; +} +BOOL +NSObject_inst_IsGreaterThanOrEqualTo(void* o, void* object) { + return [(NSObject*)o isGreaterThanOrEqualTo:object]; +} +BOOL +NSObject_inst_ScriptingBeginsWith(void* o, void* object) { + return [(NSObject*)o scriptingBeginsWith:object]; } void NSObject_inst_InsertValueInPropertyWithKey(void* o, void* value, void* key) { @@ -1454,29 +1518,53 @@ void NSObject_inst_InsertValueAtIndex(void* o, void* value, NSUInteger index, void* key) { [(NSObject*)o insertValue:value atIndex:index inPropertyWithKey:key]; } -void -NSObject_inst_WillChange(void* o, NSKeyValueChange changeKind, void* indexes, void* key) { - [(NSObject*)o willChange:changeKind valuesAtIndexes:indexes forKey:key]; -} -void* _Nonnull -NSObject_inst_MutableSetValueForKeyPath(void* o, void* keyPath) { - return [(NSObject*)o mutableSetValueForKeyPath:keyPath]; -} -void -NSObject_inst_ObserveValueForKeyPath(void* o, void* keyPath, void* object, void* change, void* context) { - [(NSObject*)o observeValueForKeyPath:keyPath ofObject:object change:change context:context]; +BOOL +NSObject_inst_IsLessThan(void* o, void* object) { + return [(NSObject*)o isLessThan:object]; } BOOL -NSObject_inst_ScriptingBeginsWith(void* o, void* object) { - return [(NSObject*)o scriptingBeginsWith:object]; +NSObject_inst_IsEqualTo(void* o, void* object) { + return [(NSObject*)o isEqualTo:object]; } -void* _Nonnull -NSObject_inst_MutableArrayValueForKeyPath(void* o, void* keyPath) { - return [(NSObject*)o mutableArrayValueForKeyPath:keyPath]; +void* _Nullable +NSObject_inst_ValueForUndefinedKey(void* o, void* key) { + return [(NSObject*)o valueForUndefinedKey:key]; } -void* _Nonnull -NSObject_inst_AttributeKeys(void* o) { - return [(NSObject*)o attributeKeys]; +void* _Nullable +NSObject_inst_NewScriptingObjectOfClass(void* o, void* objectClass, void* key, void* contentsValue, void* properties) { + return [(NSObject*)o newScriptingObjectOfClass:objectClass forValueForKey:key withContentsValue:contentsValue properties:properties]; +} +void* _Nullable +NSObject_inst_CopyScriptingValue(void* o, void* value, void* key, void* properties) { + return [(NSObject*)o copyScriptingValue:value forKey:key withProperties:properties]; +} +void* _Nullable +NSObject_inst_ValueAtIndex(void* o, NSUInteger index, void* key) { + return [(NSObject*)o valueAtIndex:index inPropertyWithKey:key]; +} +void* _Nullable +NSObject_inst_InverseForRelationshipKey(void* o, void* relationshipKey) { + return [(NSObject*)o inverseForRelationshipKey:relationshipKey]; +} +void* +NSObject_inst_MethodSignatureForSelector(void* o, void* aSelector) { + return [(NSObject*)o methodSignatureForSelector:aSelector]; +} +void +NSObject_inst_SetNilValueForKey(void* o, void* key) { + [(NSObject*)o setNilValueForKey:key]; +} +void +NSObject_inst_ForwardInvocation(void* o, void* anInvocation) { + [(NSObject*)o forwardInvocation:anInvocation]; +} +BOOL +NSObject_inst_ScriptingIsLessThanOrEqualTo(void* o, void* object) { + return [(NSObject*)o scriptingIsLessThanOrEqualTo:object]; +} +void* +NSObject_inst_MutableCopy(void* o) { + return [(NSObject*)o mutableCopy]; } void NSObject_inst_SetValueForKey(void* o, void* value, void* key) { @@ -1490,13 +1578,85 @@ void NSObject_inst_SetValueForUndefinedKey(void* o, void* value, void* key) { [(NSObject*)o setValue:value forUndefinedKey:key]; } -void* _Nullable -NSObject_inst_ValueForKeyPath(void* o, void* keyPath) { - return [(NSObject*)o valueForKeyPath:keyPath]; +void* _Nonnull +NSObject_inst_AttributeKeys(void* o) { + return [(NSObject*)o attributeKeys]; +} +void +NSObject_inst_DidChange(void* o, NSKeyValueChange changeKind, void* indexes, void* key) { + [(NSObject*)o didChange:changeKind valuesAtIndexes:indexes forKey:key]; +} +BOOL +NSObject_inst_ScriptingIsLessThan(void* o, void* object) { + return [(NSObject*)o scriptingIsLessThan:object]; +} +BOOL +NSObject_inst_ScriptingIsGreaterThanOrEqualTo(void* o, void* object) { + return [(NSObject*)o scriptingIsGreaterThanOrEqualTo:object]; +} +void +NSObject_inst_WillChange(void* o, NSKeyValueChange changeKind, void* indexes, void* key) { + [(NSObject*)o willChange:changeKind valuesAtIndexes:indexes forKey:key]; +} +BOOL +NSObject_inst_IsCaseInsensitiveLike(void* o, void* object) { + return [(NSObject*)o isCaseInsensitiveLike:object]; +} +BOOL +NSObject_inst_DoesContain(void* o, void* object) { + return [(NSObject*)o doesContain:object]; +} +void* _Nonnull +NSObject_inst_MutableSetValueForKeyPath(void* o, void* keyPath) { + return [(NSObject*)o mutableSetValueForKeyPath:keyPath]; +} +void* _Nonnull +NSObject_inst_ClassDescription(void* o) { + return [(NSObject*)o classDescription]; } void* _Nullable -NSObject_inst_CoerceValue(void* o, void* value, void* key) { - return [(NSObject*)o coerceValue:value forKey:key]; +NSObject_inst_ValueWithUniqueID(void* o, void* uniqueID, void* key) { + return [(NSObject*)o valueWithUniqueID:uniqueID inPropertyWithKey:key]; +} +void* _Nonnull +NSObject_inst_MutableOrderedSetValueForKey(void* o, void* key) { + return [(NSObject*)o mutableOrderedSetValueForKey:key]; +} +void* _Nonnull +NSObject_inst_MutableArrayValueForKeyPath(void* o, void* keyPath) { + return [(NSObject*)o mutableArrayValueForKeyPath:keyPath]; +} +void* _Nullable +NSObject_inst_ValueForKey(void* o, void* key) { + return [(NSObject*)o valueForKey:key]; +} +void* _Nonnull +NSObject_inst_MutableArrayValueForKey(void* o, void* key) { + return [(NSObject*)o mutableArrayValueForKey:key]; +} +void +NSObject_inst_PerformSelectorInBackground(void* o, void* aSelector, void* arg) { + [(NSObject*)o performSelectorInBackground:aSelector withObject:arg]; +} +void* +NSObject_inst_Copy(void* o) { + return [(NSObject*)o copy]; +} +void* _Nonnull +NSObject_inst_ToManyRelationshipKeys(void* o) { + return [(NSObject*)o toManyRelationshipKeys]; +} +void* _Nullable +NSObject_inst_AwakeAfterUsingCoder(void* o, void* aDecoder) { + return [(NSObject*)o awakeAfterUsingCoder:aDecoder]; +} +void* _Nullable +NSObject_inst_ScriptingProperties(void* o) { + return [(NSObject*)o scriptingProperties]; +} +BOOL +NSObject_inst_IsGreaterThan(void* o, void* object) { + return [(NSObject*)o isGreaterThan:object]; } void NSObject_inst_DidChangeValueForKey(void* o, void* key) { @@ -1506,6 +1666,38 @@ void NSObject_inst_DidChangeValueForKeyWithSetMutation(void* o, void* key, NSKeyValueSetMutationKind mutationKind, void* objects) { [(NSObject*)o didChangeValueForKey:key withSetMutation:mutationKind usingObjects:objects]; } +void +NSObject_inst_RemoveObserverForKeyPath(void* o, void* observer, void* keyPath) { + [(NSObject*)o removeObserver:observer forKeyPath:keyPath]; +} +void +NSObject_inst_RemoveObserverForKeyPathContext(void* o, void* observer, void* keyPath, void* context) { + [(NSObject*)o removeObserver:observer forKeyPath:keyPath context:context]; +} +void +NSObject_inst_ObserveValueForKeyPath(void* o, void* keyPath, void* object, void* change, void* context) { + [(NSObject*)o observeValueForKeyPath:keyPath ofObject:object change:change context:context]; +} +void* +NSObject_inst_ForwardingTargetForSelector(void* o, void* aSelector) { + return [(NSObject*)o forwardingTargetForSelector:aSelector]; +} +void* _Nonnull +NSObject_inst_MutableOrderedSetValueForKeyPath(void* o, void* keyPath) { + return [(NSObject*)o mutableOrderedSetValueForKeyPath:keyPath]; +} +BOOL +NSObject_inst_IsLike(void* o, void* object) { + return [(NSObject*)o isLike:object]; +} +BOOL +NSObject_inst_ScriptingIsGreaterThan(void* o, void* object) { + return [(NSObject*)o scriptingIsGreaterThan:object]; +} +void* +NSObject_inst_Init(void* o) { + return [(NSObject*)o init]; +} BOOL NSObject_inst_ValidateValueForKey(void* o, void* ioValue, void* inKey, void* outError) { return [(NSObject*)o validateValue:ioValue forKey:inKey error:outError]; @@ -1514,45 +1706,21 @@ BOOL NSObject_inst_ValidateValueForKeyPath(void* o, void* ioValue, void* inKeyPath, void* outError) { return [(NSObject*)o validateValue:ioValue forKeyPath:inKeyPath error:outError]; } -void* _Nullable -NSObject_inst_InverseForRelationshipKey(void* o, void* relationshipKey) { - return [(NSObject*)o inverseForRelationshipKey:relationshipKey]; +FourCharCode +NSObject_inst_ClassCode(void* o) { + return [(NSObject*)o classCode]; } void* _Nullable -NSObject_inst_CopyScriptingValue(void* o, void* value, void* key, void* properties) { - return [(NSObject*)o copyScriptingValue:value forKey:key withProperties:properties]; -} -void* _Nullable -NSObject_inst_ValueForKey(void* o, void* key) { - return [(NSObject*)o valueForKey:key]; -} -void -NSObject_inst_AddObserver(void* o, void* observer, void* keyPath, NSKeyValueObservingOptions options, void* context) { - [(NSObject*)o addObserver:observer forKeyPath:keyPath options:options context:context]; -} -void* _Nonnull -NSObject_inst_ClassDescription(void* o) { - return [(NSObject*)o classDescription]; -} -void* _Nullable -NSObject_inst_ValueAtIndex(void* o, NSUInteger index, void* key) { - return [(NSObject*)o valueAtIndex:index inPropertyWithKey:key]; -} -void* _Nonnull -NSObject_inst_MutableOrderedSetValueForKeyPath(void* o, void* keyPath) { - return [(NSObject*)o mutableOrderedSetValueForKeyPath:keyPath]; -} -void -NSObject_inst_DidChange(void* o, NSKeyValueChange changeKind, void* indexes, void* key) { - [(NSObject*)o didChange:changeKind valuesAtIndexes:indexes forKey:key]; +NSObject_inst_ReplacementObjectForCoder(void* o, void* aCoder) { + return [(NSObject*)o replacementObjectForCoder:aCoder]; } BOOL -NSObject_inst_IsGreaterThanOrEqualTo(void* o, void* object) { - return [(NSObject*)o isGreaterThanOrEqualTo:object]; +NSObject_inst_IsNotEqualTo(void* o, void* object) { + return [(NSObject*)o isNotEqualTo:object]; } -void* _Nonnull -NSObject_inst_MutableOrderedSetValueForKey(void* o, void* key) { - return [(NSObject*)o mutableOrderedSetValueForKey:key]; +void* _Nullable +NSObject_inst_ClassForArchiver(void* o) { + return [(NSObject*)o classForArchiver]; } void NSObject_inst_PerformSelectorWithObject(void* o, void* aSelector, void* anArgument, NSTimeInterval delay) { @@ -1570,237 +1738,101 @@ void NSObject_inst_PerformSelectorOnThreadWithObject(void* o, void* aSelector, void* thr, void* arg, BOOL wait, void* array) { [(NSObject*)o performSelector:aSelector onThread:thr withObject:arg waitUntilDone:wait modes:array]; } -BOOL -NSObject_inst_IsCaseInsensitiveLike(void* o, void* object) { - return [(NSObject*)o isCaseInsensitiveLike:object]; -} -FourCharCode -NSObject_inst_ClassCode(void* o) { - return [(NSObject*)o classCode]; -} -void* _Nonnull -NSObject_inst_MutableSetValueForKey(void* o, void* key) { - return [(NSObject*)o mutableSetValueForKey:key]; -} -void -NSObject_inst_SetValuesForKeysWithDictionary(void* o, void* keyedValues) { - [(NSObject*)o setValuesForKeysWithDictionary:keyedValues]; -} -void -NSObject_inst_RemoveObserverForKeyPath(void* o, void* observer, void* keyPath) { - [(NSObject*)o removeObserver:observer forKeyPath:keyPath]; -} -void -NSObject_inst_RemoveObserverForKeyPathContext(void* o, void* observer, void* keyPath, void* context) { - [(NSObject*)o removeObserver:observer forKeyPath:keyPath context:context]; -} -void* _Nonnull -NSObject_inst_ClassName(void* o) { - return [(NSObject*)o className]; -} -void -NSObject_inst_ForwardInvocation(void* o, void* anInvocation) { - [(NSObject*)o forwardInvocation:anInvocation]; -} -void* _Nullable -NSObject_inst_ClassForKeyedArchiver(void* o) { - return [(NSObject*)o classForKeyedArchiver]; -} -void* _Nonnull -NSObject_inst_ToManyRelationshipKeys(void* o) { - return [(NSObject*)o toManyRelationshipKeys]; -} void* _Nullable NSObject_inst_ObjectSpecifier(void* o) { return [(NSObject*)o objectSpecifier]; } -void* -NSObject_inst_MethodSignatureForSelector(void* o, void* aSelector) { - return [(NSObject*)o methodSignatureForSelector:aSelector]; -} -BOOL -NSObject_inst_ScriptingIsLessThanOrEqualTo(void* o, void* object) { - return [(NSObject*)o scriptingIsLessThanOrEqualTo:object]; -} -void* -NSObject_inst_Copy(void* o) { - return [(NSObject*)o copy]; +void* _Nullable +NSObject_inst_ObservationInfo(void* o) { + return [(NSObject*)o observationInfo]; } void* _Nullable -NSObject_inst_ReplacementObjectForCoder(void* o, void* aCoder) { - return [(NSObject*)o replacementObjectForCoder:aCoder]; +NSObject_inst_CoerceValue(void* o, void* value, void* key) { + return [(NSObject*)o coerceValue:value forKey:key]; +} +BOOL +NSObject_inst_AttemptRecoveryFromErrorOptionIndex(void* o, void* error, NSUInteger recoveryOptionIndex) { + return [(NSObject*)o attemptRecoveryFromError:error optionIndex:recoveryOptionIndex]; } void -NSObject_inst_PerformSelectorInBackground(void* o, void* aSelector, void* arg) { - [(NSObject*)o performSelectorInBackground:aSelector withObject:arg]; -} -BOOL -NSObject_inst_ScriptingIsGreaterThanOrEqualTo(void* o, void* object) { - return [(NSObject*)o scriptingIsGreaterThanOrEqualTo:object]; -} -BOOL -NSObject_inst_ScriptingIsGreaterThan(void* o, void* object) { - return [(NSObject*)o scriptingIsGreaterThan:object]; -} -void -NSObject_inst_Dealloc(void* o) { - [(NSObject*)o dealloc]; -} -BOOL -NSObject_inst_ScriptingEndsWith(void* o, void* object) { - return [(NSObject*)o scriptingEndsWith:object]; -} -void* _Nonnull -NSObject_inst_ToOneRelationshipKeys(void* o) { - return [(NSObject*)o toOneRelationshipKeys]; -} -BOOL -NSObject_inst_IsLike(void* o, void* object) { - return [(NSObject*)o isLike:object]; -} -void -NSObject_inst_PerformSelectorOnMainThreadWithObject(void* o, void* aSelector, void* arg, BOOL wait) { - [(NSObject*)o performSelectorOnMainThread:aSelector withObject:arg waitUntilDone:wait]; -} -void -NSObject_inst_PerformSelectorOnMainThreadWithObjectWaitUntilDone(void* o, void* aSelector, void* arg, BOOL wait, void* array) { - [(NSObject*)o performSelectorOnMainThread:aSelector withObject:arg waitUntilDone:wait modes:array]; -} -void* -NSObject_inst_ForwardingTargetForSelector(void* o, void* aSelector) { - return [(NSObject*)o forwardingTargetForSelector:aSelector]; -} -void -NSObject_inst_SetNilValueForKey(void* o, void* key) { - [(NSObject*)o setNilValueForKey:key]; -} -void* _Nullable -NSObject_inst_IndicesOfObjectsByEvaluatingObjectSpecifier(void* o, void* specifier) { - return [(NSObject*)o indicesOfObjectsByEvaluatingObjectSpecifier:specifier]; -} -void* _Nullable -NSObject_inst_ReplacementObjectForKeyedArchiver(void* o, void* archiver) { - return [(NSObject*)o replacementObjectForKeyedArchiver:archiver]; -} -BOOL -NSObject_inst_ScriptingContains(void* o, void* object) { - return [(NSObject*)o scriptingContains:object]; -} -BOOL -NSObject_inst_IsLessThan(void* o, void* object) { - return [(NSObject*)o isLessThan:object]; -} -void* -NSObject_inst_Init(void* o) { - return [(NSObject*)o init]; +NSObject_inst_AttemptRecoveryFromErrorOptionIndexDelegate(void* o, void* error, NSUInteger recoveryOptionIndex, void* delegate, void* didRecoverSelector, void* contextInfo) { + [(NSObject*)o attemptRecoveryFromError:error optionIndex:recoveryOptionIndex delegate:delegate didRecoverSelector:didRecoverSelector contextInfo:contextInfo]; } void NSObject_inst_RemoveValueAtIndex(void* o, NSUInteger index, void* key) { [(NSObject*)o removeValueAtIndex:index fromPropertyWithKey:key]; } -void -NSObject_inst_WillChangeValueForKey(void* o, void* key) { - [(NSObject*)o willChangeValueForKey:key]; -} -void -NSObject_inst_WillChangeValueForKeyWithSetMutation(void* o, void* key, NSKeyValueSetMutationKind mutationKind, void* objects) { - [(NSObject*)o willChangeValueForKey:key withSetMutation:mutationKind usingObjects:objects]; -} void* _Nullable -NSObject_inst_ValueForUndefinedKey(void* o, void* key) { - return [(NSObject*)o valueForUndefinedKey:key]; -} -void -NSObject_inst_ReplaceValueAtIndex(void* o, NSUInteger index, void* key, void* value) { - [(NSObject*)o replaceValueAtIndex:index inPropertyWithKey:key withValue:value]; -} -void* _Nullable -NSObject_inst_ScriptingProperties(void* o) { - return [(NSObject*)o scriptingProperties]; -} -void* _Nullable -NSObject_inst_ValueWithName(void* o, void* name, void* key) { - return [(NSObject*)o valueWithName:name inPropertyWithKey:key]; -} -void* _Nullable -NSObject_inst_AwakeAfterUsingCoder(void* o, void* aDecoder) { - return [(NSObject*)o awakeAfterUsingCoder:aDecoder]; -} -void -NSObject_inst_SetScriptingProperties(void* o, void* scriptingProperties) { - [(NSObject*)o setScriptingProperties:scriptingProperties]; +NSObject_inst_ReplacementObjectForKeyedArchiver(void* o, void* archiver) { + return [(NSObject*)o replacementObjectForKeyedArchiver:archiver]; } void* _Nonnull NSObject_inst_ClassForCoder(void* o) { return [(NSObject*)o classForCoder]; } void* _Nullable -NSObject_inst_ValueWithUniqueID(void* o, void* uniqueID, void* key) { - return [(NSObject*)o valueWithUniqueID:uniqueID inPropertyWithKey:key]; -} -BOOL -NSObject_inst_ScriptingIsLessThan(void* o, void* object) { - return [(NSObject*)o scriptingIsLessThan:object]; -} -BOOL -NSObject_inst_IsEqualTo(void* o, void* object) { - return [(NSObject*)o isEqualTo:object]; -} -void -NSObject_inst_SetObservationInfo(void* o, void* observationInfo) { - [(NSObject*)o setObservationInfo:observationInfo]; -} -BOOL -NSObject_inst_IsGreaterThan(void* o, void* object) { - return [(NSObject*)o isGreaterThan:object]; -} -void* _Nonnull -NSObject_inst_MutableArrayValueForKey(void* o, void* key) { - return [(NSObject*)o mutableArrayValueForKey:key]; -} -BOOL -NSObject_inst_DoesContain(void* o, void* object) { - return [(NSObject*)o doesContain:object]; -} -void* _Nullable -NSObject_inst_NewScriptingObjectOfClass(void* o, void* objectClass, void* key, void* contentsValue, void* properties) { - return [(NSObject*)o newScriptingObjectOfClass:objectClass forValueForKey:key withContentsValue:contentsValue properties:properties]; +NSObject_inst_ClassForKeyedArchiver(void* o) { + return [(NSObject*)o classForKeyedArchiver]; } BOOL NSObject_inst_ScriptingIsEqualTo(void* o, void* object) { return [(NSObject*)o scriptingIsEqualTo:object]; } -BOOL -NSObject_inst_IsNotEqualTo(void* o, void* object) { - return [(NSObject*)o isNotEqualTo:object]; +void +NSObject_inst_SetScriptingProperties(void* o, void* scriptingProperties) { + [(NSObject*)o setScriptingProperties:scriptingProperties]; +} +void* _Nonnull +NSObject_inst_ToOneRelationshipKeys(void* o) { + return [(NSObject*)o toOneRelationshipKeys]; } void* _Nullable NSObject_inst_ScriptingValueForSpecifier(void* o, void* objectSpecifier) { return [(NSObject*)o scriptingValueForSpecifier:objectSpecifier]; } -void* _Nullable -NSObject_inst_ClassForArchiver(void* o) { - return [(NSObject*)o classForArchiver]; +BOOL +NSObject_inst_ScriptingEndsWith(void* o, void* object) { + return [(NSObject*)o scriptingEndsWith:object]; } BOOL -NSObject_inst_ConformsToProtocol(void* o, void* aProtocol) { - return [(NSObject*)o conformsToProtocol:aProtocol]; +NSObject_inst_RespondsToSelector(void* o, void* aSelector) { + return [(NSObject*)o respondsToSelector:aSelector]; } -void* -NSObject_inst_Description(void* o) { - return [(NSObject*)o description]; -} -void* -NSObject_inst_DebugDescription(void* o) { - return [(NSObject*)o debugDescription]; +void +NSObject_inst_Release(void* o) { + [(NSObject*)o release]; } NSUInteger NSObject_inst_Hash(void* o) { return [(NSObject*)o hash]; } void* -NSObject_inst_Class(void* o) { - return [(NSObject*)o class]; +NSObject_inst_Superclass(void* o) { + return [(NSObject*)o superclass]; +} +void* +NSObject_inst_DebugDescription(void* o) { + return [(NSObject*)o debugDescription]; +} +void* +NSObject_inst_Retain(void* o) { + return [(NSObject*)o retain]; +} +NSUInteger +NSObject_inst_RetainCount(void* o) { + return [(NSObject*)o retainCount]; +} +void* +NSObject_inst_Description(void* o) { + return [(NSObject*)o description]; +} +void* +NSObject_inst_Zone(void* o) { + return [(NSObject*)o zone]; +} +BOOL +NSObject_inst_IsEqual(void* o, void* object) { + return [(NSObject*)o isEqual:object]; } void* NSObject_inst_Self(void* o) { @@ -1811,16 +1843,24 @@ NSObject_inst_IsProxy(void* o) { return [(NSObject*)o isProxy]; } BOOL +NSObject_inst_IsKindOfClass(void* o, void* aClass) { + return [(NSObject*)o isKindOfClass:aClass]; +} +BOOL NSObject_inst_IsMemberOfClass(void* o, void* aClass) { return [(NSObject*)o isMemberOfClass:aClass]; } BOOL -NSObject_inst_RespondsToSelector(void* o, void* aSelector) { - return [(NSObject*)o respondsToSelector:aSelector]; +NSObject_inst_ConformsToProtocol(void* o, void* aProtocol) { + return [(NSObject*)o conformsToProtocol:aProtocol]; } -BOOL -NSObject_inst_IsEqual(void* o, void* object) { - return [(NSObject*)o isEqual:object]; +void* +NSObject_inst_Autorelease(void* o) { + return [(NSObject*)o autorelease]; +} +void* +NSObject_inst_Class(void* o) { + return [(NSObject*)o class]; } void* NSObject_inst_PerformSelector(void* o, void* aSelector) { @@ -1830,75 +1870,19 @@ void* NSObject_inst_PerformSelectorWithObjectWithObject(void* o, void* aSelector, void* object1, void* object2) { return [(NSObject*)o performSelector:aSelector withObject:object1 withObject:object2]; } -void* -NSObject_inst_Retain(void* o) { - return [(NSObject*)o retain]; -} -void -NSObject_inst_Release(void* o) { - [(NSObject*)o release]; -} -BOOL -NSObject_inst_IsKindOfClass(void* o, void* aClass) { - return [(NSObject*)o isKindOfClass:aClass]; -} -void* -NSObject_inst_Autorelease(void* o) { - return [(NSObject*)o autorelease]; -} -NSUInteger -NSObject_inst_RetainCount(void* o) { - return [(NSObject*)o retainCount]; -} -void* -NSObject_inst_Zone(void* o) { - return [(NSObject*)o zone]; -} -void* -NSObject_inst_Superclass(void* o) { - return [(NSObject*)o superclass]; -} void* _Nonnull NSAutoreleasePool_init(void* o) { return [(NSAutoreleasePool*)o init]; } -BOOL -NSAutoreleasePool_ConformsToProtocol(void* protocol) { - return [NSAutoreleasePool conformsToProtocol:protocol]; -} -NSInteger -NSAutoreleasePool_Version() { - return [NSAutoreleasePool version]; -} -void* -NSAutoreleasePool_New() { - return [NSAutoreleasePool new]; -} -BOOL -NSAutoreleasePool_ResolveClassMethod(void* sel) { - return [NSAutoreleasePool resolveClassMethod:sel]; -} -void* -NSAutoreleasePool_AllocWithZone(void* zone) { - return [NSAutoreleasePool allocWithZone:zone]; -} -void -NSAutoreleasePool_AddObject(void* anObject) { - [NSAutoreleasePool addObject:anObject]; -} -void* -NSAutoreleasePool_DebugDescription() { - return [NSAutoreleasePool debugDescription]; -} -void* -NSAutoreleasePool_Description() { - return [NSAutoreleasePool description]; -} void NSAutoreleasePool_SetVersion(NSInteger aVersion) { [NSAutoreleasePool setVersion:aVersion]; } +void +NSAutoreleasePool_Load() { + [NSAutoreleasePool load]; +} void* NSAutoreleasePool_CopyWithZone(void* zone) { return [NSAutoreleasePool copyWithZone:zone]; @@ -1908,40 +1892,68 @@ NSAutoreleasePool_MutableCopyWithZone(void* zone) { return [NSAutoreleasePool mutableCopyWithZone:zone]; } BOOL +NSAutoreleasePool_ResolveClassMethod(void* sel) { + return [NSAutoreleasePool resolveClassMethod:sel]; +} +BOOL +NSAutoreleasePool_ResolveInstanceMethod(void* sel) { + return [NSAutoreleasePool resolveInstanceMethod:sel]; +} +void* +NSAutoreleasePool_New() { + return [NSAutoreleasePool new]; +} +BOOL NSAutoreleasePool_IsSubclassOfClass(void* aClass) { return [NSAutoreleasePool isSubclassOfClass:aClass]; } -void* -NSAutoreleasePool_InstanceMethodSignatureForSelector(void* aSelector) { - return [NSAutoreleasePool instanceMethodSignatureForSelector:aSelector]; +BOOL +NSAutoreleasePool_InstancesRespondToSelector(void* aSelector) { + return [NSAutoreleasePool instancesRespondToSelector:aSelector]; } -NSUInteger -NSAutoreleasePool_Hash() { - return [NSAutoreleasePool hash]; +NSInteger +NSAutoreleasePool_Version() { + return [NSAutoreleasePool version]; +} +void* +NSAutoreleasePool_Class() { + return [NSAutoreleasePool class]; +} +void* +NSAutoreleasePool_Alloc() { + return [NSAutoreleasePool alloc]; +} +void +NSAutoreleasePool_AddObject(void* anObject) { + [NSAutoreleasePool addObject:anObject]; } void* NSAutoreleasePool_Superclass() { return [NSAutoreleasePool superclass]; } BOOL -NSAutoreleasePool_ResolveInstanceMethod(void* sel) { - return [NSAutoreleasePool resolveInstanceMethod:sel]; +NSAutoreleasePool_ConformsToProtocol(void* protocol) { + return [NSAutoreleasePool conformsToProtocol:protocol]; } -BOOL -NSAutoreleasePool_InstancesRespondToSelector(void* aSelector) { - return [NSAutoreleasePool instancesRespondToSelector:aSelector]; +NSUInteger +NSAutoreleasePool_Hash() { + return [NSAutoreleasePool hash]; } void* -NSAutoreleasePool_Class() { - return [NSAutoreleasePool class]; -} -void -NSAutoreleasePool_Load() { - [NSAutoreleasePool load]; +NSAutoreleasePool_DebugDescription() { + return [NSAutoreleasePool debugDescription]; } void* -NSAutoreleasePool_Alloc() { - return [NSAutoreleasePool alloc]; +NSAutoreleasePool_AllocWithZone(void* zone) { + return [NSAutoreleasePool allocWithZone:zone]; +} +void* +NSAutoreleasePool_InstanceMethodSignatureForSelector(void* aSelector) { + return [NSAutoreleasePool instanceMethodSignatureForSelector:aSelector]; +} +void* +NSAutoreleasePool_Description() { + return [NSAutoreleasePool description]; } void NSAutoreleasePool_inst_AddObject(void* o, void* anObject) { @@ -1952,13 +1964,13 @@ NSAutoreleasePool_inst_Drain(void* o) { [(NSAutoreleasePool*)o drain]; } -void MyClassDealloc(void*); void MyClassRelease(void*); +void MyClassDealloc(void*); @interface MyClass : NSObject { } -- (void)dealloc; - (void)release; +- (void)dealloc; - (void)super_release; @end @@ -1966,6 +1978,12 @@ void MyClass_super_release(void* o); @implementation MyClass +- (void)release +{ + MyClassRelease(self); +} + + - (void)dealloc { MyClassDealloc(self); @@ -1973,12 +1991,6 @@ void MyClass_super_release(void* o); } -- (void)release -{ - MyClassRelease(self); -} - - - (void)super_release { [super release]; @@ -2002,6 +2014,8 @@ MyClassAlloc() { import "C" import ( + "runtime" + "sync" "unsafe" ) @@ -2030,10 +2044,18 @@ func (o Id) NSArray() NSArray { return ret } -type _NSZone C.struct__NSZone +type Class *C.struct_objc_class + +type NSUInteger C.ulong type BOOL C.uchar +type SEL *C.struct_objc_selector + +type NSInteger C.long + +type _NSZone C.struct__NSZone + type NSSet struct { Id } func (o NSSet) Ptr() unsafe.Pointer { return o.ptr } func (o Id) NSSet() NSSet { @@ -2042,26 +2064,10 @@ func (o Id) NSSet() NSSet { return ret } -type SEL *C.struct_objc_selector - -type Class *C.struct_objc_class - -type NSInteger C.long - type Protocol interface { Ptr() unsafe.Pointer } -type NSUInteger C.ulong - -type NSMethodSignature struct { Id } -func (o NSMethodSignature) Ptr() unsafe.Pointer { return o.ptr } -func (o Id) NSMethodSignature() NSMethodSignature { - ret := NSMethodSignature{} - ret.ptr = o.ptr - return ret -} - type NSURL struct { Id } func (o NSURL) Ptr() unsafe.Pointer { return o.ptr } func (o Id) NSURL() NSURL { @@ -2078,6 +2084,40 @@ func (o Id) NSError() NSError { return ret } +type NSMethodSignature struct { Id } +func (o NSMethodSignature) Ptr() unsafe.Pointer { return o.ptr } +func (o Id) NSMethodSignature() NSMethodSignature { + ret := NSMethodSignature{} + ret.ptr = o.ptr + return ret +} + +type NSIndexSet struct { Id } +func (o NSIndexSet) Ptr() unsafe.Pointer { return o.ptr } +func (o Id) NSIndexSet() NSIndexSet { + ret := NSIndexSet{} + ret.ptr = o.ptr + return ret +} + +type NSCoder struct { Id } +func (o NSCoder) Ptr() unsafe.Pointer { return o.ptr } +func (o Id) NSCoder() NSCoder { + ret := NSCoder{} + ret.ptr = o.ptr + return ret +} + +type NSRange C.struct__NSRange + +type NSData struct { Id } +func (o NSData) Ptr() unsafe.Pointer { return o.ptr } +func (o Id) NSData() NSData { + ret := NSData{} + ret.ptr = o.ptr + return ret +} + type NSPredicate struct { Id } func (o NSPredicate) Ptr() unsafe.Pointer { return o.ptr } func (o Id) NSPredicate() NSPredicate { @@ -2094,34 +2134,8 @@ func (o Id) NSEnumerator() NSEnumerator { return ret } -type NSIndexSet struct { Id } -func (o NSIndexSet) Ptr() unsafe.Pointer { return o.ptr } -func (o Id) NSIndexSet() NSIndexSet { - ret := NSIndexSet{} - ret.ptr = o.ptr - return ret -} - -type NSData struct { Id } -func (o NSData) Ptr() unsafe.Pointer { return o.ptr } -func (o Id) NSData() NSData { - ret := NSData{} - ret.ptr = o.ptr - return ret -} - -type NSRange C.struct__NSRange - type NSKeyValueObservingOptions C.enum_NSKeyValueObservingOptions -type NSCoder struct { Id } -func (o NSCoder) Ptr() unsafe.Pointer { return o.ptr } -func (o Id) NSCoder() NSCoder { - ret := NSCoder{} - ret.ptr = o.ptr - return ret -} - type NSZone C.struct__NSZone type NSFastEnumerationState C.struct_NSFastEnumerationState @@ -2138,8 +2152,6 @@ type NSStringEncoding C.NSUInteger type Char C.char -type Unichar C.ushort - type NSDictionary struct { Id } func (o NSDictionary) Ptr() unsafe.Pointer { return o.ptr } func (o Id) NSDictionary() NSDictionary { @@ -2148,13 +2160,9 @@ func (o Id) NSDictionary() NSDictionary { return ret } -type NSCharacterSet struct { Id } -func (o NSCharacterSet) Ptr() unsafe.Pointer { return o.ptr } -func (o Id) NSCharacterSet() NSCharacterSet { - ret := NSCharacterSet{} - ret.ptr = o.ptr - return ret -} +type Unichar C.ushort + +type NSStringCompareOptions C.enum_NSStringCompareOptions type NSLocale struct { Id } func (o NSLocale) Ptr() unsafe.Pointer { return o.ptr } @@ -2164,9 +2172,15 @@ func (o Id) NSLocale() NSLocale { return ret } -type NSStringCompareOptions C.enum_NSStringCompareOptions +type Double C.double -type NSComparisonResult C.enum_NSComparisonResult +type NSCharacterSet struct { Id } +func (o NSCharacterSet) Ptr() unsafe.Pointer { return o.ptr } +func (o Id) NSCharacterSet() NSCharacterSet { + ret := NSCharacterSet{} + ret.ptr = o.ptr + return ret +} type NSStringTransform struct { NSString } func (o NSStringTransform) Ptr() unsafe.Pointer { return o.ptr } @@ -2176,14 +2190,16 @@ func (o Id) NSStringTransform() NSStringTransform { return ret } -type Double C.double +type NSComparisonResult C.enum_NSComparisonResult + +type Int C.int + +type LongLong C.longlong type NSStringEncodingConversionOptions C.enum_NSStringEncodingConversionOptions type NSRangePointer *C.NSRange -type Int C.int - type NSLinguisticTagScheme struct { NSString } func (o NSLinguisticTagScheme) Ptr() unsafe.Pointer { return o.ptr } func (o Id) NSLinguisticTagScheme() NSLinguisticTagScheme { @@ -2204,11 +2220,15 @@ func (o Id) NSOrthography() NSOrthography { type Float C.float -type LongLong C.longlong - type NSItemProviderRepresentationVisibility C.enum_NSItemProviderRepresentationVisibility -type NSKeyValueChange C.enum_NSKeyValueChange +type NSScriptObjectSpecifier struct { Id } +func (o NSScriptObjectSpecifier) Ptr() unsafe.Pointer { return o.ptr } +func (o Id) NSScriptObjectSpecifier() NSScriptObjectSpecifier { + ret := NSScriptObjectSpecifier{} + ret.ptr = o.ptr + return ret +} type NSMutableSet struct { NSSet } func (o NSMutableSet) Ptr() unsafe.Pointer { return o.ptr } @@ -2220,6 +2240,16 @@ func (o Id) NSMutableSet() NSMutableSet { type NSKeyValueSetMutationKind C.enum_NSKeyValueSetMutationKind +type NSInvocation struct { Id } +func (o NSInvocation) Ptr() unsafe.Pointer { return o.ptr } +func (o Id) NSInvocation() NSInvocation { + ret := NSInvocation{} + ret.ptr = o.ptr + return ret +} + +type NSKeyValueChange C.enum_NSKeyValueChange + type NSClassDescription struct { Id } func (o NSClassDescription) Ptr() unsafe.Pointer { return o.ptr } func (o Id) NSClassDescription() NSClassDescription { @@ -2244,6 +2274,8 @@ func (o Id) NSMutableOrderedSet() NSMutableOrderedSet { return ret } +type FourCharCode C.UInt32 + type NSTimeInterval C.double type NSThread struct { Id } @@ -2254,24 +2286,6 @@ func (o Id) NSThread() NSThread { return ret } -type FourCharCode C.UInt32 - -type NSInvocation struct { Id } -func (o NSInvocation) Ptr() unsafe.Pointer { return o.ptr } -func (o Id) NSInvocation() NSInvocation { - ret := NSInvocation{} - ret.ptr = o.ptr - return ret -} - -type NSScriptObjectSpecifier struct { Id } -func (o NSScriptObjectSpecifier) Ptr() unsafe.Pointer { return o.ptr } -func (o Id) NSScriptObjectSpecifier() NSScriptObjectSpecifier { - ret := NSScriptObjectSpecifier{} - ret.ptr = o.ptr - return ret -} - type NSKeyedArchiver struct { NSCoder } func (o NSKeyedArchiver) Ptr() unsafe.Pointer { return o.ptr } func (o Id) NSKeyedArchiver() NSKeyedArchiver { @@ -2332,42 +2346,13 @@ func Autoreleasepool(f func()) { pool.Drain() } -func NSArrayAllocWithZone(zone *_NSZone) NSArray { - ret := NSArray{} - ret.ptr = C.NSArray_AllocWithZone(unsafe.Pointer(zone)) +func NSArraySuperclass() Class { + ret := (Class)(unsafe.Pointer(C.NSArray_Superclass())) return ret } -func NSArrayArray() NSArray { - ret := NSArray{} - ret.ptr = C.NSArray_Array() - return ret -} - -func NSArrayAutomaticallyNotifiesObserversForKey(key NSString) bool { - ret := (C.NSArray_AutomaticallyNotifiesObserversForKey(key.Ptr())) != 0 - return ret -} - -func NSArrayKeyPathsForValuesAffectingValueForKey(key NSString) NSSet { - ret := NSSet{} - ret.ptr = C.NSArray_KeyPathsForValuesAffectingValueForKey(key.Ptr()) - return ret -} - -func NSArrayInstancesRespondToSelector(aSelector SEL) bool { - ret := (C.NSArray_InstancesRespondToSelector(unsafe.Pointer(aSelector))) != 0 - return ret -} - -func NSArrayMutableCopyWithZone(zone *_NSZone) Id { - ret := Id{} - ret.ptr = C.NSArray_MutableCopyWithZone(unsafe.Pointer(zone)) - return ret -} - -func NSArrayClassForKeyedUnarchiver() Class { - ret := (Class)(unsafe.Pointer(C.NSArray_ClassForKeyedUnarchiver())) +func NSArrayHash() NSUInteger { + ret := (NSUInteger)(C.NSArray_Hash()) return ret } @@ -2377,15 +2362,116 @@ func NSArrayDescription() NSString { return ret } +func NSArrayWithContentsOfFile(path NSString) NSArray { + ret := NSArray{} + ret.ptr = C.NSArray_ArrayWithContentsOfFile(path.Ptr()) + return ret +} + +func NSArrayLoad() { + C.NSArray_Load() +} + +func NSArrayResolveClassMethod(sel SEL) bool { + ret := (C.NSArray_ResolveClassMethod(unsafe.Pointer(sel))) != 0 + return ret +} + +func NSArrayWithObject(anObject NSObject) NSArray { + ret := NSArray{} + ret.ptr = C.NSArray_ArrayWithObject(anObject.Ptr()) + return ret +} + +func NSArrayClassForKeyedUnarchiver() Class { + ret := (Class)(unsafe.Pointer(C.NSArray_ClassForKeyedUnarchiver())) + return ret +} + +func NSArrayAlloc() NSArray { + ret := NSArray{} + ret.ptr = C.NSArray_Alloc() + runtime.SetFinalizer(&ret, func(o *NSArray) { + o.Release() + }) + return ret +} + +func NSArrayAccessInstanceVariablesDirectly() bool { + ret := (C.NSArray_AccessInstanceVariablesDirectly()) != 0 + return ret +} + +func NSArraySetVersion(aVersion NSInteger) { + C.NSArray_SetVersion((C.NSInteger)(aVersion)) +} + +func NSArrayVersion() NSInteger { + ret := (NSInteger)(C.NSArray_Version()) + return ret +} + +func NSArrayCopyWithZone(zone *_NSZone) Id { + ret := Id{} + ret.ptr = C.NSArray_CopyWithZone(unsafe.Pointer(zone)) + return ret +} + +func NSArrayResolveInstanceMethod(sel SEL) bool { + ret := (C.NSArray_ResolveInstanceMethod(unsafe.Pointer(sel))) != 0 + return ret +} + +func NSArrayClassFallbacksForKeyedArchiver() NSArray { + ret := NSArray{} + ret.ptr = C.NSArray_ClassFallbacksForKeyedArchiver() + return ret +} + +func NSArrayKeyPathsForValuesAffectingValueForKey(key NSString) NSSet { + ret := NSSet{} + ret.ptr = C.NSArray_KeyPathsForValuesAffectingValueForKey(key.Ptr()) + return ret +} + func NSArrayWithArray(array NSArray) NSArray { ret := NSArray{} ret.ptr = C.NSArray_ArrayWithArray(array.Ptr()) return ret } -func NSArrayNew() NSArray { +func NSArrayMutableCopyWithZone(zone *_NSZone) Id { + ret := Id{} + ret.ptr = C.NSArray_MutableCopyWithZone(unsafe.Pointer(zone)) + return ret +} + +func NSArrayClass() Class { + ret := (Class)(unsafe.Pointer(C.NSArray_Class())) + return ret +} + +func NSArrayConformsToProtocol(protocol Protocol) bool { + ret := (C.NSArray_ConformsToProtocol(protocol.Ptr())) != 0 + return ret +} + +func NSArrayInstancesRespondToSelector(aSelector SEL) bool { + ret := (C.NSArray_InstancesRespondToSelector(unsafe.Pointer(aSelector))) != 0 + return ret +} + +func NSArrayAllocWithZone(zone *_NSZone) NSArray { ret := NSArray{} - ret.ptr = C.NSArray_New() + ret.ptr = C.NSArray_AllocWithZone(unsafe.Pointer(zone)) + runtime.SetFinalizer(&ret, func(o *NSArray) { + o.Release() + }) + return ret +} + +func NSArrayAutomaticallyNotifiesObserversForKey(key NSString) bool { + ret := (C.NSArray_AutomaticallyNotifiesObserversForKey(key.Ptr())) != 0 return ret } @@ -2395,21 +2481,56 @@ func NSArrayDebugDescription() NSString { return ret } -func NSArrayVersion() NSInteger { - ret := (NSInteger)(C.NSArray_Version()) +func NSArrayWithContentsOfURL(url NSURL) NSArray { + ret := NSArray{} + ret.ptr = C.NSArray_ArrayWithContentsOfURL(url.Ptr()) return ret } -func NSArrayConformsToProtocol(protocol Protocol) bool { - ret := (C.NSArray_ConformsToProtocol(protocol.Ptr())) != 0 +func NSArrayWithContentsOfURLError(url NSURL, error *[]NSError) NSArray { + + goSlice1 := make([]unsafe.Pointer,cap(*error)) + for i := 0; i < len(*error); i++ { + goSlice1[i] = (*error)[i].Ptr() + } + ret := NSArray{} + ret.ptr = C.NSArray_ArrayWithContentsOfURLError(url.Ptr(), unsafe.Pointer(&goSlice1[0])) + (*error) = (*error)[:cap(*error)] + for i := 0; i < len(*error); i++ { + if goSlice1[i] == nil { + (*error) = (*error)[:i] + break + } + (*error)[i].ptr = goSlice1[i] + } return ret } -func NSArraySuperclass() Class { - ret := (Class)(unsafe.Pointer(C.NSArray_Superclass())) +func NSArrayArray() NSArray { + ret := NSArray{} + ret.ptr = C.NSArray_Array() return ret } +func NSArrayIsSubclassOfClass(aClass Class) bool { + ret := (C.NSArray_IsSubclassOfClass(unsafe.Pointer(aClass))) != 0 + return ret +} + +func NSArrayInstanceMethodSignatureForSelector(aSelector SEL) NSMethodSignature { + ret := NSMethodSignature{} + ret.ptr = C.NSArray_InstanceMethodSignatureForSelector(unsafe.Pointer(aSelector)) + return ret +} + +func NSArrayCancelPreviousPerformRequestsWithTarget(aTarget NSObject) { + C.NSArray_CancelPreviousPerformRequestsWithTarget(aTarget.Ptr()) +} + +func NSArrayCancelPreviousPerformRequestsWithTargetSelector(aTarget NSObject, aSelector SEL, anArgument NSObject) { + C.NSArray_CancelPreviousPerformRequestsWithTargetSelector(aTarget.Ptr(), unsafe.Pointer(aSelector), anArgument.Ptr()) +} + func NSArrayWithObjectsCount(objects *[]Id, cnt NSUInteger) NSArray { goSlice0 := make([]unsafe.Pointer,cap(*objects)) @@ -2439,110 +2560,257 @@ func NSArrayWithObjects(firstObj NSObject, objects ...NSObject) NSArray { return ret } -func NSArrayHash() NSUInteger { - ret := (NSUInteger)(C.NSArray_Hash()) - return ret -} - -func NSArraySetVersion(aVersion NSInteger) { - C.NSArray_SetVersion((C.NSInteger)(aVersion)) -} - -func NSArrayResolveInstanceMethod(sel SEL) bool { - ret := (C.NSArray_ResolveInstanceMethod(unsafe.Pointer(sel))) != 0 - return ret -} - -func NSArrayInstanceMethodSignatureForSelector(aSelector SEL) NSMethodSignature { - ret := NSMethodSignature{} - ret.ptr = C.NSArray_InstanceMethodSignatureForSelector(unsafe.Pointer(aSelector)) - return ret -} - -func NSArrayWithContentsOfURL(url NSURL) NSArray { +func NSArrayNew() NSArray { ret := NSArray{} - ret.ptr = C.NSArray_ArrayWithContentsOfURL(url.Ptr()) + ret.ptr = C.NSArray_New() return ret } -func NSArrayWithContentsOfURLError(url NSURL, error *[]NSError) NSArray { +func (o NSArray) ArrayByAddingObjectsFromArray(otherArray NSArray) NSArray { + ret := NSArray{} + ret.ptr = C.NSArray_inst_ArrayByAddingObjectsFromArray(o.Ptr(), otherArray.Ptr()) + return ret +} - goSlice1 := make([]unsafe.Pointer,cap(*error)) +func (o NSArray) InitWithContentsOfFile(path NSString) NSArray { + ret := NSArray{} + ret.ptr = C.NSArray_inst_InitWithContentsOfFile(o.Ptr(), path.Ptr()) + return ret +} + +func (o NSArray) PathsMatchingExtensions(filterTypes NSArray) NSArray { + ret := NSArray{} + ret.ptr = C.NSArray_inst_PathsMatchingExtensions(o.Ptr(), filterTypes.Ptr()) + return ret +} + +func (o NSArray) DescriptionWithLocale(locale NSObject) NSString { + ret := NSString{} + ret.ptr = C.NSArray_inst_DescriptionWithLocale(o.Ptr(), locale.Ptr()) + return ret +} + +func (o NSArray) DescriptionWithLocaleIndent(locale NSObject, level NSUInteger) NSString { + ret := NSString{} + ret.ptr = C.NSArray_inst_DescriptionWithLocaleIndent(o.Ptr(), locale.Ptr(), (C.NSUInteger)(level)) + return ret +} + +func (o NSArray) ObjectAtIndex(index NSUInteger) Id { + ret := Id{} + ret.ptr = C.NSArray_inst_ObjectAtIndex(o.Ptr(), (C.NSUInteger)(index)) + return ret +} + +func (o NSArray) RemoveObserverForKeyPath(observer NSObject, keyPath NSString) { + C.NSArray_inst_RemoveObserverForKeyPath(o.Ptr(), observer.Ptr(), keyPath.Ptr()) +} + +func (o NSArray) RemoveObserverFromObjectsAtIndexes(observer NSObject, indexes NSIndexSet, keyPath NSString) { + C.NSArray_inst_RemoveObserverFromObjectsAtIndexes(o.Ptr(), observer.Ptr(), indexes.Ptr(), keyPath.Ptr()) +} + +func (o NSArray) RemoveObserverForKeyPathContext(observer NSObject, keyPath NSString, context unsafe.Pointer) { + C.NSArray_inst_RemoveObserverForKeyPathContext(o.Ptr(), observer.Ptr(), keyPath.Ptr(), unsafe.Pointer(context)) +} + +func (o NSArray) RemoveObserverFromObjectsAtIndexesForKeyPath(observer NSObject, indexes NSIndexSet, keyPath NSString, context unsafe.Pointer) { + C.NSArray_inst_RemoveObserverFromObjectsAtIndexesForKeyPath(o.Ptr(), observer.Ptr(), indexes.Ptr(), keyPath.Ptr(), unsafe.Pointer(context)) +} + +func (o NSArray) Count() NSUInteger { + ret := (NSUInteger)(C.NSArray_inst_Count(o.Ptr())) + return ret +} + +func (o NSArray) SortedArrayUsingDescriptors(sortDescriptors NSArray) NSArray { + ret := NSArray{} + ret.ptr = C.NSArray_inst_SortedArrayUsingDescriptors(o.Ptr(), sortDescriptors.Ptr()) + return ret +} + +func (o NSArray) ObjectAtIndexedSubscript(idx NSUInteger) Id { + ret := Id{} + ret.ptr = C.NSArray_inst_ObjectAtIndexedSubscript(o.Ptr(), (C.NSUInteger)(idx)) + return ret +} + +func (o NSArray) FirstObject() Id { + ret := Id{} + ret.ptr = C.NSArray_inst_FirstObject(o.Ptr()) + return ret +} + +func (o NSArray) SetValue(value NSObject, key NSString) { + C.NSArray_inst_SetValue(o.Ptr(), value.Ptr(), key.Ptr()) +} + +func (o NSArray) FirstObjectCommonWithArray(otherArray NSArray) Id { + ret := Id{} + ret.ptr = C.NSArray_inst_FirstObjectCommonWithArray(o.Ptr(), otherArray.Ptr()) + return ret +} + +func (o NSArray) InitWithCoder(aDecoder NSCoder) NSArray { + ret := NSArray{} + ret.ptr = C.NSArray_inst_InitWithCoder(o.Ptr(), aDecoder.Ptr()) + return ret +} + +func (o NSArray) ValueForKey(key NSString) Id { + ret := Id{} + ret.ptr = C.NSArray_inst_ValueForKey(o.Ptr(), key.Ptr()) + return ret +} + +func (o NSArray) IndexOfObjectIdenticalTo(anObject NSObject) NSUInteger { + ret := (NSUInteger)(C.NSArray_inst_IndexOfObjectIdenticalTo(o.Ptr(), anObject.Ptr())) + return ret +} + +func (o NSArray) IndexOfObjectIdenticalToInRange(anObject NSObject, range_ NSRange) NSUInteger { + ret := (NSUInteger)(C.NSArray_inst_IndexOfObjectIdenticalToInRange(o.Ptr(), anObject.Ptr(), (C.NSRange)(range_))) + return ret +} + +func (o NSArray) ContainsObject(anObject NSObject) bool { + ret := (C.NSArray_inst_ContainsObject(o.Ptr(), anObject.Ptr())) != 0 + return ret +} + +func (o NSArray) IsEqualToArray(otherArray NSArray) bool { + ret := (C.NSArray_inst_IsEqualToArray(o.Ptr(), otherArray.Ptr())) != 0 + return ret +} + +func (o NSArray) SortedArrayHint() NSData { + ret := NSData{} + ret.ptr = C.NSArray_inst_SortedArrayHint(o.Ptr()) + return ret +} + +func (o NSArray) ComponentsJoinedByString(separator NSString) NSString { + ret := NSString{} + ret.ptr = C.NSArray_inst_ComponentsJoinedByString(o.Ptr(), separator.Ptr()) + return ret +} + +func (o NSArray) FilteredArrayUsingPredicate(predicate NSPredicate) NSArray { + ret := NSArray{} + ret.ptr = C.NSArray_inst_FilteredArrayUsingPredicate(o.Ptr(), predicate.Ptr()) + return ret +} + +func (o NSArray) WriteToFile(path NSString, useAuxiliaryFile BOOL) bool { + ret := (C.NSArray_inst_WriteToFile(o.Ptr(), path.Ptr(), (C.BOOL)(useAuxiliaryFile))) != 0 + return ret +} + +func (o NSArray) InitWithContentsOfURL(url NSURL) NSArray { + ret := NSArray{} + ret.ptr = C.NSArray_inst_InitWithContentsOfURL(o.Ptr(), url.Ptr()) + return ret +} + +func (o NSArray) InitWithContentsOfURLError(url NSURL, error *[]NSError) NSArray { + + goSlice2 := make([]unsafe.Pointer,cap(*error)) for i := 0; i < len(*error); i++ { - goSlice1[i] = (*error)[i].Ptr() + goSlice2[i] = (*error)[i].Ptr() } ret := NSArray{} - ret.ptr = C.NSArray_ArrayWithContentsOfURLError(url.Ptr(), unsafe.Pointer(&goSlice1[0])) + ret.ptr = C.NSArray_inst_InitWithContentsOfURLError(o.Ptr(), url.Ptr(), unsafe.Pointer(&goSlice2[0])) (*error) = (*error)[:cap(*error)] for i := 0; i < len(*error); i++ { - if goSlice1[i] == nil { + if goSlice2[i] == nil { (*error) = (*error)[:i] break } - (*error)[i].ptr = goSlice1[i] + (*error)[i].ptr = goSlice2[i] } return ret } -func NSArrayResolveClassMethod(sel SEL) bool { - ret := (C.NSArray_ResolveClassMethod(unsafe.Pointer(sel))) != 0 - return ret -} - -func NSArrayCancelPreviousPerformRequestsWithTarget(aTarget NSObject) { - C.NSArray_CancelPreviousPerformRequestsWithTarget(aTarget.Ptr()) -} - -func NSArrayCancelPreviousPerformRequestsWithTargetSelector(aTarget NSObject, aSelector SEL, anArgument NSObject) { - C.NSArray_CancelPreviousPerformRequestsWithTargetSelector(aTarget.Ptr(), unsafe.Pointer(aSelector), anArgument.Ptr()) -} - -func NSArrayLoad() { - C.NSArray_Load() -} - -func NSArrayClassFallbacksForKeyedArchiver() NSArray { +func (o NSArray) ArrayByAddingObject(anObject NSObject) NSArray { ret := NSArray{} - ret.ptr = C.NSArray_ClassFallbacksForKeyedArchiver() + ret.ptr = C.NSArray_inst_ArrayByAddingObject(o.Ptr(), anObject.Ptr()) return ret } -func NSArrayCopyWithZone(zone *_NSZone) Id { - ret := Id{} - ret.ptr = C.NSArray_CopyWithZone(unsafe.Pointer(zone)) +func (o NSArray) WriteToURLError(url NSURL, error *[]NSError) bool { + + goSlice2 := make([]unsafe.Pointer,cap(*error)) + for i := 0; i < len(*error); i++ { + goSlice2[i] = (*error)[i].Ptr() + } + ret := (C.NSArray_inst_WriteToURLError(o.Ptr(), url.Ptr(), unsafe.Pointer(&goSlice2[0]))) != 0 + (*error) = (*error)[:cap(*error)] + for i := 0; i < len(*error); i++ { + if goSlice2[i] == nil { + (*error) = (*error)[:i] + break + } + (*error)[i].ptr = goSlice2[i] + } return ret } -func NSArrayAlloc() NSArray { +func (o NSArray) WriteToURLAtomically(url NSURL, atomically BOOL) bool { + ret := (C.NSArray_inst_WriteToURLAtomically(o.Ptr(), url.Ptr(), (C.BOOL)(atomically))) != 0 + return ret +} + +func (o NSArray) SubarrayWithRange(range_ NSRange) NSArray { ret := NSArray{} - ret.ptr = C.NSArray_Alloc() + ret.ptr = C.NSArray_inst_SubarrayWithRange(o.Ptr(), (C.NSRange)(range_)) return ret } -func NSArrayAccessInstanceVariablesDirectly() bool { - ret := (C.NSArray_AccessInstanceVariablesDirectly()) != 0 - return ret -} - -func NSArrayClass() Class { - ret := (Class)(unsafe.Pointer(C.NSArray_Class())) - return ret -} - -func NSArrayWithObject(anObject NSObject) NSArray { +func (o NSArray) InitWithArray(array NSArray) NSArray { ret := NSArray{} - ret.ptr = C.NSArray_ArrayWithObject(anObject.Ptr()) + ret.ptr = C.NSArray_inst_InitWithArray(o.Ptr(), array.Ptr()) return ret } -func NSArrayWithContentsOfFile(path NSString) NSArray { +func (o NSArray) InitWithArrayCopyItems(array NSArray, flag BOOL) NSArray { ret := NSArray{} - ret.ptr = C.NSArray_ArrayWithContentsOfFile(path.Ptr()) + ret.ptr = C.NSArray_inst_InitWithArrayCopyItems(o.Ptr(), array.Ptr(), (C.BOOL)(flag)) return ret } -func NSArrayIsSubclassOfClass(aClass Class) bool { - ret := (C.NSArray_IsSubclassOfClass(unsafe.Pointer(aClass))) != 0 +func (o NSArray) MakeObjectsPerformSelector(aSelector SEL) { + C.NSArray_inst_MakeObjectsPerformSelector(o.Ptr(), unsafe.Pointer(aSelector)) +} + +func (o NSArray) MakeObjectsPerformSelectorWithObject(aSelector SEL, argument NSObject) { + C.NSArray_inst_MakeObjectsPerformSelectorWithObject(o.Ptr(), unsafe.Pointer(aSelector), argument.Ptr()) +} + +func (o NSArray) ObjectsAtIndexes(indexes NSIndexSet) NSArray { + ret := NSArray{} + ret.ptr = C.NSArray_inst_ObjectsAtIndexes(o.Ptr(), indexes.Ptr()) + return ret +} + +func (o NSArray) IndexOfObject(anObject NSObject) NSUInteger { + ret := (NSUInteger)(C.NSArray_inst_IndexOfObject(o.Ptr(), anObject.Ptr())) + return ret +} + +func (o NSArray) IndexOfObjectInRange(anObject NSObject, range_ NSRange) NSUInteger { + ret := (NSUInteger)(C.NSArray_inst_IndexOfObjectInRange(o.Ptr(), anObject.Ptr(), (C.NSRange)(range_))) + return ret +} + +func (o NSArray) ObjectEnumerator() NSEnumerator { + ret := NSEnumerator{} + ret.ptr = C.NSArray_inst_ObjectEnumerator(o.Ptr()) + return ret +} + +func (o NSArray) ReverseObjectEnumerator() NSEnumerator { + ret := NSEnumerator{} + ret.ptr = C.NSArray_inst_ReverseObjectEnumerator(o.Ptr()) return ret } @@ -2552,9 +2820,46 @@ func (o NSArray) Description() NSString { return ret } -func (o NSArray) FilteredArrayUsingPredicate(predicate NSPredicate) NSArray { +func (o NSArray) LastObject() Id { + ret := Id{} + ret.ptr = C.NSArray_inst_LastObject(o.Ptr()) + return ret +} + +func (o NSArray) Init() NSArray { ret := NSArray{} - ret.ptr = C.NSArray_inst_FilteredArrayUsingPredicate(o.Ptr(), predicate.Ptr()) + ret.ptr = C.NSArray_inst_Init(o.Ptr()) + return ret +} + +func (o NSArray) AddObserverForKeyPath(observer NSObject, keyPath NSString, options NSKeyValueObservingOptions, context unsafe.Pointer) { + C.NSArray_inst_AddObserverForKeyPath(o.Ptr(), observer.Ptr(), keyPath.Ptr(), (C.NSKeyValueObservingOptions)(options), unsafe.Pointer(context)) +} + +func (o NSArray) AddObserverToObjectsAtIndexes(observer NSObject, indexes NSIndexSet, keyPath NSString, options NSKeyValueObservingOptions, context unsafe.Pointer) { + C.NSArray_inst_AddObserverToObjectsAtIndexes(o.Ptr(), observer.Ptr(), indexes.Ptr(), keyPath.Ptr(), (C.NSKeyValueObservingOptions)(options), unsafe.Pointer(context)) +} + +func (o NSArray) GetObjects(objects *[]Id, range_ NSRange) { + + goSlice1 := make([]unsafe.Pointer,cap(*objects)) + for i := 0; i < len(*objects); i++ { + goSlice1[i] = (*objects)[i].Ptr() + } + C.NSArray_inst_GetObjects(o.Ptr(), unsafe.Pointer(&goSlice1[0]), (C.NSRange)(range_)) + (*objects) = (*objects)[:cap(*objects)] + for i := 0; i < len(*objects); i++ { + if goSlice1[i] == nil { + (*objects) = (*objects)[:i] + break + } + (*objects)[i].ptr = goSlice1[i] + } +} + +func (o NSArray) SortedArrayUsingSelector(comparator SEL) NSArray { + ret := NSArray{} + ret.ptr = C.NSArray_inst_SortedArrayUsingSelector(o.Ptr(), unsafe.Pointer(comparator)) return ret } @@ -2587,291 +2892,6 @@ func (o NSArray) InitWithObjects(firstObj NSObject, objects ...NSObject) NSArray return ret } -func (o NSArray) ComponentsJoinedByString(separator NSString) NSString { - ret := NSString{} - ret.ptr = C.NSArray_inst_ComponentsJoinedByString(o.Ptr(), separator.Ptr()) - return ret -} - -func (o NSArray) Init() NSArray { - ret := NSArray{} - ret.ptr = C.NSArray_inst_Init(o.Ptr()) - return ret -} - -func (o NSArray) SetValue(value NSObject, key NSString) { - C.NSArray_inst_SetValue(o.Ptr(), value.Ptr(), key.Ptr()) -} - -func (o NSArray) ObjectEnumerator() NSEnumerator { - ret := NSEnumerator{} - ret.ptr = C.NSArray_inst_ObjectEnumerator(o.Ptr()) - return ret -} - -func (o NSArray) ObjectsAtIndexes(indexes NSIndexSet) NSArray { - ret := NSArray{} - ret.ptr = C.NSArray_inst_ObjectsAtIndexes(o.Ptr(), indexes.Ptr()) - return ret -} - -func (o NSArray) SortedArrayHint() NSData { - ret := NSData{} - ret.ptr = C.NSArray_inst_SortedArrayHint(o.Ptr()) - return ret -} - -func (o NSArray) DescriptionWithLocale(locale NSObject) NSString { - ret := NSString{} - ret.ptr = C.NSArray_inst_DescriptionWithLocale(o.Ptr(), locale.Ptr()) - return ret -} - -func (o NSArray) DescriptionWithLocaleIndent(locale NSObject, level NSUInteger) NSString { - ret := NSString{} - ret.ptr = C.NSArray_inst_DescriptionWithLocaleIndent(o.Ptr(), locale.Ptr(), (C.NSUInteger)(level)) - return ret -} - -func (o NSArray) Count() NSUInteger { - ret := (NSUInteger)(C.NSArray_inst_Count(o.Ptr())) - return ret -} - -func (o NSArray) SortedArrayUsingSelector(comparator SEL) NSArray { - ret := NSArray{} - ret.ptr = C.NSArray_inst_SortedArrayUsingSelector(o.Ptr(), unsafe.Pointer(comparator)) - return ret -} - -func (o NSArray) FirstObject() Id { - ret := Id{} - ret.ptr = C.NSArray_inst_FirstObject(o.Ptr()) - return ret -} - -func (o NSArray) MakeObjectsPerformSelector(aSelector SEL) { - C.NSArray_inst_MakeObjectsPerformSelector(o.Ptr(), unsafe.Pointer(aSelector)) -} - -func (o NSArray) MakeObjectsPerformSelectorWithObject(aSelector SEL, argument NSObject) { - C.NSArray_inst_MakeObjectsPerformSelectorWithObject(o.Ptr(), unsafe.Pointer(aSelector), argument.Ptr()) -} - -func (o NSArray) SubarrayWithRange(range_ NSRange) NSArray { - ret := NSArray{} - ret.ptr = C.NSArray_inst_SubarrayWithRange(o.Ptr(), (C.NSRange)(range_)) - return ret -} - -func (o NSArray) ArrayByAddingObject(anObject NSObject) NSArray { - ret := NSArray{} - ret.ptr = C.NSArray_inst_ArrayByAddingObject(o.Ptr(), anObject.Ptr()) - return ret -} - -func (o NSArray) InitWithContentsOfFile(path NSString) NSArray { - ret := NSArray{} - ret.ptr = C.NSArray_inst_InitWithContentsOfFile(o.Ptr(), path.Ptr()) - return ret -} - -func (o NSArray) WriteToURLError(url NSURL, error *[]NSError) bool { - - goSlice2 := make([]unsafe.Pointer,cap(*error)) - for i := 0; i < len(*error); i++ { - goSlice2[i] = (*error)[i].Ptr() - } - ret := (C.NSArray_inst_WriteToURLError(o.Ptr(), url.Ptr(), unsafe.Pointer(&goSlice2[0]))) != 0 - (*error) = (*error)[:cap(*error)] - for i := 0; i < len(*error); i++ { - if goSlice2[i] == nil { - (*error) = (*error)[:i] - break - } - (*error)[i].ptr = goSlice2[i] - } - return ret -} - -func (o NSArray) WriteToURLAtomically(url NSURL, atomically BOOL) bool { - ret := (C.NSArray_inst_WriteToURLAtomically(o.Ptr(), url.Ptr(), (C.BOOL)(atomically))) != 0 - return ret -} - -func (o NSArray) InitWithContentsOfURL(url NSURL) NSArray { - ret := NSArray{} - ret.ptr = C.NSArray_inst_InitWithContentsOfURL(o.Ptr(), url.Ptr()) - return ret -} - -func (o NSArray) InitWithContentsOfURLError(url NSURL, error *[]NSError) NSArray { - - goSlice2 := make([]unsafe.Pointer,cap(*error)) - for i := 0; i < len(*error); i++ { - goSlice2[i] = (*error)[i].Ptr() - } - ret := NSArray{} - ret.ptr = C.NSArray_inst_InitWithContentsOfURLError(o.Ptr(), url.Ptr(), unsafe.Pointer(&goSlice2[0])) - (*error) = (*error)[:cap(*error)] - for i := 0; i < len(*error); i++ { - if goSlice2[i] == nil { - (*error) = (*error)[:i] - break - } - (*error)[i].ptr = goSlice2[i] - } - return ret -} - -func (o NSArray) ArrayByAddingObjectsFromArray(otherArray NSArray) NSArray { - ret := NSArray{} - ret.ptr = C.NSArray_inst_ArrayByAddingObjectsFromArray(o.Ptr(), otherArray.Ptr()) - return ret -} - -func (o NSArray) FirstObjectCommonWithArray(otherArray NSArray) Id { - ret := Id{} - ret.ptr = C.NSArray_inst_FirstObjectCommonWithArray(o.Ptr(), otherArray.Ptr()) - return ret -} - -func (o NSArray) InitWithArray(array NSArray) NSArray { - ret := NSArray{} - ret.ptr = C.NSArray_inst_InitWithArray(o.Ptr(), array.Ptr()) - return ret -} - -func (o NSArray) InitWithArrayCopyItems(array NSArray, flag BOOL) NSArray { - ret := NSArray{} - ret.ptr = C.NSArray_inst_InitWithArrayCopyItems(o.Ptr(), array.Ptr(), (C.BOOL)(flag)) - return ret -} - -func (o NSArray) ContainsObject(anObject NSObject) bool { - ret := (C.NSArray_inst_ContainsObject(o.Ptr(), anObject.Ptr())) != 0 - return ret -} - -func (o NSArray) ObjectAtIndexedSubscript(idx NSUInteger) Id { - ret := Id{} - ret.ptr = C.NSArray_inst_ObjectAtIndexedSubscript(o.Ptr(), (C.NSUInteger)(idx)) - return ret -} - -func (o NSArray) IndexOfObjectIdenticalTo(anObject NSObject) NSUInteger { - ret := (NSUInteger)(C.NSArray_inst_IndexOfObjectIdenticalTo(o.Ptr(), anObject.Ptr())) - return ret -} - -func (o NSArray) IndexOfObjectIdenticalToInRange(anObject NSObject, range_ NSRange) NSUInteger { - ret := (NSUInteger)(C.NSArray_inst_IndexOfObjectIdenticalToInRange(o.Ptr(), anObject.Ptr(), (C.NSRange)(range_))) - return ret -} - -func (o NSArray) IsEqualToArray(otherArray NSArray) bool { - ret := (C.NSArray_inst_IsEqualToArray(o.Ptr(), otherArray.Ptr())) != 0 - return ret -} - -func (o NSArray) AddObserverForKeyPath(observer NSObject, keyPath NSString, options NSKeyValueObservingOptions, context unsafe.Pointer) { - C.NSArray_inst_AddObserverForKeyPath(o.Ptr(), observer.Ptr(), keyPath.Ptr(), (C.NSKeyValueObservingOptions)(options), unsafe.Pointer(context)) -} - -func (o NSArray) AddObserverToObjectsAtIndexes(observer NSObject, indexes NSIndexSet, keyPath NSString, options NSKeyValueObservingOptions, context unsafe.Pointer) { - C.NSArray_inst_AddObserverToObjectsAtIndexes(o.Ptr(), observer.Ptr(), indexes.Ptr(), keyPath.Ptr(), (C.NSKeyValueObservingOptions)(options), unsafe.Pointer(context)) -} - -func (o NSArray) IndexOfObject(anObject NSObject) NSUInteger { - ret := (NSUInteger)(C.NSArray_inst_IndexOfObject(o.Ptr(), anObject.Ptr())) - return ret -} - -func (o NSArray) IndexOfObjectInRange(anObject NSObject, range_ NSRange) NSUInteger { - ret := (NSUInteger)(C.NSArray_inst_IndexOfObjectInRange(o.Ptr(), anObject.Ptr(), (C.NSRange)(range_))) - return ret -} - -func (o NSArray) WriteToFile(path NSString, useAuxiliaryFile BOOL) bool { - ret := (C.NSArray_inst_WriteToFile(o.Ptr(), path.Ptr(), (C.BOOL)(useAuxiliaryFile))) != 0 - return ret -} - -func (o NSArray) InitWithCoder(aDecoder NSCoder) NSArray { - ret := NSArray{} - ret.ptr = C.NSArray_inst_InitWithCoder(o.Ptr(), aDecoder.Ptr()) - return ret -} - -func (o NSArray) ReverseObjectEnumerator() NSEnumerator { - ret := NSEnumerator{} - ret.ptr = C.NSArray_inst_ReverseObjectEnumerator(o.Ptr()) - return ret -} - -func (o NSArray) ValueForKey(key NSString) Id { - ret := Id{} - ret.ptr = C.NSArray_inst_ValueForKey(o.Ptr(), key.Ptr()) - return ret -} - -func (o NSArray) PathsMatchingExtensions(filterTypes NSArray) NSArray { - ret := NSArray{} - ret.ptr = C.NSArray_inst_PathsMatchingExtensions(o.Ptr(), filterTypes.Ptr()) - return ret -} - -func (o NSArray) GetObjects(objects *[]Id, range_ NSRange) { - - goSlice1 := make([]unsafe.Pointer,cap(*objects)) - for i := 0; i < len(*objects); i++ { - goSlice1[i] = (*objects)[i].Ptr() - } - C.NSArray_inst_GetObjects(o.Ptr(), unsafe.Pointer(&goSlice1[0]), (C.NSRange)(range_)) - (*objects) = (*objects)[:cap(*objects)] - for i := 0; i < len(*objects); i++ { - if goSlice1[i] == nil { - (*objects) = (*objects)[:i] - break - } - (*objects)[i].ptr = goSlice1[i] - } -} - -func (o NSArray) ObjectAtIndex(index NSUInteger) Id { - ret := Id{} - ret.ptr = C.NSArray_inst_ObjectAtIndex(o.Ptr(), (C.NSUInteger)(index)) - return ret -} - -func (o NSArray) SortedArrayUsingDescriptors(sortDescriptors NSArray) NSArray { - ret := NSArray{} - ret.ptr = C.NSArray_inst_SortedArrayUsingDescriptors(o.Ptr(), sortDescriptors.Ptr()) - return ret -} - -func (o NSArray) LastObject() Id { - ret := Id{} - ret.ptr = C.NSArray_inst_LastObject(o.Ptr()) - return ret -} - -func (o NSArray) RemoveObserverForKeyPath(observer NSObject, keyPath NSString) { - C.NSArray_inst_RemoveObserverForKeyPath(o.Ptr(), observer.Ptr(), keyPath.Ptr()) -} - -func (o NSArray) RemoveObserverFromObjectsAtIndexes(observer NSObject, indexes NSIndexSet, keyPath NSString) { - C.NSArray_inst_RemoveObserverFromObjectsAtIndexes(o.Ptr(), observer.Ptr(), indexes.Ptr(), keyPath.Ptr()) -} - -func (o NSArray) RemoveObserverForKeyPathContext(observer NSObject, keyPath NSString, context unsafe.Pointer) { - C.NSArray_inst_RemoveObserverForKeyPathContext(o.Ptr(), observer.Ptr(), keyPath.Ptr(), unsafe.Pointer(context)) -} - -func (o NSArray) RemoveObserverFromObjectsAtIndexesForKeyPath(observer NSObject, indexes NSIndexSet, keyPath NSString, context unsafe.Pointer) { - C.NSArray_inst_RemoveObserverFromObjectsAtIndexesForKeyPath(o.Ptr(), observer.Ptr(), indexes.Ptr(), keyPath.Ptr(), unsafe.Pointer(context)) -} - func (o NSArray) CopyWithZone(zone *NSZone) Id { ret := Id{} ret.ptr = C.NSArray_inst_CopyWithZone(o.Ptr(), unsafe.Pointer(zone)) @@ -2907,44 +2927,24 @@ func (o NSArray) CountByEnumeratingWithState(state *NSFastEnumerationState, buff return ret } -func NSMutableArrayWithArray(array NSArray) NSMutableArray { - ret := NSMutableArray{} - ret.ptr = C.NSMutableArray_ArrayWithArray(array.Ptr()) +func NSMutableArrayResolveClassMethod(sel SEL) bool { + ret := (C.NSMutableArray_ResolveClassMethod(unsafe.Pointer(sel))) != 0 return ret } -func NSMutableArrayKeyPathsForValuesAffectingValueForKey(key NSString) NSSet { - ret := NSSet{} - ret.ptr = C.NSMutableArray_KeyPathsForValuesAffectingValueForKey(key.Ptr()) +func NSMutableArrayMutableCopyWithZone(zone *_NSZone) Id { + ret := Id{} + ret.ptr = C.NSMutableArray_MutableCopyWithZone(unsafe.Pointer(zone)) return ret } -func NSMutableArrayClassFallbacksForKeyedArchiver() NSArray { - ret := NSArray{} - ret.ptr = C.NSMutableArray_ClassFallbacksForKeyedArchiver() +func NSMutableArrayAccessInstanceVariablesDirectly() bool { + ret := (C.NSMutableArray_AccessInstanceVariablesDirectly()) != 0 return ret } -func NSMutableArrayDescription() NSString { - ret := NSString{} - ret.ptr = C.NSMutableArray_Description() - return ret -} - -func NSMutableArrayArray() NSMutableArray { - ret := NSMutableArray{} - ret.ptr = C.NSMutableArray_Array() - return ret -} - -func NSMutableArrayWithCapacity(numItems NSUInteger) NSMutableArray { - ret := NSMutableArray{} - ret.ptr = C.NSMutableArray_ArrayWithCapacity((C.NSUInteger)(numItems)) - return ret -} - -func NSMutableArrayAutomaticallyNotifiesObserversForKey(key NSString) bool { - ret := (C.NSMutableArray_AutomaticallyNotifiesObserversForKey(key.Ptr())) != 0 +func NSMutableArrayHash() NSUInteger { + ret := (NSUInteger)(C.NSMutableArray_Hash()) return ret } @@ -2956,36 +2956,48 @@ func NSMutableArrayCancelPreviousPerformRequestsWithTargetSelector(aTarget NSObj C.NSMutableArray_CancelPreviousPerformRequestsWithTargetSelector(aTarget.Ptr(), unsafe.Pointer(aSelector), anArgument.Ptr()) } -func NSMutableArrayMutableCopyWithZone(zone *_NSZone) Id { - ret := Id{} - ret.ptr = C.NSMutableArray_MutableCopyWithZone(unsafe.Pointer(zone)) +func NSMutableArrayClassFallbacksForKeyedArchiver() NSArray { + ret := NSArray{} + ret.ptr = C.NSMutableArray_ClassFallbacksForKeyedArchiver() return ret } -func NSMutableArraySuperclass() Class { - ret := (Class)(unsafe.Pointer(C.NSMutableArray_Superclass())) - return ret -} - -func NSMutableArrayInstanceMethodSignatureForSelector(aSelector SEL) NSMethodSignature { - ret := NSMethodSignature{} - ret.ptr = C.NSMutableArray_InstanceMethodSignatureForSelector(unsafe.Pointer(aSelector)) - return ret -} - -func NSMutableArrayResolveClassMethod(sel SEL) bool { - ret := (C.NSMutableArray_ResolveClassMethod(unsafe.Pointer(sel))) != 0 - return ret -} - -func NSMutableArrayWithObject(anObject NSObject) NSMutableArray { +func NSMutableArrayWithCapacity(numItems NSUInteger) NSMutableArray { ret := NSMutableArray{} - ret.ptr = C.NSMutableArray_ArrayWithObject(anObject.Ptr()) + ret.ptr = C.NSMutableArray_ArrayWithCapacity((C.NSUInteger)(numItems)) return ret } -func NSMutableArrayLoad() { - C.NSMutableArray_Load() +func NSMutableArrayNew() NSMutableArray { + ret := NSMutableArray{} + ret.ptr = C.NSMutableArray_New() + return ret +} + +func NSMutableArrayAllocWithZone(zone *_NSZone) NSMutableArray { + ret := NSMutableArray{} + ret.ptr = C.NSMutableArray_AllocWithZone(unsafe.Pointer(zone)) + runtime.SetFinalizer(&ret, func(o *NSMutableArray) { + o.Release() + }) + return ret +} + +func NSMutableArrayConformsToProtocol(protocol Protocol) bool { + ret := (C.NSMutableArray_ConformsToProtocol(protocol.Ptr())) != 0 + return ret +} + +func NSMutableArrayWithContentsOfFile(path NSString) NSArray { + ret := NSArray{} + ret.ptr = C.NSMutableArray_ArrayWithContentsOfFile(path.Ptr()) + return ret +} + +func NSMutableArrayArray() NSMutableArray { + ret := NSMutableArray{} + ret.ptr = C.NSMutableArray_Array() + return ret } func NSMutableArrayWithContentsOfURL(url NSURL) NSArray { @@ -3013,45 +3025,17 @@ func NSMutableArrayWithContentsOfURLError(url NSURL, error *[]NSError) NSArray { return ret } -func NSMutableArrayIsSubclassOfClass(aClass Class) bool { - ret := (C.NSMutableArray_IsSubclassOfClass(unsafe.Pointer(aClass))) != 0 - return ret -} - -func NSMutableArrayVersion() NSInteger { - ret := (NSInteger)(C.NSMutableArray_Version()) - return ret -} - -func NSMutableArrayResolveInstanceMethod(sel SEL) bool { - ret := (C.NSMutableArray_ResolveInstanceMethod(unsafe.Pointer(sel))) != 0 - return ret -} - -func NSMutableArrayClassForKeyedUnarchiver() Class { - ret := (Class)(unsafe.Pointer(C.NSMutableArray_ClassForKeyedUnarchiver())) - return ret -} - -func NSMutableArrayNew() NSMutableArray { +func NSMutableArrayAlloc() NSMutableArray { ret := NSMutableArray{} - ret.ptr = C.NSMutableArray_New() + ret.ptr = C.NSMutableArray_Alloc() + runtime.SetFinalizer(&ret, func(o *NSMutableArray) { + o.Release() + }) return ret } -func NSMutableArrayConformsToProtocol(protocol Protocol) bool { - ret := (C.NSMutableArray_ConformsToProtocol(protocol.Ptr())) != 0 - return ret -} - -func NSMutableArrayHash() NSUInteger { - ret := (NSUInteger)(C.NSMutableArray_Hash()) - return ret -} - -func NSMutableArrayWithContentsOfFile(path NSString) NSArray { - ret := NSArray{} - ret.ptr = C.NSMutableArray_ArrayWithContentsOfFile(path.Ptr()) +func NSMutableArraySuperclass() Class { + ret := (Class)(unsafe.Pointer(C.NSMutableArray_Superclass())) return ret } @@ -3066,35 +3050,13 @@ func NSMutableArrayCopyWithZone(zone *_NSZone) Id { return ret } -func NSMutableArraySetVersion(aVersion NSInteger) { - C.NSMutableArray_SetVersion((C.NSInteger)(aVersion)) -} - -func NSMutableArrayDebugDescription() NSString { - ret := NSString{} - ret.ptr = C.NSMutableArray_DebugDescription() +func NSMutableArrayAutomaticallyNotifiesObserversForKey(key NSString) bool { + ret := (C.NSMutableArray_AutomaticallyNotifiesObserversForKey(key.Ptr())) != 0 return ret } -func NSMutableArrayAllocWithZone(zone *_NSZone) NSMutableArray { - ret := NSMutableArray{} - ret.ptr = C.NSMutableArray_AllocWithZone(unsafe.Pointer(zone)) - return ret -} - -func NSMutableArrayAccessInstanceVariablesDirectly() bool { - ret := (C.NSMutableArray_AccessInstanceVariablesDirectly()) != 0 - return ret -} - -func NSMutableArrayAlloc() NSMutableArray { - ret := NSMutableArray{} - ret.ptr = C.NSMutableArray_Alloc() - return ret -} - -func NSMutableArrayInstancesRespondToSelector(aSelector SEL) bool { - ret := (C.NSMutableArray_InstancesRespondToSelector(unsafe.Pointer(aSelector))) != 0 +func NSMutableArrayVersion() NSInteger { + ret := (NSInteger)(C.NSMutableArray_Version()) return ret } @@ -3127,30 +3089,68 @@ func NSMutableArrayWithObjects(firstObj NSObject, objects ...NSObject) NSMutable return ret } -func (o NSMutableArray) RemoveObject(anObject NSObject) { - C.NSMutableArray_inst_RemoveObject(o.Ptr(), anObject.Ptr()) -} - -func (o NSMutableArray) RemoveObjectInRange(anObject NSObject, range_ NSRange) { - C.NSMutableArray_inst_RemoveObjectInRange(o.Ptr(), anObject.Ptr(), (C.NSRange)(range_)) -} - -func (o NSMutableArray) RemoveLastObject() { - C.NSMutableArray_inst_RemoveLastObject(o.Ptr()) -} - -func (o NSMutableArray) RemoveObjectsInArray(otherArray NSArray) { - C.NSMutableArray_inst_RemoveObjectsInArray(o.Ptr(), otherArray.Ptr()) -} - -func (o NSMutableArray) InitWithCoder(aDecoder NSCoder) NSMutableArray { - ret := NSMutableArray{} - ret.ptr = C.NSMutableArray_inst_InitWithCoder(o.Ptr(), aDecoder.Ptr()) +func NSMutableArrayInstanceMethodSignatureForSelector(aSelector SEL) NSMethodSignature { + ret := NSMethodSignature{} + ret.ptr = C.NSMutableArray_InstanceMethodSignatureForSelector(unsafe.Pointer(aSelector)) return ret } -func (o NSMutableArray) AddObject(anObject NSObject) { - C.NSMutableArray_inst_AddObject(o.Ptr(), anObject.Ptr()) +func NSMutableArrayKeyPathsForValuesAffectingValueForKey(key NSString) NSSet { + ret := NSSet{} + ret.ptr = C.NSMutableArray_KeyPathsForValuesAffectingValueForKey(key.Ptr()) + return ret +} + +func NSMutableArrayWithObject(anObject NSObject) NSMutableArray { + ret := NSMutableArray{} + ret.ptr = C.NSMutableArray_ArrayWithObject(anObject.Ptr()) + return ret +} + +func NSMutableArrayResolveInstanceMethod(sel SEL) bool { + ret := (C.NSMutableArray_ResolveInstanceMethod(unsafe.Pointer(sel))) != 0 + return ret +} + +func NSMutableArrayInstancesRespondToSelector(aSelector SEL) bool { + ret := (C.NSMutableArray_InstancesRespondToSelector(unsafe.Pointer(aSelector))) != 0 + return ret +} + +func NSMutableArrayClassForKeyedUnarchiver() Class { + ret := (Class)(unsafe.Pointer(C.NSMutableArray_ClassForKeyedUnarchiver())) + return ret +} + +func NSMutableArrayIsSubclassOfClass(aClass Class) bool { + ret := (C.NSMutableArray_IsSubclassOfClass(unsafe.Pointer(aClass))) != 0 + return ret +} + +func NSMutableArraySetVersion(aVersion NSInteger) { + C.NSMutableArray_SetVersion((C.NSInteger)(aVersion)) +} + +func NSMutableArrayDescription() NSString { + ret := NSString{} + ret.ptr = C.NSMutableArray_Description() + return ret +} + +func NSMutableArrayDebugDescription() NSString { + ret := NSString{} + ret.ptr = C.NSMutableArray_DebugDescription() + return ret +} + +func NSMutableArrayLoad() { + C.NSMutableArray_Load() +} + +func NSMutableArrayWithArray(array NSArray) NSMutableArray { + ret := NSMutableArray{} + ret.ptr = C.NSMutableArray_ArrayWithArray(array.Ptr()) + return ret } func (o NSMutableArray) RemoveObjectIdenticalTo(anObject NSObject) { @@ -3161,18 +3161,20 @@ func (o NSMutableArray) RemoveObjectIdenticalToInRange(anObject NSObject, range_ C.NSMutableArray_inst_RemoveObjectIdenticalToInRange(o.Ptr(), anObject.Ptr(), (C.NSRange)(range_)) } -func (o NSMutableArray) ExchangeObjectAtIndex(idx1 NSUInteger, idx2 NSUInteger) { - C.NSMutableArray_inst_ExchangeObjectAtIndex(o.Ptr(), (C.NSUInteger)(idx1), (C.NSUInteger)(idx2)) +func (o NSMutableArray) InsertObjects(objects NSArray, indexes NSIndexSet) { + C.NSMutableArray_inst_InsertObjects(o.Ptr(), objects.Ptr(), indexes.Ptr()) } -func (o NSMutableArray) RemoveObjectsAtIndexes(indexes NSIndexSet) { - C.NSMutableArray_inst_RemoveObjectsAtIndexes(o.Ptr(), indexes.Ptr()) +func (o NSMutableArray) RemoveObjectsInRange(range_ NSRange) { + C.NSMutableArray_inst_RemoveObjectsInRange(o.Ptr(), (C.NSRange)(range_)) } -func (o NSMutableArray) Init() NSMutableArray { - ret := NSMutableArray{} - ret.ptr = C.NSMutableArray_inst_Init(o.Ptr()) - return ret +func (o NSMutableArray) RemoveAllObjects() { + C.NSMutableArray_inst_RemoveAllObjects(o.Ptr()) +} + +func (o NSMutableArray) InsertObject(anObject NSObject, index NSUInteger) { + C.NSMutableArray_inst_InsertObject(o.Ptr(), anObject.Ptr(), (C.NSUInteger)(index)) } func (o NSMutableArray) ReplaceObjectsInRangeWithObjectsFromArray(range_ NSRange, otherArray NSArray) { @@ -3183,32 +3185,74 @@ func (o NSMutableArray) ReplaceObjectsInRangeWithObjectsFromArrayRange(range_ NS C.NSMutableArray_inst_ReplaceObjectsInRangeWithObjectsFromArrayRange(o.Ptr(), (C.NSRange)(range_), otherArray.Ptr(), (C.NSRange)(otherRange)) } -func (o NSMutableArray) SetObject(obj NSObject, idx NSUInteger) { - C.NSMutableArray_inst_SetObject(o.Ptr(), obj.Ptr(), (C.NSUInteger)(idx)) +func (o NSMutableArray) InitWithContentsOfURL(url NSURL) NSMutableArray { + ret := NSMutableArray{} + ret.ptr = C.NSMutableArray_inst_InitWithContentsOfURL(o.Ptr(), url.Ptr()) + return ret } -func (o NSMutableArray) InsertObject(anObject NSObject, index NSUInteger) { - C.NSMutableArray_inst_InsertObject(o.Ptr(), anObject.Ptr(), (C.NSUInteger)(index)) +func (o NSMutableArray) FilterUsingPredicate(predicate NSPredicate) { + C.NSMutableArray_inst_FilterUsingPredicate(o.Ptr(), predicate.Ptr()) } -func (o NSMutableArray) InsertObjects(objects NSArray, indexes NSIndexSet) { - C.NSMutableArray_inst_InsertObjects(o.Ptr(), objects.Ptr(), indexes.Ptr()) +func (o NSMutableArray) RemoveObject(anObject NSObject) { + C.NSMutableArray_inst_RemoveObject(o.Ptr(), anObject.Ptr()) } -func (o NSMutableArray) SortUsingDescriptors(sortDescriptors NSArray) { - C.NSMutableArray_inst_SortUsingDescriptors(o.Ptr(), sortDescriptors.Ptr()) +func (o NSMutableArray) RemoveObjectInRange(anObject NSObject, range_ NSRange) { + C.NSMutableArray_inst_RemoveObjectInRange(o.Ptr(), anObject.Ptr(), (C.NSRange)(range_)) } -func (o NSMutableArray) RemoveAllObjects() { - C.NSMutableArray_inst_RemoveAllObjects(o.Ptr()) +func (o NSMutableArray) InitWithCoder(aDecoder NSCoder) NSMutableArray { + ret := NSMutableArray{} + ret.ptr = C.NSMutableArray_inst_InitWithCoder(o.Ptr(), aDecoder.Ptr()) + return ret +} + +func (o NSMutableArray) InitWithCapacity(numItems NSUInteger) NSMutableArray { + ret := NSMutableArray{} + ret.ptr = C.NSMutableArray_inst_InitWithCapacity(o.Ptr(), (C.NSUInteger)(numItems)) + return ret } func (o NSMutableArray) SetArray(otherArray NSArray) { C.NSMutableArray_inst_SetArray(o.Ptr(), otherArray.Ptr()) } -func (o NSMutableArray) RemoveObjectsInRange(range_ NSRange) { - C.NSMutableArray_inst_RemoveObjectsInRange(o.Ptr(), (C.NSRange)(range_)) +func (o NSMutableArray) RemoveObjectsAtIndexes(indexes NSIndexSet) { + C.NSMutableArray_inst_RemoveObjectsAtIndexes(o.Ptr(), indexes.Ptr()) +} + +func (o NSMutableArray) ExchangeObjectAtIndex(idx1 NSUInteger, idx2 NSUInteger) { + C.NSMutableArray_inst_ExchangeObjectAtIndex(o.Ptr(), (C.NSUInteger)(idx1), (C.NSUInteger)(idx2)) +} + +func (o NSMutableArray) SetObject(obj NSObject, idx NSUInteger) { + C.NSMutableArray_inst_SetObject(o.Ptr(), obj.Ptr(), (C.NSUInteger)(idx)) +} + +func (o NSMutableArray) RemoveObjectsInArray(otherArray NSArray) { + C.NSMutableArray_inst_RemoveObjectsInArray(o.Ptr(), otherArray.Ptr()) +} + +func (o NSMutableArray) Init() NSMutableArray { + ret := NSMutableArray{} + ret.ptr = C.NSMutableArray_inst_Init(o.Ptr()) + return ret +} + +func (o NSMutableArray) AddObject(anObject NSObject) { + C.NSMutableArray_inst_AddObject(o.Ptr(), anObject.Ptr()) +} + +func (o NSMutableArray) SortUsingDescriptors(sortDescriptors NSArray) { + C.NSMutableArray_inst_SortUsingDescriptors(o.Ptr(), sortDescriptors.Ptr()) +} + +func (o NSMutableArray) InitWithContentsOfFile(path NSString) NSMutableArray { + ret := NSMutableArray{} + ret.ptr = C.NSMutableArray_inst_InitWithContentsOfFile(o.Ptr(), path.Ptr()) + return ret } func (o NSMutableArray) ReplaceObjectAtIndex(index NSUInteger, anObject NSObject) { @@ -3219,32 +3263,6 @@ func (o NSMutableArray) SortUsingSelector(comparator SEL) { C.NSMutableArray_inst_SortUsingSelector(o.Ptr(), unsafe.Pointer(comparator)) } -func (o NSMutableArray) InitWithContentsOfFile(path NSString) NSMutableArray { - ret := NSMutableArray{} - ret.ptr = C.NSMutableArray_inst_InitWithContentsOfFile(o.Ptr(), path.Ptr()) - return ret -} - -func (o NSMutableArray) FilterUsingPredicate(predicate NSPredicate) { - C.NSMutableArray_inst_FilterUsingPredicate(o.Ptr(), predicate.Ptr()) -} - -func (o NSMutableArray) InitWithCapacity(numItems NSUInteger) NSMutableArray { - ret := NSMutableArray{} - ret.ptr = C.NSMutableArray_inst_InitWithCapacity(o.Ptr(), (C.NSUInteger)(numItems)) - return ret -} - -func (o NSMutableArray) ReplaceObjectsAtIndexes(indexes NSIndexSet, objects NSArray) { - C.NSMutableArray_inst_ReplaceObjectsAtIndexes(o.Ptr(), indexes.Ptr(), objects.Ptr()) -} - -func (o NSMutableArray) InitWithContentsOfURL(url NSURL) NSMutableArray { - ret := NSMutableArray{} - ret.ptr = C.NSMutableArray_inst_InitWithContentsOfURL(o.Ptr(), url.Ptr()) - return ret -} - func (o NSMutableArray) AddObjectsFromArray(otherArray NSArray) { C.NSMutableArray_inst_AddObjectsFromArray(o.Ptr(), otherArray.Ptr()) } @@ -3253,20 +3271,35 @@ func (o NSMutableArray) RemoveObjectAtIndex(index NSUInteger) { C.NSMutableArray_inst_RemoveObjectAtIndex(o.Ptr(), (C.NSUInteger)(index)) } -func NSStringPathWithComponents(components NSArray) NSString { - ret := NSString{} - ret.ptr = C.NSString_PathWithComponents(components.Ptr()) +func (o NSMutableArray) RemoveLastObject() { + C.NSMutableArray_inst_RemoveLastObject(o.Ptr()) +} + +func (o NSMutableArray) ReplaceObjectsAtIndexes(indexes NSIndexSet, objects NSArray) { + C.NSMutableArray_inst_ReplaceObjectsAtIndexes(o.Ptr(), indexes.Ptr(), objects.Ptr()) +} + +func NSStringSetVersion(aVersion NSInteger) { + C.NSString_SetVersion((C.NSInteger)(aVersion)) +} + +func NSStringResolveClassMethod(sel SEL) bool { + ret := (C.NSString_ResolveClassMethod(unsafe.Pointer(sel))) != 0 return ret } -func NSStringDescription() NSString { - ret := NSString{} - ret.ptr = C.NSString_Description() +func NSStringKeyPathsForValuesAffectingValueForKey(key NSString) NSSet { + ret := NSSet{} + ret.ptr = C.NSString_KeyPathsForValuesAffectingValueForKey(key.Ptr()) return ret } -func NSStringAccessInstanceVariablesDirectly() bool { - ret := (C.NSString_AccessInstanceVariablesDirectly()) != 0 +func NSStringAllocWithZone(zone *_NSZone) NSString { + ret := NSString{} + ret.ptr = C.NSString_AllocWithZone(unsafe.Pointer(zone)) + runtime.SetFinalizer(&ret, func(o *NSString) { + o.Release() + }) return ret } @@ -3275,18 +3308,12 @@ func NSStringHash() NSUInteger { return ret } -func NSStringWithString(string NSString) NSString { - ret := NSString{} - ret.ptr = C.NSString_StringWithString(string.Ptr()) +func NSStringInstanceMethodSignatureForSelector(aSelector SEL) NSMethodSignature { + ret := NSMethodSignature{} + ret.ptr = C.NSString_InstanceMethodSignatureForSelector(unsafe.Pointer(aSelector)) return ret } -func NSStringWithGoString(string string) NSString { - string_chr := CharWithGoString(string) - defer string_chr.Free() - return NSStringWithString(NSStringWithUTF8String(string_chr)) -} - func NSStringWithContentsOfURLEncoding(url NSURL, enc NSStringEncoding, error *[]NSError) NSString { goSlice2 := make([]unsafe.Pointer,cap(*error)) @@ -3325,14 +3352,9 @@ func NSStringWithContentsOfURLUsedEncoding(url NSURL, enc *NSStringEncoding, err return ret } -func NSStringWithCString(cString *Char, enc NSStringEncoding) NSString { +func NSStringDescription() NSString { ret := NSString{} - ret.ptr = C.NSString_StringWithCString(unsafe.Pointer(cString), (C.NSStringEncoding)(enc)) - return ret -} - -func NSStringInstancesRespondToSelector(aSelector SEL) bool { - ret := (C.NSString_InstancesRespondToSelector(unsafe.Pointer(aSelector))) != 0 + ret.ptr = C.NSString_Description() return ret } @@ -3341,16 +3363,148 @@ func NSStringClassForKeyedUnarchiver() Class { return ret } -func NSStringClass() Class { - ret := (Class)(unsafe.Pointer(C.NSString_Class())) +func NSStringIsSubclassOfClass(aClass Class) bool { + ret := (C.NSString_IsSubclassOfClass(unsafe.Pointer(aClass))) != 0 return ret } -func NSStringResolveClassMethod(sel SEL) bool { - ret := (C.NSString_ResolveClassMethod(unsafe.Pointer(sel))) != 0 +func NSStringAccessInstanceVariablesDirectly() bool { + ret := (C.NSString_AccessInstanceVariablesDirectly()) != 0 return ret } +func NSStringInstancesRespondToSelector(aSelector SEL) bool { + ret := (C.NSString_InstancesRespondToSelector(unsafe.Pointer(aSelector))) != 0 + return ret +} + +func NSStringWithCString(cString *Char, enc NSStringEncoding) NSString { + ret := NSString{} + ret.ptr = C.NSString_StringWithCString(unsafe.Pointer(cString), (C.NSStringEncoding)(enc)) + return ret +} + +func NSStringEncodingForData(data NSData, opts NSDictionary, string *[]NSString, usedLossyConversion *BOOL) NSStringEncoding { + + goSlice2 := make([]unsafe.Pointer,cap(*string)) + for i := 0; i < len(*string); i++ { + goSlice2[i] = (*string)[i].Ptr() + } + ret := (NSStringEncoding)(C.NSString_StringEncodingForData(data.Ptr(), opts.Ptr(), unsafe.Pointer(&goSlice2[0]), unsafe.Pointer(usedLossyConversion))) + (*string) = (*string)[:cap(*string)] + for i := 0; i < len(*string); i++ { + if goSlice2[i] == nil { + (*string) = (*string)[:i] + break + } + (*string)[i].ptr = goSlice2[i] + } + return ret +} + +func NSStringClassFallbacksForKeyedArchiver() NSArray { + ret := NSArray{} + ret.ptr = C.NSString_ClassFallbacksForKeyedArchiver() + return ret +} + +func NSStringAvailableStringEncodings() *NSStringEncoding { + ret := (*NSStringEncoding)(unsafe.Pointer(C.NSString_AvailableStringEncodings())) + return ret +} + +func NSStringPathWithComponents(components NSArray) NSString { + ret := NSString{} + ret.ptr = C.NSString_PathWithComponents(components.Ptr()) + return ret +} + +func NSStringWithUTF8String(nullTerminatedCString *Char) NSString { + ret := NSString{} + ret.ptr = C.NSString_StringWithUTF8String(unsafe.Pointer(nullTerminatedCString)) + runtime.SetFinalizer(&ret,func(o *NSString) { + o.Release() + }) + return ret +} + +func NSStringWithCharacters(characters *Unichar, length NSUInteger) NSString { + ret := NSString{} + ret.ptr = C.NSString_StringWithCharacters(unsafe.Pointer(characters), (C.NSUInteger)(length)) + return ret +} + +func NSStringSuperclass() Class { + ret := (Class)(unsafe.Pointer(C.NSString_Superclass())) + return ret +} + +func NSStringLocalizedStringWithFormat(format NSString, objects ...NSObject) NSString { + var object [16]unsafe.Pointer + for i,o := range objects { + object[i] = o.Ptr() + } + ret := NSString{} + ret.ptr = C.NSString_LocalizedStringWithFormat(format.Ptr(), unsafe.Pointer(&object)) + return ret +} + +func NSStringAutomaticallyNotifiesObserversForKey(key NSString) bool { + ret := (C.NSString_AutomaticallyNotifiesObserversForKey(key.Ptr())) != 0 + return ret +} + +func NSStringNew() NSString { + ret := NSString{} + ret.ptr = C.NSString_New() + return ret +} + +func NSStringCopyWithZone(zone *_NSZone) Id { + ret := Id{} + ret.ptr = C.NSString_CopyWithZone(unsafe.Pointer(zone)) + return ret +} + +func NSStringDefaultCStringEncoding() NSStringEncoding { + ret := (NSStringEncoding)(C.NSString_DefaultCStringEncoding()) + return ret +} + +func NSStringDebugDescription() NSString { + ret := NSString{} + ret.ptr = C.NSString_DebugDescription() + return ret +} + +func NSStringWithFormat(format NSString, objects ...NSObject) NSString { + var object [16]unsafe.Pointer + for i,o := range objects { + object[i] = o.Ptr() + } + ret := NSString{} + ret.ptr = C.NSString_StringWithFormat(format.Ptr(), unsafe.Pointer(&object)) + return ret +} + +func NSStringVersion() NSInteger { + ret := (NSInteger)(C.NSString_Version()) + return ret +} + +func NSStringAlloc() NSString { + ret := NSString{} + ret.ptr = C.NSString_Alloc() + runtime.SetFinalizer(&ret, func(o *NSString) { + o.Release() + }) + return ret +} + +func NSStringLoad() { + C.NSString_Load() +} + func NSStringWithContentsOfFileEncoding(path NSString, enc NSStringEncoding, error *[]NSError) NSString { goSlice2 := make([]unsafe.Pointer,cap(*error)) @@ -3389,37 +3543,30 @@ func NSStringWithContentsOfFileUsedEncoding(path NSString, enc *NSStringEncoding return ret } -func NSStringDebugDescription() NSString { - ret := NSString{} - ret.ptr = C.NSString_DebugDescription() - return ret -} - func NSStringConformsToProtocol(protocol Protocol) bool { ret := (C.NSString_ConformsToProtocol(protocol.Ptr())) != 0 return ret } -func NSStringDefaultCStringEncoding() NSStringEncoding { - ret := (NSStringEncoding)(C.NSString_DefaultCStringEncoding()) - return ret -} - func NSStringMutableCopyWithZone(zone *_NSZone) Id { ret := Id{} ret.ptr = C.NSString_MutableCopyWithZone(unsafe.Pointer(zone)) return ret } -func NSStringCopyWithZone(zone *_NSZone) Id { - ret := Id{} - ret.ptr = C.NSString_CopyWithZone(unsafe.Pointer(zone)) +func NSStringResolveInstanceMethod(sel SEL) bool { + ret := (C.NSString_ResolveInstanceMethod(unsafe.Pointer(sel))) != 0 return ret } -func NSStringLocalizedNameOfStringEncoding(encoding NSStringEncoding) NSString { +func NSStringClass() Class { + ret := (Class)(unsafe.Pointer(C.NSString_Class())) + return ret +} + +func NSStringString() NSString { ret := NSString{} - ret.ptr = C.NSString_LocalizedNameOfStringEncoding((C.NSStringEncoding)(encoding)) + ret.ptr = C.NSString_String() return ret } @@ -3431,166 +3578,135 @@ func NSStringCancelPreviousPerformRequestsWithTargetSelector(aTarget NSObject, a C.NSString_CancelPreviousPerformRequestsWithTargetSelector(aTarget.Ptr(), unsafe.Pointer(aSelector), anArgument.Ptr()) } -func NSStringVersion() NSInteger { - ret := (NSInteger)(C.NSString_Version()) - return ret -} - -func NSStringAutomaticallyNotifiesObserversForKey(key NSString) bool { - ret := (C.NSString_AutomaticallyNotifiesObserversForKey(key.Ptr())) != 0 - return ret -} - -func NSStringAvailableStringEncodings() *NSStringEncoding { - ret := (*NSStringEncoding)(unsafe.Pointer(C.NSString_AvailableStringEncodings())) - return ret -} - -func NSStringIsSubclassOfClass(aClass Class) bool { - ret := (C.NSString_IsSubclassOfClass(unsafe.Pointer(aClass))) != 0 - return ret -} - -func NSStringSuperclass() Class { - ret := (Class)(unsafe.Pointer(C.NSString_Superclass())) - return ret -} - -func NSStringNew() NSString { +func NSStringWithString(string NSString) NSString { ret := NSString{} - ret.ptr = C.NSString_New() + ret.ptr = C.NSString_StringWithString(string.Ptr()) return ret } -func NSStringSetVersion(aVersion NSInteger) { - C.NSString_SetVersion((C.NSInteger)(aVersion)) +func NSStringWithGoString(string string) NSString { + string_chr := CharWithGoString(string) + defer string_chr.Free() + return NSStringWithUTF8String(string_chr) } -func NSStringAllocWithZone(zone *_NSZone) NSString { +func NSStringLocalizedNameOfStringEncoding(encoding NSStringEncoding) NSString { ret := NSString{} - ret.ptr = C.NSString_AllocWithZone(unsafe.Pointer(zone)) + ret.ptr = C.NSString_LocalizedNameOfStringEncoding((C.NSStringEncoding)(encoding)) return ret } -func NSStringClassFallbacksForKeyedArchiver() NSArray { - ret := NSArray{} - ret.ptr = C.NSString_ClassFallbacksForKeyedArchiver() +func (o NSString) StringByDeletingPathExtension() NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_StringByDeletingPathExtension(o.Ptr()) return ret } -func NSStringLoad() { - C.NSString_Load() +func (o NSString) LocalizedCapitalizedString() NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_LocalizedCapitalizedString(o.Ptr()) + return ret } -func NSStringLocalizedStringWithFormat(format NSString, objects ...NSObject) NSString { - var object [16]unsafe.Pointer - for i,o := range objects { - object[i] = o.Ptr() +func (o NSString) StringByExpandingTildeInPath() NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_StringByExpandingTildeInPath(o.Ptr()) + return ret +} + +func (o NSString) StringByReplacingCharactersInRange(range_ NSRange, replacement NSString) NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_StringByReplacingCharactersInRange(o.Ptr(), (C.NSRange)(range_), replacement.Ptr()) + return ret +} + +func (o NSString) InitWithBytes(bytes unsafe.Pointer, len_ NSUInteger, encoding NSStringEncoding) NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_InitWithBytes(o.Ptr(), unsafe.Pointer(bytes), (C.NSUInteger)(len_), (C.NSStringEncoding)(encoding)) + return ret +} + +func (o NSString) CharacterAtIndex(index NSUInteger) Unichar { + ret := (Unichar)(C.NSString_inst_CharacterAtIndex(o.Ptr(), (C.NSUInteger)(index))) + return ret +} + +func (o NSString) WriteToFile(path NSString, useAuxiliaryFile BOOL, enc NSStringEncoding, error *[]NSError) bool { + + goSlice4 := make([]unsafe.Pointer,cap(*error)) + for i := 0; i < len(*error); i++ { + goSlice4[i] = (*error)[i].Ptr() } - ret := NSString{} - ret.ptr = C.NSString_LocalizedStringWithFormat(format.Ptr(), unsafe.Pointer(&object)) - return ret -} - -func NSStringAlloc() NSString { - ret := NSString{} - ret.ptr = C.NSString_Alloc() - return ret -} - -func NSStringWithCharacters(characters *Unichar, length NSUInteger) NSString { - ret := NSString{} - ret.ptr = C.NSString_StringWithCharacters(unsafe.Pointer(characters), (C.NSUInteger)(length)) - return ret -} - -func NSStringEncodingForData(data NSData, opts NSDictionary, string *[]NSString, usedLossyConversion *BOOL) NSStringEncoding { - - goSlice2 := make([]unsafe.Pointer,cap(*string)) - for i := 0; i < len(*string); i++ { - goSlice2[i] = (*string)[i].Ptr() - } - ret := (NSStringEncoding)(C.NSString_StringEncodingForData(data.Ptr(), opts.Ptr(), unsafe.Pointer(&goSlice2[0]), unsafe.Pointer(usedLossyConversion))) - (*string) = (*string)[:cap(*string)] - for i := 0; i < len(*string); i++ { - if goSlice2[i] == nil { - (*string) = (*string)[:i] + ret := (C.NSString_inst_WriteToFile(o.Ptr(), path.Ptr(), (C.BOOL)(useAuxiliaryFile), (C.NSStringEncoding)(enc), unsafe.Pointer(&goSlice4[0]))) != 0 + (*error) = (*error)[:cap(*error)] + for i := 0; i < len(*error); i++ { + if goSlice4[i] == nil { + (*error) = (*error)[:i] break } - (*string)[i].ptr = goSlice2[i] + (*error)[i].ptr = goSlice4[i] } return ret } -func NSStringResolveInstanceMethod(sel SEL) bool { - ret := (C.NSString_ResolveInstanceMethod(unsafe.Pointer(sel))) != 0 +func (o NSString) LocalizedStandardContainsString(str NSString) bool { + ret := (C.NSString_inst_LocalizedStandardContainsString(o.Ptr(), str.Ptr())) != 0 return ret } -func NSStringWithUTF8String(nullTerminatedCString *Char) NSString { +func (o NSString) PrecomposedStringWithCanonicalMapping() NSString { ret := NSString{} - ret.ptr = C.NSString_StringWithUTF8String(unsafe.Pointer(nullTerminatedCString)) + ret.ptr = C.NSString_inst_PrecomposedStringWithCanonicalMapping(o.Ptr()) return ret } -func NSStringKeyPathsForValuesAffectingValueForKey(key NSString) NSSet { - ret := NSSet{} - ret.ptr = C.NSString_KeyPathsForValuesAffectingValueForKey(key.Ptr()) - return ret -} - -func NSStringString() NSString { +func (o NSString) StringByAppendingString(aString NSString) NSString { ret := NSString{} - ret.ptr = C.NSString_String() + ret.ptr = C.NSString_inst_StringByAppendingString(o.Ptr(), aString.Ptr()) return ret } -func NSStringInstanceMethodSignatureForSelector(aSelector SEL) NSMethodSignature { - ret := NSMethodSignature{} - ret.ptr = C.NSString_InstanceMethodSignatureForSelector(unsafe.Pointer(aSelector)) - return ret +func (o NSString) GetParagraphStart(startPtr *NSUInteger, parEndPtr *NSUInteger, contentsEndPtr *NSUInteger, range_ NSRange) { + C.NSString_inst_GetParagraphStart(o.Ptr(), unsafe.Pointer(startPtr), unsafe.Pointer(parEndPtr), unsafe.Pointer(contentsEndPtr), (C.NSRange)(range_)) } -func NSStringWithFormat(format NSString, objects ...NSObject) NSString { - var object [16]unsafe.Pointer - for i,o := range objects { - object[i] = o.Ptr() - } +func (o NSString) InitWithUTF8String(nullTerminatedCString *Char) NSString { ret := NSString{} - ret.ptr = C.NSString_StringWithFormat(format.Ptr(), unsafe.Pointer(&object)) + ret.ptr = C.NSString_inst_InitWithUTF8String(o.Ptr(), unsafe.Pointer(nullTerminatedCString)) return ret } -func (o NSString) InitWithCharacters(characters *Unichar, length NSUInteger) NSString { +func (o NSString) StringByFoldingWithOptions(options NSStringCompareOptions, locale NSLocale) NSString { ret := NSString{} - ret.ptr = C.NSString_inst_InitWithCharacters(o.Ptr(), unsafe.Pointer(characters), (C.NSUInteger)(length)) + ret.ptr = C.NSString_inst_StringByFoldingWithOptions(o.Ptr(), (C.NSStringCompareOptions)(options), locale.Ptr()) return ret } -func (o NSString) StringByStandardizingPath() NSString { +func (o NSString) InitWithData(data NSData, encoding NSStringEncoding) NSString { ret := NSString{} - ret.ptr = C.NSString_inst_StringByStandardizingPath(o.Ptr()) + ret.ptr = C.NSString_inst_InitWithData(o.Ptr(), data.Ptr(), (C.NSStringEncoding)(encoding)) return ret } -func (o NSString) HasSuffix(str NSString) bool { - ret := (C.NSString_inst_HasSuffix(o.Ptr(), str.Ptr())) != 0 +func (o NSString) Description() NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_Description(o.Ptr()) return ret } -func (o NSString) ComponentsSeparatedByCharactersInSet(separator NSCharacterSet) NSArray { - ret := NSArray{} - ret.ptr = C.NSString_inst_ComponentsSeparatedByCharactersInSet(o.Ptr(), separator.Ptr()) +func (o NSString) StringByResolvingSymlinksInPath() NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_StringByResolvingSymlinksInPath(o.Ptr()) return ret } -func (o NSString) LengthOfBytesUsingEncoding(enc NSStringEncoding) NSUInteger { - ret := (NSUInteger)(C.NSString_inst_LengthOfBytesUsingEncoding(o.Ptr(), (C.NSStringEncoding)(enc))) - return ret +func (o NSString) GetLineStart(startPtr *NSUInteger, lineEndPtr *NSUInteger, contentsEndPtr *NSUInteger, range_ NSRange) { + C.NSString_inst_GetLineStart(o.Ptr(), unsafe.Pointer(startPtr), unsafe.Pointer(lineEndPtr), unsafe.Pointer(contentsEndPtr), (C.NSRange)(range_)) } -func (o NSString) LocalizedCaseInsensitiveContainsString(str NSString) bool { - ret := (C.NSString_inst_LocalizedCaseInsensitiveContainsString(o.Ptr(), str.Ptr())) != 0 +func (o NSString) StringByPaddingToLength(newLength NSUInteger, padString NSString, padIndex NSUInteger) NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_StringByPaddingToLength(o.Ptr(), (C.NSUInteger)(newLength), padString.Ptr(), (C.NSUInteger)(padIndex)) return ret } @@ -3600,11 +3716,150 @@ func (o NSString) CapitalizedString() NSString { return ret } -func (o NSString) Hash() NSUInteger { - ret := (NSUInteger)(C.NSString_inst_Hash(o.Ptr())) +func (o NSString) DoubleValue() Double { + ret := (Double)(C.NSString_inst_DoubleValue(o.Ptr())) return ret } +func (o NSString) LocalizedLowercaseString() NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_LocalizedLowercaseString(o.Ptr()) + return ret +} + +func (o NSString) StringByAddingPercentEncodingWithAllowedCharacters(allowedCharacters NSCharacterSet) NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_StringByAddingPercentEncodingWithAllowedCharacters(o.Ptr(), allowedCharacters.Ptr()) + return ret +} + +func (o NSString) StringsByAppendingPaths(paths NSArray) NSArray { + ret := NSArray{} + ret.ptr = C.NSString_inst_StringsByAppendingPaths(o.Ptr(), paths.Ptr()) + return ret +} + +func (o NSString) IsEqualToString(aString NSString) bool { + ret := (C.NSString_inst_IsEqualToString(o.Ptr(), aString.Ptr())) != 0 + return ret +} + +func (o NSString) VariantFittingPresentationWidth(width NSInteger) NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_VariantFittingPresentationWidth(o.Ptr(), (C.NSInteger)(width)) + return ret +} + +func (o NSString) CompletePathIntoString(outputName *[]NSString, flag BOOL, outputArray *[]NSArray, filterTypes NSArray) NSUInteger { + + goSlice1 := make([]unsafe.Pointer,cap(*outputName)) + for i := 0; i < len(*outputName); i++ { + goSlice1[i] = (*outputName)[i].Ptr() + } + + goSlice3 := make([]unsafe.Pointer,cap(*outputArray)) + for i := 0; i < len(*outputArray); i++ { + goSlice3[i] = (*outputArray)[i].Ptr() + } + ret := (NSUInteger)(C.NSString_inst_CompletePathIntoString(o.Ptr(), unsafe.Pointer(&goSlice1[0]), (C.BOOL)(flag), unsafe.Pointer(&goSlice3[0]), filterTypes.Ptr())) + (*outputName) = (*outputName)[:cap(*outputName)] + for i := 0; i < len(*outputName); i++ { + if goSlice1[i] == nil { + (*outputName) = (*outputName)[:i] + break + } + (*outputName)[i].ptr = goSlice1[i] + } + (*outputArray) = (*outputArray)[:cap(*outputArray)] + for i := 0; i < len(*outputArray); i++ { + if goSlice3[i] == nil { + (*outputArray) = (*outputArray)[:i] + break + } + (*outputArray)[i].ptr = goSlice3[i] + } + return ret +} + +func (o NSString) CapitalizedStringWithLocale(locale NSLocale) NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_CapitalizedStringWithLocale(o.Ptr(), locale.Ptr()) + return ret +} + +func (o NSString) StringByApplyingTransform(transform NSStringTransform, reverse BOOL) NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_StringByApplyingTransform(o.Ptr(), transform.Ptr(), (C.BOOL)(reverse)) + return ret +} + +func (o NSString) StringByReplacingOccurrencesOfStringWithString(target NSString, replacement NSString) NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_StringByReplacingOccurrencesOfStringWithString(o.Ptr(), target.Ptr(), replacement.Ptr()) + return ret +} + +func (o NSString) StringByReplacingOccurrencesOfStringWithStringOptions(target NSString, replacement NSString, options NSStringCompareOptions, searchRange NSRange) NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_StringByReplacingOccurrencesOfStringWithStringOptions(o.Ptr(), target.Ptr(), replacement.Ptr(), (C.NSStringCompareOptions)(options), (C.NSRange)(searchRange)) + return ret +} + +func (o NSString) RangeOfComposedCharacterSequencesForRange(range_ NSRange) NSRange { + ret := (NSRange)(C.NSString_inst_RangeOfComposedCharacterSequencesForRange(o.Ptr(), (C.NSRange)(range_))) + return ret +} + +func (o NSString) SubstringFromIndex(from NSUInteger) NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_SubstringFromIndex(o.Ptr(), (C.NSUInteger)(from)) + return ret +} + +func (o NSString) PrecomposedStringWithCompatibilityMapping() NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_PrecomposedStringWithCompatibilityMapping(o.Ptr()) + return ret +} + +func (o NSString) FileSystemRepresentation() *Char { + ret := (*Char)(unsafe.Pointer(C.NSString_inst_FileSystemRepresentation(o.Ptr()))) + return ret +} + +func (o NSString) BoolValue() bool { + ret := (C.NSString_inst_BoolValue(o.Ptr())) != 0 + return ret +} + +func (o NSString) HasPrefix(str NSString) bool { + ret := (C.NSString_inst_HasPrefix(o.Ptr(), str.Ptr())) != 0 + return ret +} + +func (o NSString) LocalizedCompare(string NSString) NSComparisonResult { + ret := (NSComparisonResult)(C.NSString_inst_LocalizedCompare(o.Ptr(), string.Ptr())) + return ret +} + +func (o NSString) LowercaseString() NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_LowercaseString(o.Ptr()) + return ret +} + +func (o NSString) InitWithString(aString NSString) NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_InitWithString(o.Ptr(), aString.Ptr()) + return ret +} + +func (o NSString) InitWithGoString(aString string) NSString { + aString_chr := CharWithGoString(aString) + defer aString_chr.Free() + return o.InitWithString(NSStringWithUTF8String(aString_chr)) +} + func (o NSString) InitWithContentsOfURLEncoding(url NSURL, enc NSStringEncoding, error *[]NSError) NSString { goSlice3 := make([]unsafe.Pointer,cap(*error)) @@ -3643,40 +3898,101 @@ func (o NSString) InitWithContentsOfURLUsedEncoding(url NSURL, enc *NSStringEnco return ret } -func (o NSString) CompletePathIntoString(outputName *[]NSString, flag BOOL, outputArray *[]NSArray, filterTypes NSArray) NSUInteger { - - goSlice1 := make([]unsafe.Pointer,cap(*outputName)) - for i := 0; i < len(*outputName); i++ { - goSlice1[i] = (*outputName)[i].Ptr() - } - - goSlice3 := make([]unsafe.Pointer,cap(*outputArray)) - for i := 0; i < len(*outputArray); i++ { - goSlice3[i] = (*outputArray)[i].Ptr() - } - ret := (NSUInteger)(C.NSString_inst_CompletePathIntoString(o.Ptr(), unsafe.Pointer(&goSlice1[0]), (C.BOOL)(flag), unsafe.Pointer(&goSlice3[0]), filterTypes.Ptr())) - (*outputName) = (*outputName)[:cap(*outputName)] - for i := 0; i < len(*outputName); i++ { - if goSlice1[i] == nil { - (*outputName) = (*outputName)[:i] - break - } - (*outputName)[i].ptr = goSlice1[i] - } - (*outputArray) = (*outputArray)[:cap(*outputArray)] - for i := 0; i < len(*outputArray); i++ { - if goSlice3[i] == nil { - (*outputArray) = (*outputArray)[:i] - break - } - (*outputArray)[i].ptr = goSlice3[i] - } +func (o NSString) RangeOfString(searchString NSString) NSRange { + ret := (NSRange)(C.NSString_inst_RangeOfString(o.Ptr(), searchString.Ptr())) return ret } -func (o NSString) DecomposedStringWithCanonicalMapping() NSString { +func (o NSString) RangeOfStringOptions(searchString NSString, mask NSStringCompareOptions) NSRange { + ret := (NSRange)(C.NSString_inst_RangeOfStringOptions(o.Ptr(), searchString.Ptr(), (C.NSStringCompareOptions)(mask))) + return ret +} + +func (o NSString) RangeOfStringOptionsRange(searchString NSString, mask NSStringCompareOptions, rangeOfReceiverToSearch NSRange) NSRange { + ret := (NSRange)(C.NSString_inst_RangeOfStringOptionsRange(o.Ptr(), searchString.Ptr(), (C.NSStringCompareOptions)(mask), (C.NSRange)(rangeOfReceiverToSearch))) + return ret +} + +func (o NSString) RangeOfStringOptionsRangeLocale(searchString NSString, mask NSStringCompareOptions, rangeOfReceiverToSearch NSRange, locale NSLocale) NSRange { + ret := (NSRange)(C.NSString_inst_RangeOfStringOptionsRangeLocale(o.Ptr(), searchString.Ptr(), (C.NSStringCompareOptions)(mask), (C.NSRange)(rangeOfReceiverToSearch), locale.Ptr())) + return ret +} + +func (o NSString) CStringUsingEncoding(encoding NSStringEncoding) *Char { + ret := (*Char)(unsafe.Pointer(C.NSString_inst_CStringUsingEncoding(o.Ptr(), (C.NSStringEncoding)(encoding)))) + return ret +} + +func (o NSString) GetFileSystemRepresentation(cname *Char, max NSUInteger) bool { + ret := (C.NSString_inst_GetFileSystemRepresentation(o.Ptr(), unsafe.Pointer(cname), (C.NSUInteger)(max))) != 0 + return ret +} + +func (o NSString) CanBeConvertedToEncoding(encoding NSStringEncoding) bool { + ret := (C.NSString_inst_CanBeConvertedToEncoding(o.Ptr(), (C.NSStringEncoding)(encoding))) != 0 + return ret +} + +func (o NSString) ComponentsSeparatedByCharactersInSet(separator NSCharacterSet) NSArray { + ret := NSArray{} + ret.ptr = C.NSString_inst_ComponentsSeparatedByCharactersInSet(o.Ptr(), separator.Ptr()) + return ret +} + +func (o NSString) StringByDeletingLastPathComponent() NSString { ret := NSString{} - ret.ptr = C.NSString_inst_DecomposedStringWithCanonicalMapping(o.Ptr()) + ret.ptr = C.NSString_inst_StringByDeletingLastPathComponent(o.Ptr()) + return ret +} + +func (o NSString) StringByAbbreviatingWithTildeInPath() NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_StringByAbbreviatingWithTildeInPath(o.Ptr()) + return ret +} + +func (o NSString) IntValue() Int { + ret := (Int)(C.NSString_inst_IntValue(o.Ptr())) + return ret +} + +func (o NSString) LongLongValue() LongLong { + ret := (LongLong)(C.NSString_inst_LongLongValue(o.Ptr())) + return ret +} + +func (o NSString) DataUsingEncoding(encoding NSStringEncoding) NSData { + ret := NSData{} + ret.ptr = C.NSString_inst_DataUsingEncoding(o.Ptr(), (C.NSStringEncoding)(encoding)) + return ret +} + +func (o NSString) DataUsingEncodingAllowLossyConversion(encoding NSStringEncoding, lossy BOOL) NSData { + ret := NSData{} + ret.ptr = C.NSString_inst_DataUsingEncodingAllowLossyConversion(o.Ptr(), (C.NSStringEncoding)(encoding), (C.BOOL)(lossy)) + return ret +} + +func (o NSString) StringByStandardizingPath() NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_StringByStandardizingPath(o.Ptr()) + return ret +} + +func (o NSString) InitWithCharacters(characters *Unichar, length NSUInteger) NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_InitWithCharacters(o.Ptr(), unsafe.Pointer(characters), (C.NSUInteger)(length)) + return ret +} + +func (o NSString) PropertyListFromStringsFileFormat() NSDictionary { + ret := NSDictionary{} + ret.ptr = C.NSString_inst_PropertyListFromStringsFileFormat(o.Ptr()) + return ret +} + +func (o NSString) LengthOfBytesUsingEncoding(enc NSStringEncoding) NSUInteger { + ret := (NSUInteger)(C.NSString_inst_LengthOfBytesUsingEncoding(o.Ptr(), (C.NSStringEncoding)(enc))) return ret } @@ -3700,29 +4016,24 @@ func (o NSString) InitWithFormatLocale(format NSString, locale NSObject, objects return ret } -func (o NSString) SubstringWithRange(range_ NSRange) NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_SubstringWithRange(o.Ptr(), (C.NSRange)(range_)) +func (o NSString) RangeOfComposedCharacterSequenceAtIndex(index NSUInteger) NSRange { + ret := (NSRange)(C.NSString_inst_RangeOfComposedCharacterSequenceAtIndex(o.Ptr(), (C.NSUInteger)(index))) return ret } -func (o NSString) GetCharacters(buffer *Unichar) { - C.NSString_inst_GetCharacters(o.Ptr(), unsafe.Pointer(buffer)) -} - -func (o NSString) GetCharactersRange(buffer *Unichar, range_ NSRange) { - C.NSString_inst_GetCharactersRange(o.Ptr(), unsafe.Pointer(buffer), (C.NSRange)(range_)) -} - -func (o NSString) LowercaseStringWithLocale(locale NSLocale) NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_LowercaseStringWithLocale(o.Ptr(), locale.Ptr()) +func (o NSString) IsAbsolutePath() bool { + ret := (C.NSString_inst_IsAbsolutePath(o.Ptr())) != 0 return ret } -func (o NSString) StringByExpandingTildeInPath() NSString { +func (o NSString) GetCString(buffer *Char, maxBufferCount NSUInteger, encoding NSStringEncoding) bool { + ret := (C.NSString_inst_GetCString(o.Ptr(), unsafe.Pointer(buffer), (C.NSUInteger)(maxBufferCount), (C.NSStringEncoding)(encoding))) != 0 + return ret +} + +func (o NSString) InitWithCString(nullTerminatedCString *Char, encoding NSStringEncoding) NSString { ret := NSString{} - ret.ptr = C.NSString_inst_StringByExpandingTildeInPath(o.Ptr()) + ret.ptr = C.NSString_inst_InitWithCString(o.Ptr(), unsafe.Pointer(nullTerminatedCString), (C.NSStringEncoding)(encoding)) return ret } @@ -3736,14 +4047,85 @@ func (o NSString) StringByAppendingFormat(format NSString, objects ...NSObject) return ret } -func (o NSString) RangeOfComposedCharacterSequencesForRange(range_ NSRange) NSRange { - ret := (NSRange)(C.NSString_inst_RangeOfComposedCharacterSequencesForRange(o.Ptr(), (C.NSRange)(range_))) +func (o NSString) StringByAppendingPathComponent(str NSString) NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_StringByAppendingPathComponent(o.Ptr(), str.Ptr()) return ret } -func (o NSString) PropertyListFromStringsFileFormat() NSDictionary { - ret := NSDictionary{} - ret.ptr = C.NSString_inst_PropertyListFromStringsFileFormat(o.Ptr()) +func (o NSString) Init() NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_Init(o.Ptr()) + return ret +} + +func (o NSString) LastPathComponent() NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_LastPathComponent(o.Ptr()) + return ret +} + +func (o NSString) IntegerValue() NSInteger { + ret := (NSInteger)(C.NSString_inst_IntegerValue(o.Ptr())) + return ret +} + +func (o NSString) SubstringWithRange(range_ NSRange) NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_SubstringWithRange(o.Ptr(), (C.NSRange)(range_)) + return ret +} + +func (o NSString) CaseInsensitiveCompare(string NSString) NSComparisonResult { + ret := (NSComparisonResult)(C.NSString_inst_CaseInsensitiveCompare(o.Ptr(), string.Ptr())) + return ret +} + +func (o NSString) LowercaseStringWithLocale(locale NSLocale) NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_LowercaseStringWithLocale(o.Ptr(), locale.Ptr()) + return ret +} + +func (o NSString) LocalizedStandardCompare(string NSString) NSComparisonResult { + ret := (NSComparisonResult)(C.NSString_inst_LocalizedStandardCompare(o.Ptr(), string.Ptr())) + return ret +} + +func (o NSString) Hash() NSUInteger { + ret := (NSUInteger)(C.NSString_inst_Hash(o.Ptr())) + return ret +} + +func (o NSString) LocalizedCaseInsensitiveCompare(string NSString) NSComparisonResult { + ret := (NSComparisonResult)(C.NSString_inst_LocalizedCaseInsensitiveCompare(o.Ptr(), string.Ptr())) + return ret +} + +func (o NSString) Length() NSUInteger { + ret := (NSUInteger)(C.NSString_inst_Length(o.Ptr())) + return ret +} + +func (o NSString) InitWithBytesNoCopy(bytes unsafe.Pointer, len_ NSUInteger, encoding NSStringEncoding, freeBuffer BOOL) NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_InitWithBytesNoCopy(o.Ptr(), unsafe.Pointer(bytes), (C.NSUInteger)(len_), (C.NSStringEncoding)(encoding), (C.BOOL)(freeBuffer)) + return ret +} + +func (o NSString) SmallestEncoding() NSStringEncoding { + ret := (NSStringEncoding)(C.NSString_inst_SmallestEncoding(o.Ptr())) + return ret +} + +func (o NSString) InitWithCharactersNoCopy(characters *Unichar, length NSUInteger, freeBuffer BOOL) NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_InitWithCharactersNoCopy(o.Ptr(), unsafe.Pointer(characters), (C.NSUInteger)(length), (C.BOOL)(freeBuffer)) + return ret +} + +func (o NSString) ContainsString(str NSString) bool { + ret := (C.NSString_inst_ContainsString(o.Ptr(), str.Ptr())) != 0 return ret } @@ -3759,413 +4141,6 @@ func (o NSString) CommonPrefixWithGoString(str string, mask NSStringCompareOptio return o.CommonPrefixWithString(NSStringWithUTF8String(str_chr), mask) } -func (o NSString) FileSystemRepresentation() *Char { - ret := (*Char)(unsafe.Pointer(C.NSString_inst_FileSystemRepresentation(o.Ptr()))) - return ret -} - -func (o NSString) StringByFoldingWithOptions(options NSStringCompareOptions, locale NSLocale) NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_StringByFoldingWithOptions(o.Ptr(), (C.NSStringCompareOptions)(options), locale.Ptr()) - return ret -} - -func (o NSString) StringsByAppendingPaths(paths NSArray) NSArray { - ret := NSArray{} - ret.ptr = C.NSString_inst_StringsByAppendingPaths(o.Ptr(), paths.Ptr()) - return ret -} - -func (o NSString) InitWithCharactersNoCopy(characters *Unichar, length NSUInteger, freeBuffer BOOL) NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_InitWithCharactersNoCopy(o.Ptr(), unsafe.Pointer(characters), (C.NSUInteger)(length), (C.BOOL)(freeBuffer)) - return ret -} - -func (o NSString) LocalizedStandardCompare(string NSString) NSComparisonResult { - ret := (NSComparisonResult)(C.NSString_inst_LocalizedStandardCompare(o.Ptr(), string.Ptr())) - return ret -} - -func (o NSString) LocalizedCapitalizedString() NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_LocalizedCapitalizedString(o.Ptr()) - return ret -} - -func (o NSString) UppercaseString() NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_UppercaseString(o.Ptr()) - return ret -} - -func (o NSString) PropertyList() Id { - ret := Id{} - ret.ptr = C.NSString_inst_PropertyList(o.Ptr()) - return ret -} - -func (o NSString) LocalizedStandardRangeOfString(str NSString) NSRange { - ret := (NSRange)(C.NSString_inst_LocalizedStandardRangeOfString(o.Ptr(), str.Ptr())) - return ret -} - -func (o NSString) WriteToFile(path NSString, useAuxiliaryFile BOOL, enc NSStringEncoding, error *[]NSError) bool { - - goSlice4 := make([]unsafe.Pointer,cap(*error)) - for i := 0; i < len(*error); i++ { - goSlice4[i] = (*error)[i].Ptr() - } - ret := (C.NSString_inst_WriteToFile(o.Ptr(), path.Ptr(), (C.BOOL)(useAuxiliaryFile), (C.NSStringEncoding)(enc), unsafe.Pointer(&goSlice4[0]))) != 0 - (*error) = (*error)[:cap(*error)] - for i := 0; i < len(*error); i++ { - if goSlice4[i] == nil { - (*error) = (*error)[:i] - break - } - (*error)[i].ptr = goSlice4[i] - } - return ret -} - -func (o NSString) CharacterAtIndex(index NSUInteger) Unichar { - ret := (Unichar)(C.NSString_inst_CharacterAtIndex(o.Ptr(), (C.NSUInteger)(index))) - return ret -} - -func (o NSString) StringByDeletingPathExtension() NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_StringByDeletingPathExtension(o.Ptr()) - return ret -} - -func (o NSString) StringByTrimmingCharactersInSet(set NSCharacterSet) NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_StringByTrimmingCharactersInSet(o.Ptr(), set.Ptr()) - return ret -} - -func (o NSString) PrecomposedStringWithCompatibilityMapping() NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_PrecomposedStringWithCompatibilityMapping(o.Ptr()) - return ret -} - -func (o NSString) ComponentsSeparatedByString(separator NSString) NSArray { - ret := NSArray{} - ret.ptr = C.NSString_inst_ComponentsSeparatedByString(o.Ptr(), separator.Ptr()) - return ret -} - -func (o NSString) StringByDeletingLastPathComponent() NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_StringByDeletingLastPathComponent(o.Ptr()) - return ret -} - -func (o NSString) PrecomposedStringWithCanonicalMapping() NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_PrecomposedStringWithCanonicalMapping(o.Ptr()) - return ret -} - -func (o NSString) GetParagraphStart(startPtr *NSUInteger, parEndPtr *NSUInteger, contentsEndPtr *NSUInteger, range_ NSRange) { - C.NSString_inst_GetParagraphStart(o.Ptr(), unsafe.Pointer(startPtr), unsafe.Pointer(parEndPtr), unsafe.Pointer(contentsEndPtr), (C.NSRange)(range_)) -} - -func (o NSString) InitWithCoder(aDecoder NSCoder) NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_InitWithCoder(o.Ptr(), aDecoder.Ptr()) - return ret -} - -func (o NSString) LineRangeForRange(range_ NSRange) NSRange { - ret := (NSRange)(C.NSString_inst_LineRangeForRange(o.Ptr(), (C.NSRange)(range_))) - return ret -} - -func (o NSString) RangeOfComposedCharacterSequenceAtIndex(index NSUInteger) NSRange { - ret := (NSRange)(C.NSString_inst_RangeOfComposedCharacterSequenceAtIndex(o.Ptr(), (C.NSUInteger)(index))) - return ret -} - -func (o NSString) StringByAppendingPathComponent(str NSString) NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_StringByAppendingPathComponent(o.Ptr(), str.Ptr()) - return ret -} - -func (o NSString) WriteToURL(url NSURL, useAuxiliaryFile BOOL, enc NSStringEncoding, error *[]NSError) bool { - - goSlice4 := make([]unsafe.Pointer,cap(*error)) - for i := 0; i < len(*error); i++ { - goSlice4[i] = (*error)[i].Ptr() - } - ret := (C.NSString_inst_WriteToURL(o.Ptr(), url.Ptr(), (C.BOOL)(useAuxiliaryFile), (C.NSStringEncoding)(enc), unsafe.Pointer(&goSlice4[0]))) != 0 - (*error) = (*error)[:cap(*error)] - for i := 0; i < len(*error); i++ { - if goSlice4[i] == nil { - (*error) = (*error)[:i] - break - } - (*error)[i].ptr = goSlice4[i] - } - return ret -} - -func (o NSString) InitWithBytes(bytes unsafe.Pointer, len_ NSUInteger, encoding NSStringEncoding) NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_InitWithBytes(o.Ptr(), unsafe.Pointer(bytes), (C.NSUInteger)(len_), (C.NSStringEncoding)(encoding)) - return ret -} - -func (o NSString) DataUsingEncoding(encoding NSStringEncoding) NSData { - ret := NSData{} - ret.ptr = C.NSString_inst_DataUsingEncoding(o.Ptr(), (C.NSStringEncoding)(encoding)) - return ret -} - -func (o NSString) DataUsingEncodingAllowLossyConversion(encoding NSStringEncoding, lossy BOOL) NSData { - ret := NSData{} - ret.ptr = C.NSString_inst_DataUsingEncodingAllowLossyConversion(o.Ptr(), (C.NSStringEncoding)(encoding), (C.BOOL)(lossy)) - return ret -} - -func (o NSString) GetLineStart(startPtr *NSUInteger, lineEndPtr *NSUInteger, contentsEndPtr *NSUInteger, range_ NSRange) { - C.NSString_inst_GetLineStart(o.Ptr(), unsafe.Pointer(startPtr), unsafe.Pointer(lineEndPtr), unsafe.Pointer(contentsEndPtr), (C.NSRange)(range_)) -} - -func (o NSString) RangeOfCharacterFromSet(searchSet NSCharacterSet) NSRange { - ret := (NSRange)(C.NSString_inst_RangeOfCharacterFromSet(o.Ptr(), searchSet.Ptr())) - return ret -} - -func (o NSString) RangeOfCharacterFromSetOptions(searchSet NSCharacterSet, mask NSStringCompareOptions) NSRange { - ret := (NSRange)(C.NSString_inst_RangeOfCharacterFromSetOptions(o.Ptr(), searchSet.Ptr(), (C.NSStringCompareOptions)(mask))) - return ret -} - -func (o NSString) RangeOfCharacterFromSetOptionsRange(searchSet NSCharacterSet, mask NSStringCompareOptions, rangeOfReceiverToSearch NSRange) NSRange { - ret := (NSRange)(C.NSString_inst_RangeOfCharacterFromSetOptionsRange(o.Ptr(), searchSet.Ptr(), (C.NSStringCompareOptions)(mask), (C.NSRange)(rangeOfReceiverToSearch))) - return ret -} - -func (o NSString) LastPathComponent() NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_LastPathComponent(o.Ptr()) - return ret -} - -func (o NSString) StringByResolvingSymlinksInPath() NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_StringByResolvingSymlinksInPath(o.Ptr()) - return ret -} - -func (o NSString) PathExtension() NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_PathExtension(o.Ptr()) - return ret -} - -func (o NSString) Length() NSUInteger { - ret := (NSUInteger)(C.NSString_inst_Length(o.Ptr())) - return ret -} - -func (o NSString) StringByReplacingCharactersInRange(range_ NSRange, replacement NSString) NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_StringByReplacingCharactersInRange(o.Ptr(), (C.NSRange)(range_), replacement.Ptr()) - return ret -} - -func (o NSString) MaximumLengthOfBytesUsingEncoding(enc NSStringEncoding) NSUInteger { - ret := (NSUInteger)(C.NSString_inst_MaximumLengthOfBytesUsingEncoding(o.Ptr(), (C.NSStringEncoding)(enc))) - return ret -} - -func (o NSString) UppercaseStringWithLocale(locale NSLocale) NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_UppercaseStringWithLocale(o.Ptr(), locale.Ptr()) - return ret -} - -func (o NSString) HasPrefix(str NSString) bool { - ret := (C.NSString_inst_HasPrefix(o.Ptr(), str.Ptr())) != 0 - return ret -} - -func (o NSString) InitWithUTF8String(nullTerminatedCString *Char) NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_InitWithUTF8String(o.Ptr(), unsafe.Pointer(nullTerminatedCString)) - return ret -} - -func (o NSString) VariantFittingPresentationWidth(width NSInteger) NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_VariantFittingPresentationWidth(o.Ptr(), (C.NSInteger)(width)) - return ret -} - -func (o NSString) SubstringFromIndex(from NSUInteger) NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_SubstringFromIndex(o.Ptr(), (C.NSUInteger)(from)) - return ret -} - -func (o NSString) SubstringToIndex(to NSUInteger) NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_SubstringToIndex(o.Ptr(), (C.NSUInteger)(to)) - return ret -} - -func (o NSString) Compare(string NSString) NSComparisonResult { - ret := (NSComparisonResult)(C.NSString_inst_Compare(o.Ptr(), string.Ptr())) - return ret -} - -func (o NSString) CompareOptions(string NSString, mask NSStringCompareOptions) NSComparisonResult { - ret := (NSComparisonResult)(C.NSString_inst_CompareOptions(o.Ptr(), string.Ptr(), (C.NSStringCompareOptions)(mask))) - return ret -} - -func (o NSString) CompareOptionsRange(string NSString, mask NSStringCompareOptions, rangeOfReceiverToCompare NSRange) NSComparisonResult { - ret := (NSComparisonResult)(C.NSString_inst_CompareOptionsRange(o.Ptr(), string.Ptr(), (C.NSStringCompareOptions)(mask), (C.NSRange)(rangeOfReceiverToCompare))) - return ret -} - -func (o NSString) CompareOptionsRangeLocale(string NSString, mask NSStringCompareOptions, rangeOfReceiverToCompare NSRange, locale NSObject) NSComparisonResult { - ret := (NSComparisonResult)(C.NSString_inst_CompareOptionsRangeLocale(o.Ptr(), string.Ptr(), (C.NSStringCompareOptions)(mask), (C.NSRange)(rangeOfReceiverToCompare), locale.Ptr())) - return ret -} - -func (o NSString) IntegerValue() NSInteger { - ret := (NSInteger)(C.NSString_inst_IntegerValue(o.Ptr())) - return ret -} - -func (o NSString) StringByRemovingPercentEncoding() NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_StringByRemovingPercentEncoding(o.Ptr()) - return ret -} - -func (o NSString) InitWithCString(nullTerminatedCString *Char, encoding NSStringEncoding) NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_InitWithCString(o.Ptr(), unsafe.Pointer(nullTerminatedCString), (C.NSStringEncoding)(encoding)) - return ret -} - -func (o NSString) IsEqualToString(aString NSString) bool { - ret := (C.NSString_inst_IsEqualToString(o.Ptr(), aString.Ptr())) != 0 - return ret -} - -func (o NSString) LocalizedLowercaseString() NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_LocalizedLowercaseString(o.Ptr()) - return ret -} - -func (o NSString) StringByAbbreviatingWithTildeInPath() NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_StringByAbbreviatingWithTildeInPath(o.Ptr()) - return ret -} - -func (o NSString) StringByApplyingTransform(transform NSStringTransform, reverse BOOL) NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_StringByApplyingTransform(o.Ptr(), transform.Ptr(), (C.BOOL)(reverse)) - return ret -} - -func (o NSString) DecomposedStringWithCompatibilityMapping() NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_DecomposedStringWithCompatibilityMapping(o.Ptr()) - return ret -} - -func (o NSString) LocalizedCaseInsensitiveCompare(string NSString) NSComparisonResult { - ret := (NSComparisonResult)(C.NSString_inst_LocalizedCaseInsensitiveCompare(o.Ptr(), string.Ptr())) - return ret -} - -func (o NSString) FastestEncoding() NSStringEncoding { - ret := (NSStringEncoding)(C.NSString_inst_FastestEncoding(o.Ptr())) - return ret -} - -func (o NSString) CapitalizedStringWithLocale(locale NSLocale) NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_CapitalizedStringWithLocale(o.Ptr(), locale.Ptr()) - return ret -} - -func (o NSString) ContainsString(str NSString) bool { - ret := (C.NSString_inst_ContainsString(o.Ptr(), str.Ptr())) != 0 - return ret -} - -func (o NSString) InitWithString(aString NSString) NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_InitWithString(o.Ptr(), aString.Ptr()) - return ret -} - -func (o NSString) InitWithGoString(aString string) NSString { - aString_chr := CharWithGoString(aString) - defer aString_chr.Free() - return o.InitWithString(NSStringWithUTF8String(aString_chr)) -} - -func (o NSString) BoolValue() bool { - ret := (C.NSString_inst_BoolValue(o.Ptr())) != 0 - return ret -} - -func (o NSString) SmallestEncoding() NSStringEncoding { - ret := (NSStringEncoding)(C.NSString_inst_SmallestEncoding(o.Ptr())) - return ret -} - -func (o NSString) LocalizedCompare(string NSString) NSComparisonResult { - ret := (NSComparisonResult)(C.NSString_inst_LocalizedCompare(o.Ptr(), string.Ptr())) - return ret -} - -func (o NSString) CStringUsingEncoding(encoding NSStringEncoding) *Char { - ret := (*Char)(unsafe.Pointer(C.NSString_inst_CStringUsingEncoding(o.Ptr(), (C.NSStringEncoding)(encoding)))) - return ret -} - -func (o NSString) LocalizedStandardContainsString(str NSString) bool { - ret := (C.NSString_inst_LocalizedStandardContainsString(o.Ptr(), str.Ptr())) != 0 - return ret -} - -func (o NSString) StringByAppendingPathExtension(str NSString) NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_StringByAppendingPathExtension(o.Ptr(), str.Ptr()) - return ret -} - -func (o NSString) InitWithBytesNoCopy(bytes unsafe.Pointer, len_ NSUInteger, encoding NSStringEncoding, freeBuffer BOOL) NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_InitWithBytesNoCopy(o.Ptr(), unsafe.Pointer(bytes), (C.NSUInteger)(len_), (C.NSStringEncoding)(encoding), (C.BOOL)(freeBuffer)) - return ret -} - -func (o NSString) PathComponents() NSArray { - ret := NSArray{} - ret.ptr = C.NSString_inst_PathComponents(o.Ptr()) - return ret -} - -func (o NSString) DoubleValue() Double { - ret := (Double)(C.NSString_inst_DoubleValue(o.Ptr())) - return ret -} - func (o NSString) InitWithContentsOfFileEncoding(path NSString, enc NSStringEncoding, error *[]NSError) NSString { goSlice3 := make([]unsafe.Pointer,cap(*error)) @@ -4204,86 +4179,42 @@ func (o NSString) InitWithContentsOfFileUsedEncoding(path NSString, enc *NSStrin return ret } -func (o NSString) GetCString(buffer *Char, maxBufferCount NSUInteger, encoding NSStringEncoding) bool { - ret := (C.NSString_inst_GetCString(o.Ptr(), unsafe.Pointer(buffer), (C.NSUInteger)(maxBufferCount), (C.NSStringEncoding)(encoding))) != 0 +func (o NSString) MaximumLengthOfBytesUsingEncoding(enc NSStringEncoding) NSUInteger { + ret := (NSUInteger)(C.NSString_inst_MaximumLengthOfBytesUsingEncoding(o.Ptr(), (C.NSStringEncoding)(enc))) return ret } -func (o NSString) StringByAppendingString(aString NSString) NSString { +func (o NSString) DecomposedStringWithCanonicalMapping() NSString { ret := NSString{} - ret.ptr = C.NSString_inst_StringByAppendingString(o.Ptr(), aString.Ptr()) + ret.ptr = C.NSString_inst_DecomposedStringWithCanonicalMapping(o.Ptr()) return ret } +func (o NSString) GetCharacters(buffer *Unichar) { + C.NSString_inst_GetCharacters(o.Ptr(), unsafe.Pointer(buffer)) +} + +func (o NSString) GetCharactersRange(buffer *Unichar, range_ NSRange) { + C.NSString_inst_GetCharactersRange(o.Ptr(), unsafe.Pointer(buffer), (C.NSRange)(range_)) +} + func (o NSString) GetBytes(buffer unsafe.Pointer, maxBufferCount NSUInteger, usedBufferCount *NSUInteger, encoding NSStringEncoding, options NSStringEncodingConversionOptions, range_ NSRange, leftover NSRangePointer) bool { ret := (C.NSString_inst_GetBytes(o.Ptr(), unsafe.Pointer(buffer), (C.NSUInteger)(maxBufferCount), unsafe.Pointer(usedBufferCount), (C.NSStringEncoding)(encoding), (C.NSStringEncodingConversionOptions)(options), (C.NSRange)(range_), unsafe.Pointer(leftover))) != 0 return ret } -func (o NSString) Init() NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_Init(o.Ptr()) +func (o NSString) RangeOfCharacterFromSet(searchSet NSCharacterSet) NSRange { + ret := (NSRange)(C.NSString_inst_RangeOfCharacterFromSet(o.Ptr(), searchSet.Ptr())) return ret } -func (o NSString) InitWithData(data NSData, encoding NSStringEncoding) NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_InitWithData(o.Ptr(), data.Ptr(), (C.NSStringEncoding)(encoding)) +func (o NSString) RangeOfCharacterFromSetOptions(searchSet NSCharacterSet, mask NSStringCompareOptions) NSRange { + ret := (NSRange)(C.NSString_inst_RangeOfCharacterFromSetOptions(o.Ptr(), searchSet.Ptr(), (C.NSStringCompareOptions)(mask))) return ret } -func (o NSString) CaseInsensitiveCompare(string NSString) NSComparisonResult { - ret := (NSComparisonResult)(C.NSString_inst_CaseInsensitiveCompare(o.Ptr(), string.Ptr())) - return ret -} - -func (o NSString) GetFileSystemRepresentation(cname *Char, max NSUInteger) bool { - ret := (C.NSString_inst_GetFileSystemRepresentation(o.Ptr(), unsafe.Pointer(cname), (C.NSUInteger)(max))) != 0 - return ret -} - -func (o NSString) LowercaseString() NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_LowercaseString(o.Ptr()) - return ret -} - -func (o NSString) StringByPaddingToLength(newLength NSUInteger, padString NSString, padIndex NSUInteger) NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_StringByPaddingToLength(o.Ptr(), (C.NSUInteger)(newLength), padString.Ptr(), (C.NSUInteger)(padIndex)) - return ret -} - -func (o NSString) StringByReplacingOccurrencesOfStringWithString(target NSString, replacement NSString) NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_StringByReplacingOccurrencesOfStringWithString(o.Ptr(), target.Ptr(), replacement.Ptr()) - return ret -} - -func (o NSString) StringByReplacingOccurrencesOfStringWithStringOptions(target NSString, replacement NSString, options NSStringCompareOptions, searchRange NSRange) NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_StringByReplacingOccurrencesOfStringWithStringOptions(o.Ptr(), target.Ptr(), replacement.Ptr(), (C.NSStringCompareOptions)(options), (C.NSRange)(searchRange)) - return ret -} - -func (o NSString) IntValue() Int { - ret := (Int)(C.NSString_inst_IntValue(o.Ptr())) - return ret -} - -func (o NSString) CanBeConvertedToEncoding(encoding NSStringEncoding) bool { - ret := (C.NSString_inst_CanBeConvertedToEncoding(o.Ptr(), (C.NSStringEncoding)(encoding))) != 0 - return ret -} - -func (o NSString) StringByAddingPercentEncodingWithAllowedCharacters(allowedCharacters NSCharacterSet) NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_StringByAddingPercentEncodingWithAllowedCharacters(o.Ptr(), allowedCharacters.Ptr()) - return ret -} - -func (o NSString) UTF8String() *Char { - ret := (*Char)(unsafe.Pointer(C.NSString_inst_UTF8String(o.Ptr()))) +func (o NSString) RangeOfCharacterFromSetOptionsRange(searchSet NSCharacterSet, mask NSStringCompareOptions, rangeOfReceiverToSearch NSRange) NSRange { + ret := (NSRange)(C.NSString_inst_RangeOfCharacterFromSetOptionsRange(o.Ptr(), searchSet.Ptr(), (C.NSStringCompareOptions)(mask), (C.NSRange)(rangeOfReceiverToSearch))) return ret } @@ -4292,6 +4223,29 @@ func (o NSString) ParagraphRangeForRange(range_ NSRange) NSRange { return ret } +func (o NSString) ComponentsSeparatedByString(separator NSString) NSArray { + ret := NSArray{} + ret.ptr = C.NSString_inst_ComponentsSeparatedByString(o.Ptr(), separator.Ptr()) + return ret +} + +func (o NSString) InitWithCoder(aDecoder NSCoder) NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_InitWithCoder(o.Ptr(), aDecoder.Ptr()) + return ret +} + +func (o NSString) StringByAppendingPathExtension(str NSString) NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_StringByAppendingPathExtension(o.Ptr(), str.Ptr()) + return ret +} + +func (o NSString) LocalizedCaseInsensitiveContainsString(str NSString) bool { + ret := (C.NSString_inst_LocalizedCaseInsensitiveContainsString(o.Ptr(), str.Ptr())) != 0 + return ret +} + func (o NSString) LinguisticTagsInRange(range_ NSRange, scheme NSLinguisticTagScheme, options NSLinguisticTaggerOptions, orthography NSOrthography, tokenRanges *[]NSArray) NSArray { goSlice5 := make([]unsafe.Pointer,cap(*tokenRanges)) @@ -4311,14 +4265,71 @@ func (o NSString) LinguisticTagsInRange(range_ NSRange, scheme NSLinguisticTagSc return ret } -func (o NSString) Description() NSString { - ret := NSString{} - ret.ptr = C.NSString_inst_Description(o.Ptr()) +func (o NSString) LocalizedStandardRangeOfString(str NSString) NSRange { + ret := (NSRange)(C.NSString_inst_LocalizedStandardRangeOfString(o.Ptr(), str.Ptr())) return ret } -func (o NSString) FloatValue() Float { - ret := (Float)(C.NSString_inst_FloatValue(o.Ptr())) +func (o NSString) UTF8String() *Char { + ret := (*Char)(unsafe.Pointer(C.NSString_inst_UTF8String(o.Ptr()))) + return ret +} + +func (o NSString) SubstringToIndex(to NSUInteger) NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_SubstringToIndex(o.Ptr(), (C.NSUInteger)(to)) + return ret +} + +func (o NSString) HasSuffix(str NSString) bool { + ret := (C.NSString_inst_HasSuffix(o.Ptr(), str.Ptr())) != 0 + return ret +} + +func (o NSString) PathComponents() NSArray { + ret := NSArray{} + ret.ptr = C.NSString_inst_PathComponents(o.Ptr()) + return ret +} + +func (o NSString) DecomposedStringWithCompatibilityMapping() NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_DecomposedStringWithCompatibilityMapping(o.Ptr()) + return ret +} + +func (o NSString) PropertyList() Id { + ret := Id{} + ret.ptr = C.NSString_inst_PropertyList(o.Ptr()) + return ret +} + +func (o NSString) StringByRemovingPercentEncoding() NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_StringByRemovingPercentEncoding(o.Ptr()) + return ret +} + +func (o NSString) WriteToURL(url NSURL, useAuxiliaryFile BOOL, enc NSStringEncoding, error *[]NSError) bool { + + goSlice4 := make([]unsafe.Pointer,cap(*error)) + for i := 0; i < len(*error); i++ { + goSlice4[i] = (*error)[i].Ptr() + } + ret := (C.NSString_inst_WriteToURL(o.Ptr(), url.Ptr(), (C.BOOL)(useAuxiliaryFile), (C.NSStringEncoding)(enc), unsafe.Pointer(&goSlice4[0]))) != 0 + (*error) = (*error)[:cap(*error)] + for i := 0; i < len(*error); i++ { + if goSlice4[i] == nil { + (*error) = (*error)[:i] + break + } + (*error)[i].ptr = goSlice4[i] + } + return ret +} + +func (o NSString) LineRangeForRange(range_ NSRange) NSRange { + ret := (NSRange)(C.NSString_inst_LineRangeForRange(o.Ptr(), (C.NSRange)(range_))) return ret } @@ -4328,33 +4339,57 @@ func (o NSString) LocalizedUppercaseString() NSString { return ret } -func (o NSString) LongLongValue() LongLong { - ret := (LongLong)(C.NSString_inst_LongLongValue(o.Ptr())) +func (o NSString) FloatValue() Float { + ret := (Float)(C.NSString_inst_FloatValue(o.Ptr())) return ret } -func (o NSString) IsAbsolutePath() bool { - ret := (C.NSString_inst_IsAbsolutePath(o.Ptr())) != 0 +func (o NSString) UppercaseString() NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_UppercaseString(o.Ptr()) return ret } -func (o NSString) RangeOfString(searchString NSString) NSRange { - ret := (NSRange)(C.NSString_inst_RangeOfString(o.Ptr(), searchString.Ptr())) +func (o NSString) Compare(string NSString) NSComparisonResult { + ret := (NSComparisonResult)(C.NSString_inst_Compare(o.Ptr(), string.Ptr())) return ret } -func (o NSString) RangeOfStringOptions(searchString NSString, mask NSStringCompareOptions) NSRange { - ret := (NSRange)(C.NSString_inst_RangeOfStringOptions(o.Ptr(), searchString.Ptr(), (C.NSStringCompareOptions)(mask))) +func (o NSString) CompareOptions(string NSString, mask NSStringCompareOptions) NSComparisonResult { + ret := (NSComparisonResult)(C.NSString_inst_CompareOptions(o.Ptr(), string.Ptr(), (C.NSStringCompareOptions)(mask))) return ret } -func (o NSString) RangeOfStringOptionsRange(searchString NSString, mask NSStringCompareOptions, rangeOfReceiverToSearch NSRange) NSRange { - ret := (NSRange)(C.NSString_inst_RangeOfStringOptionsRange(o.Ptr(), searchString.Ptr(), (C.NSStringCompareOptions)(mask), (C.NSRange)(rangeOfReceiverToSearch))) +func (o NSString) CompareOptionsRange(string NSString, mask NSStringCompareOptions, rangeOfReceiverToCompare NSRange) NSComparisonResult { + ret := (NSComparisonResult)(C.NSString_inst_CompareOptionsRange(o.Ptr(), string.Ptr(), (C.NSStringCompareOptions)(mask), (C.NSRange)(rangeOfReceiverToCompare))) return ret } -func (o NSString) RangeOfStringOptionsRangeLocale(searchString NSString, mask NSStringCompareOptions, rangeOfReceiverToSearch NSRange, locale NSLocale) NSRange { - ret := (NSRange)(C.NSString_inst_RangeOfStringOptionsRangeLocale(o.Ptr(), searchString.Ptr(), (C.NSStringCompareOptions)(mask), (C.NSRange)(rangeOfReceiverToSearch), locale.Ptr())) +func (o NSString) CompareOptionsRangeLocale(string NSString, mask NSStringCompareOptions, rangeOfReceiverToCompare NSRange, locale NSObject) NSComparisonResult { + ret := (NSComparisonResult)(C.NSString_inst_CompareOptionsRangeLocale(o.Ptr(), string.Ptr(), (C.NSStringCompareOptions)(mask), (C.NSRange)(rangeOfReceiverToCompare), locale.Ptr())) + return ret +} + +func (o NSString) UppercaseStringWithLocale(locale NSLocale) NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_UppercaseStringWithLocale(o.Ptr(), locale.Ptr()) + return ret +} + +func (o NSString) PathExtension() NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_PathExtension(o.Ptr()) + return ret +} + +func (o NSString) FastestEncoding() NSStringEncoding { + ret := (NSStringEncoding)(C.NSString_inst_FastestEncoding(o.Ptr())) + return ret +} + +func (o NSString) StringByTrimmingCharactersInSet(set NSCharacterSet) NSString { + ret := NSString{} + ret.ptr = C.NSString_inst_StringByTrimmingCharactersInSet(o.Ptr(), set.Ptr()) return ret } @@ -4422,21 +4457,13 @@ func (o NSString) WritableTypeIdentifiersForItemProvider() NSArray { return ret } -func NSObjectDescription() NSString { - ret := NSString{} - ret.ptr = C.NSObject_Description() +func NSObjectSuperclass() Class { + ret := (Class)(unsafe.Pointer(C.NSObject_Superclass())) return ret } -func NSObjectCopyWithZone(zone *_NSZone) Id { - ret := Id{} - ret.ptr = C.NSObject_CopyWithZone(unsafe.Pointer(zone)) - return ret -} - -func NSObjectMutableCopyWithZone(zone *_NSZone) Id { - ret := Id{} - ret.ptr = C.NSObject_MutableCopyWithZone(unsafe.Pointer(zone)) +func NSObjectResolveInstanceMethod(sel SEL) bool { + ret := (C.NSObject_ResolveInstanceMethod(unsafe.Pointer(sel))) != 0 return ret } @@ -4448,14 +4475,22 @@ func NSObjectCancelPreviousPerformRequestsWithTargetSelector(aTarget NSObject, a C.NSObject_CancelPreviousPerformRequestsWithTargetSelector(aTarget.Ptr(), unsafe.Pointer(aSelector), anArgument.Ptr()) } +func NSObjectInstancesRespondToSelector(aSelector SEL) bool { + ret := (C.NSObject_InstancesRespondToSelector(unsafe.Pointer(aSelector))) != 0 + return ret +} + func NSObjectHash() NSUInteger { ret := (NSUInteger)(C.NSObject_Hash()) return ret } -func NSObjectAllocWithZone(zone *_NSZone) Id { +func NSObjectAlloc() Id { ret := Id{} - ret.ptr = C.NSObject_AllocWithZone(unsafe.Pointer(zone)) + ret.ptr = C.NSObject_Alloc() + runtime.SetFinalizer(&ret, func(o *Id) { + o.Release() + }) return ret } @@ -4465,13 +4500,14 @@ func NSObjectDebugDescription() NSString { return ret } -func NSObjectIsSubclassOfClass(aClass Class) bool { - ret := (C.NSObject_IsSubclassOfClass(unsafe.Pointer(aClass))) != 0 +func NSObjectInstanceMethodSignatureForSelector(aSelector SEL) NSMethodSignature { + ret := NSMethodSignature{} + ret.ptr = C.NSObject_InstanceMethodSignatureForSelector(unsafe.Pointer(aSelector)) return ret } -func NSObjectInstancesRespondToSelector(aSelector SEL) bool { - ret := (C.NSObject_InstancesRespondToSelector(unsafe.Pointer(aSelector))) != 0 +func NSObjectConformsToProtocol(protocol Protocol) bool { + ret := (C.NSObject_ConformsToProtocol(protocol.Ptr())) != 0 return ret } @@ -4481,14 +4517,13 @@ func NSObjectKeyPathsForValuesAffectingValueForKey(key NSString) NSSet { return ret } -func NSObjectResolveClassMethod(sel SEL) bool { - ret := (C.NSObject_ResolveClassMethod(unsafe.Pointer(sel))) != 0 +func NSObjectVersion() NSInteger { + ret := (NSInteger)(C.NSObject_Version()) return ret } -func NSObjectAlloc() Id { - ret := Id{} - ret.ptr = C.NSObject_Alloc() +func NSObjectAutomaticallyNotifiesObserversForKey(key NSString) bool { + ret := (C.NSObject_AutomaticallyNotifiesObserversForKey(key.Ptr())) != 0 return ret } @@ -4498,8 +4533,33 @@ func NSObjectClassFallbacksForKeyedArchiver() NSArray { return ret } -func NSObjectClassForKeyedUnarchiver() Class { - ret := (Class)(unsafe.Pointer(C.NSObject_ClassForKeyedUnarchiver())) +func NSObjectIsSubclassOfClass(aClass Class) bool { + ret := (C.NSObject_IsSubclassOfClass(unsafe.Pointer(aClass))) != 0 + return ret +} + +func NSObjectDescription() NSString { + ret := NSString{} + ret.ptr = C.NSObject_Description() + return ret +} + +func NSObjectAccessInstanceVariablesDirectly() bool { + ret := (C.NSObject_AccessInstanceVariablesDirectly()) != 0 + return ret +} + +func NSObjectResolveClassMethod(sel SEL) bool { + ret := (C.NSObject_ResolveClassMethod(unsafe.Pointer(sel))) != 0 + return ret +} + +func NSObjectAllocWithZone(zone *_NSZone) Id { + ret := Id{} + ret.ptr = C.NSObject_AllocWithZone(unsafe.Pointer(zone)) + runtime.SetFinalizer(&ret, func(o *Id) { + o.Release() + }) return ret } @@ -4507,29 +4567,20 @@ func NSObjectSetVersion(aVersion NSInteger) { C.NSObject_SetVersion((C.NSInteger)(aVersion)) } -func NSObjectVersion() NSInteger { - ret := (NSInteger)(C.NSObject_Version()) +func NSObjectMutableCopyWithZone(zone *_NSZone) Id { + ret := Id{} + ret.ptr = C.NSObject_MutableCopyWithZone(unsafe.Pointer(zone)) return ret } -func NSObjectConformsToProtocol(protocol Protocol) bool { - ret := (C.NSObject_ConformsToProtocol(protocol.Ptr())) != 0 +func NSObjectCopyWithZone(zone *_NSZone) Id { + ret := Id{} + ret.ptr = C.NSObject_CopyWithZone(unsafe.Pointer(zone)) return ret } -func NSObjectInstanceMethodSignatureForSelector(aSelector SEL) NSMethodSignature { - ret := NSMethodSignature{} - ret.ptr = C.NSObject_InstanceMethodSignatureForSelector(unsafe.Pointer(aSelector)) - return ret -} - -func NSObjectSuperclass() Class { - ret := (Class)(unsafe.Pointer(C.NSObject_Superclass())) - return ret -} - -func NSObjectAutomaticallyNotifiesObserversForKey(key NSString) bool { - ret := (C.NSObject_AutomaticallyNotifiesObserversForKey(key.Ptr())) != 0 +func NSObjectClassForKeyedUnarchiver() Class { + ret := (Class)(unsafe.Pointer(C.NSObject_ClassForKeyedUnarchiver())) return ret } @@ -4537,8 +4588,8 @@ func NSObjectLoad() { C.NSObject_Load() } -func NSObjectAccessInstanceVariablesDirectly() bool { - ret := (C.NSObject_AccessInstanceVariablesDirectly()) != 0 +func NSObjectClass() Class { + ret := (Class)(unsafe.Pointer(C.NSObject_Class())) return ret } @@ -4548,13 +4599,58 @@ func NSObjectNew() Id { return ret } -func NSObjectResolveInstanceMethod(sel SEL) bool { - ret := (C.NSObject_ResolveInstanceMethod(unsafe.Pointer(sel))) != 0 +func (o Id) IndicesOfObjectsByEvaluatingObjectSpecifier(specifier NSScriptObjectSpecifier) NSArray { + ret := NSArray{} + ret.ptr = C.NSObject_inst_IndicesOfObjectsByEvaluatingObjectSpecifier(o.Ptr(), specifier.Ptr()) return ret } -func NSObjectClass() Class { - ret := (Class)(unsafe.Pointer(C.NSObject_Class())) +func (o Id) MutableSetValueForKey(key NSString) NSMutableSet { + ret := NSMutableSet{} + ret.ptr = C.NSObject_inst_MutableSetValueForKey(o.Ptr(), key.Ptr()) + return ret +} + +func (o Id) DoesNotRecognizeSelector(aSelector SEL) { + C.NSObject_inst_DoesNotRecognizeSelector(o.Ptr(), unsafe.Pointer(aSelector)) +} + +func (o Id) DictionaryWithValuesForKeys(keys NSArray) NSDictionary { + ret := NSDictionary{} + ret.ptr = C.NSObject_inst_DictionaryWithValuesForKeys(o.Ptr(), keys.Ptr()) + return ret +} + +func (o Id) ReplaceValueAtIndex(index NSUInteger, key NSString, value NSObject) { + C.NSObject_inst_ReplaceValueAtIndex(o.Ptr(), (C.NSUInteger)(index), key.Ptr(), value.Ptr()) +} + +func (o Id) ValueWithName(name NSString, key NSString) Id { + ret := Id{} + ret.ptr = C.NSObject_inst_ValueWithName(o.Ptr(), name.Ptr(), key.Ptr()) + return ret +} + +func (o Id) ValueForKeyPath(keyPath NSString) Id { + ret := Id{} + ret.ptr = C.NSObject_inst_ValueForKeyPath(o.Ptr(), keyPath.Ptr()) + return ret +} + +func (o Id) PerformSelectorOnMainThreadWithObject(aSelector SEL, arg NSObject, wait BOOL) { + C.NSObject_inst_PerformSelectorOnMainThreadWithObject(o.Ptr(), unsafe.Pointer(aSelector), arg.Ptr(), (C.BOOL)(wait)) +} + +func (o Id) PerformSelectorOnMainThreadWithObjectWaitUntilDone(aSelector SEL, arg NSObject, wait BOOL, array NSArray) { + C.NSObject_inst_PerformSelectorOnMainThreadWithObjectWaitUntilDone(o.Ptr(), unsafe.Pointer(aSelector), arg.Ptr(), (C.BOOL)(wait), array.Ptr()) +} + +func (o Id) SetValuesForKeysWithDictionary(keyedValues NSDictionary) { + C.NSObject_inst_SetValuesForKeysWithDictionary(o.Ptr(), keyedValues.Ptr()) +} + +func (o Id) ScriptingContains(object NSObject) bool { + ret := (C.NSObject_inst_ScriptingContains(o.Ptr(), object.Ptr())) != 0 return ret } @@ -4569,36 +4665,42 @@ func (o Id) IsLessThanOrEqualTo(object NSObject) bool { return ret } -func (o Id) MutableCopy() Id { - ret := Id{} - ret.ptr = C.NSObject_inst_MutableCopy(o.Ptr()) +func (o Id) WillChangeValueForKey(key NSString) { + C.NSObject_inst_WillChangeValueForKey(o.Ptr(), key.Ptr()) +} + +func (o Id) WillChangeValueForKeyWithSetMutation(key NSString, mutationKind NSKeyValueSetMutationKind, objects NSSet) { + C.NSObject_inst_WillChangeValueForKeyWithSetMutation(o.Ptr(), key.Ptr(), (C.NSKeyValueSetMutationKind)(mutationKind), objects.Ptr()) +} + +func (o Id) ClassName() NSString { + ret := NSString{} + ret.ptr = C.NSObject_inst_ClassName(o.Ptr()) return ret } -func (o Id) DoesNotRecognizeSelector(aSelector SEL) { - C.NSObject_inst_DoesNotRecognizeSelector(o.Ptr(), unsafe.Pointer(aSelector)) +func (o Id) SetObservationInfo(observationInfo unsafe.Pointer) { + C.NSObject_inst_SetObservationInfo(o.Ptr(), unsafe.Pointer(observationInfo)) } -func (o Id) DictionaryWithValuesForKeys(keys NSArray) NSDictionary { - ret := NSDictionary{} - ret.ptr = C.NSObject_inst_DictionaryWithValuesForKeys(o.Ptr(), keys.Ptr()) +func (o Id) Dealloc() { + C.NSObject_inst_Dealloc(o.Ptr()) +} + +func (o Id) AddObserver(observer NSObject, keyPath NSString, options NSKeyValueObservingOptions, context unsafe.Pointer) { + C.NSObject_inst_AddObserver(o.Ptr(), observer.Ptr(), keyPath.Ptr(), (C.NSKeyValueObservingOptions)(options), unsafe.Pointer(context)) +} + +func (o Id) IsGreaterThanOrEqualTo(object NSObject) bool { + ret := (C.NSObject_inst_IsGreaterThanOrEqualTo(o.Ptr(), object.Ptr())) != 0 return ret } -func (o Id) ObservationInfo() unsafe.Pointer { - ret := (unsafe.Pointer)(unsafe.Pointer(C.NSObject_inst_ObservationInfo(o.Ptr()))) +func (o Id) ScriptingBeginsWith(object NSObject) bool { + ret := (C.NSObject_inst_ScriptingBeginsWith(o.Ptr(), object.Ptr())) != 0 return ret } -func (o Id) AttemptRecoveryFromErrorOptionIndex(error NSError, recoveryOptionIndex NSUInteger) bool { - ret := (C.NSObject_inst_AttemptRecoveryFromErrorOptionIndex(o.Ptr(), error.Ptr(), (C.NSUInteger)(recoveryOptionIndex))) != 0 - return ret -} - -func (o Id) AttemptRecoveryFromErrorOptionIndexDelegate(error NSError, recoveryOptionIndex NSUInteger, delegate NSObject, didRecoverSelector SEL, contextInfo unsafe.Pointer) { - C.NSObject_inst_AttemptRecoveryFromErrorOptionIndexDelegate(o.Ptr(), error.Ptr(), (C.NSUInteger)(recoveryOptionIndex), delegate.Ptr(), unsafe.Pointer(didRecoverSelector), unsafe.Pointer(contextInfo)) -} - func (o Id) InsertValueInPropertyWithKey(value NSObject, key NSString) { C.NSObject_inst_InsertValueInPropertyWithKey(o.Ptr(), value.Ptr(), key.Ptr()) } @@ -4607,34 +4709,68 @@ func (o Id) InsertValueAtIndex(value NSObject, index NSUInteger, key NSString) C.NSObject_inst_InsertValueAtIndex(o.Ptr(), value.Ptr(), (C.NSUInteger)(index), key.Ptr()) } -func (o Id) WillChange(changeKind NSKeyValueChange, indexes NSIndexSet, key NSString) { - C.NSObject_inst_WillChange(o.Ptr(), (C.NSKeyValueChange)(changeKind), indexes.Ptr(), key.Ptr()) -} - -func (o Id) MutableSetValueForKeyPath(keyPath NSString) NSMutableSet { - ret := NSMutableSet{} - ret.ptr = C.NSObject_inst_MutableSetValueForKeyPath(o.Ptr(), keyPath.Ptr()) +func (o Id) IsLessThan(object NSObject) bool { + ret := (C.NSObject_inst_IsLessThan(o.Ptr(), object.Ptr())) != 0 return ret } -func (o Id) ObserveValueForKeyPath(keyPath NSString, object NSObject, change NSDictionary, context unsafe.Pointer) { - C.NSObject_inst_ObserveValueForKeyPath(o.Ptr(), keyPath.Ptr(), object.Ptr(), change.Ptr(), unsafe.Pointer(context)) -} - -func (o Id) ScriptingBeginsWith(object NSObject) bool { - ret := (C.NSObject_inst_ScriptingBeginsWith(o.Ptr(), object.Ptr())) != 0 +func (o Id) IsEqualTo(object NSObject) bool { + ret := (C.NSObject_inst_IsEqualTo(o.Ptr(), object.Ptr())) != 0 return ret } -func (o Id) MutableArrayValueForKeyPath(keyPath NSString) NSMutableArray { - ret := NSMutableArray{} - ret.ptr = C.NSObject_inst_MutableArrayValueForKeyPath(o.Ptr(), keyPath.Ptr()) +func (o Id) ValueForUndefinedKey(key NSString) Id { + ret := Id{} + ret.ptr = C.NSObject_inst_ValueForUndefinedKey(o.Ptr(), key.Ptr()) return ret } -func (o Id) AttributeKeys() NSArray { - ret := NSArray{} - ret.ptr = C.NSObject_inst_AttributeKeys(o.Ptr()) +func (o Id) NewScriptingObjectOfClass(objectClass Class, key NSString, contentsValue NSObject, properties NSDictionary) Id { + ret := Id{} + ret.ptr = C.NSObject_inst_NewScriptingObjectOfClass(o.Ptr(), unsafe.Pointer(objectClass), key.Ptr(), contentsValue.Ptr(), properties.Ptr()) + return ret +} + +func (o Id) CopyScriptingValue(value NSObject, key NSString, properties NSDictionary) Id { + ret := Id{} + ret.ptr = C.NSObject_inst_CopyScriptingValue(o.Ptr(), value.Ptr(), key.Ptr(), properties.Ptr()) + return ret +} + +func (o Id) ValueAtIndex(index NSUInteger, key NSString) Id { + ret := Id{} + ret.ptr = C.NSObject_inst_ValueAtIndex(o.Ptr(), (C.NSUInteger)(index), key.Ptr()) + return ret +} + +func (o Id) InverseForRelationshipKey(relationshipKey NSString) NSString { + ret := NSString{} + ret.ptr = C.NSObject_inst_InverseForRelationshipKey(o.Ptr(), relationshipKey.Ptr()) + return ret +} + +func (o Id) MethodSignatureForSelector(aSelector SEL) NSMethodSignature { + ret := NSMethodSignature{} + ret.ptr = C.NSObject_inst_MethodSignatureForSelector(o.Ptr(), unsafe.Pointer(aSelector)) + return ret +} + +func (o Id) SetNilValueForKey(key NSString) { + C.NSObject_inst_SetNilValueForKey(o.Ptr(), key.Ptr()) +} + +func (o Id) ForwardInvocation(anInvocation NSInvocation) { + C.NSObject_inst_ForwardInvocation(o.Ptr(), anInvocation.Ptr()) +} + +func (o Id) ScriptingIsLessThanOrEqualTo(object NSObject) bool { + ret := (C.NSObject_inst_ScriptingIsLessThanOrEqualTo(o.Ptr(), object.Ptr())) != 0 + return ret +} + +func (o Id) MutableCopy() Id { + ret := Id{} + ret.ptr = C.NSObject_inst_MutableCopy(o.Ptr()) return ret } @@ -4650,15 +4786,112 @@ func (o Id) SetValueForUndefinedKey(value NSObject, key NSString) { C.NSObject_inst_SetValueForUndefinedKey(o.Ptr(), value.Ptr(), key.Ptr()) } -func (o Id) ValueForKeyPath(keyPath NSString) Id { - ret := Id{} - ret.ptr = C.NSObject_inst_ValueForKeyPath(o.Ptr(), keyPath.Ptr()) +func (o Id) AttributeKeys() NSArray { + ret := NSArray{} + ret.ptr = C.NSObject_inst_AttributeKeys(o.Ptr()) return ret } -func (o Id) CoerceValue(value NSObject, key NSString) Id { +func (o Id) DidChange(changeKind NSKeyValueChange, indexes NSIndexSet, key NSString) { + C.NSObject_inst_DidChange(o.Ptr(), (C.NSKeyValueChange)(changeKind), indexes.Ptr(), key.Ptr()) +} + +func (o Id) ScriptingIsLessThan(object NSObject) bool { + ret := (C.NSObject_inst_ScriptingIsLessThan(o.Ptr(), object.Ptr())) != 0 + return ret +} + +func (o Id) ScriptingIsGreaterThanOrEqualTo(object NSObject) bool { + ret := (C.NSObject_inst_ScriptingIsGreaterThanOrEqualTo(o.Ptr(), object.Ptr())) != 0 + return ret +} + +func (o Id) WillChange(changeKind NSKeyValueChange, indexes NSIndexSet, key NSString) { + C.NSObject_inst_WillChange(o.Ptr(), (C.NSKeyValueChange)(changeKind), indexes.Ptr(), key.Ptr()) +} + +func (o Id) IsCaseInsensitiveLike(object NSString) bool { + ret := (C.NSObject_inst_IsCaseInsensitiveLike(o.Ptr(), object.Ptr())) != 0 + return ret +} + +func (o Id) DoesContain(object NSObject) bool { + ret := (C.NSObject_inst_DoesContain(o.Ptr(), object.Ptr())) != 0 + return ret +} + +func (o Id) MutableSetValueForKeyPath(keyPath NSString) NSMutableSet { + ret := NSMutableSet{} + ret.ptr = C.NSObject_inst_MutableSetValueForKeyPath(o.Ptr(), keyPath.Ptr()) + return ret +} + +func (o Id) ClassDescription() NSClassDescription { + ret := NSClassDescription{} + ret.ptr = C.NSObject_inst_ClassDescription(o.Ptr()) + return ret +} + +func (o Id) ValueWithUniqueID(uniqueID NSObject, key NSString) Id { ret := Id{} - ret.ptr = C.NSObject_inst_CoerceValue(o.Ptr(), value.Ptr(), key.Ptr()) + ret.ptr = C.NSObject_inst_ValueWithUniqueID(o.Ptr(), uniqueID.Ptr(), key.Ptr()) + return ret +} + +func (o Id) MutableOrderedSetValueForKey(key NSString) NSMutableOrderedSet { + ret := NSMutableOrderedSet{} + ret.ptr = C.NSObject_inst_MutableOrderedSetValueForKey(o.Ptr(), key.Ptr()) + return ret +} + +func (o Id) MutableArrayValueForKeyPath(keyPath NSString) NSMutableArray { + ret := NSMutableArray{} + ret.ptr = C.NSObject_inst_MutableArrayValueForKeyPath(o.Ptr(), keyPath.Ptr()) + return ret +} + +func (o Id) ValueForKey(key NSString) Id { + ret := Id{} + ret.ptr = C.NSObject_inst_ValueForKey(o.Ptr(), key.Ptr()) + return ret +} + +func (o Id) MutableArrayValueForKey(key NSString) NSMutableArray { + ret := NSMutableArray{} + ret.ptr = C.NSObject_inst_MutableArrayValueForKey(o.Ptr(), key.Ptr()) + return ret +} + +func (o Id) PerformSelectorInBackground(aSelector SEL, arg NSObject) { + C.NSObject_inst_PerformSelectorInBackground(o.Ptr(), unsafe.Pointer(aSelector), arg.Ptr()) +} + +func (o Id) Copy() Id { + ret := Id{} + ret.ptr = C.NSObject_inst_Copy(o.Ptr()) + return ret +} + +func (o Id) ToManyRelationshipKeys() NSArray { + ret := NSArray{} + ret.ptr = C.NSObject_inst_ToManyRelationshipKeys(o.Ptr()) + return ret +} + +func (o Id) AwakeAfterUsingCoder(aDecoder NSCoder) Id { + ret := Id{} + ret.ptr = C.NSObject_inst_AwakeAfterUsingCoder(o.Ptr(), aDecoder.Ptr()) + return ret +} + +func (o Id) ScriptingProperties() NSDictionary { + ret := NSDictionary{} + ret.ptr = C.NSObject_inst_ScriptingProperties(o.Ptr()) + return ret +} + +func (o Id) IsGreaterThan(object NSObject) bool { + ret := (C.NSObject_inst_IsGreaterThan(o.Ptr(), object.Ptr())) != 0 return ret } @@ -4670,6 +4903,46 @@ func (o Id) DidChangeValueForKeyWithSetMutation(key NSString, mutationKind NSKey C.NSObject_inst_DidChangeValueForKeyWithSetMutation(o.Ptr(), key.Ptr(), (C.NSKeyValueSetMutationKind)(mutationKind), objects.Ptr()) } +func (o Id) RemoveObserverForKeyPath(observer NSObject, keyPath NSString) { + C.NSObject_inst_RemoveObserverForKeyPath(o.Ptr(), observer.Ptr(), keyPath.Ptr()) +} + +func (o Id) RemoveObserverForKeyPathContext(observer NSObject, keyPath NSString, context unsafe.Pointer) { + C.NSObject_inst_RemoveObserverForKeyPathContext(o.Ptr(), observer.Ptr(), keyPath.Ptr(), unsafe.Pointer(context)) +} + +func (o Id) ObserveValueForKeyPath(keyPath NSString, object NSObject, change NSDictionary, context unsafe.Pointer) { + C.NSObject_inst_ObserveValueForKeyPath(o.Ptr(), keyPath.Ptr(), object.Ptr(), change.Ptr(), unsafe.Pointer(context)) +} + +func (o Id) ForwardingTargetForSelector(aSelector SEL) Id { + ret := Id{} + ret.ptr = C.NSObject_inst_ForwardingTargetForSelector(o.Ptr(), unsafe.Pointer(aSelector)) + return ret +} + +func (o Id) MutableOrderedSetValueForKeyPath(keyPath NSString) NSMutableOrderedSet { + ret := NSMutableOrderedSet{} + ret.ptr = C.NSObject_inst_MutableOrderedSetValueForKeyPath(o.Ptr(), keyPath.Ptr()) + return ret +} + +func (o Id) IsLike(object NSString) bool { + ret := (C.NSObject_inst_IsLike(o.Ptr(), object.Ptr())) != 0 + return ret +} + +func (o Id) ScriptingIsGreaterThan(object NSObject) bool { + ret := (C.NSObject_inst_ScriptingIsGreaterThan(o.Ptr(), object.Ptr())) != 0 + return ret +} + +func (o Id) Init() Id { + ret := Id{} + ret.ptr = C.NSObject_inst_Init(o.Ptr()) + return ret +} + func (o Id) ValidateValueForKey(ioValue *[]Id, inKey NSString, outError *[]NSError) bool { goSlice1 := make([]unsafe.Pointer,cap(*ioValue)) @@ -4732,58 +5005,24 @@ func (o Id) ValidateValueForKeyPath(ioValue *[]Id, inKeyPath NSString, outError return ret } -func (o Id) InverseForRelationshipKey(relationshipKey NSString) NSString { - ret := NSString{} - ret.ptr = C.NSObject_inst_InverseForRelationshipKey(o.Ptr(), relationshipKey.Ptr()) +func (o Id) ClassCode() FourCharCode { + ret := (FourCharCode)(C.NSObject_inst_ClassCode(o.Ptr())) return ret } -func (o Id) CopyScriptingValue(value NSObject, key NSString, properties NSDictionary) Id { +func (o Id) ReplacementObjectForCoder(aCoder NSCoder) Id { ret := Id{} - ret.ptr = C.NSObject_inst_CopyScriptingValue(o.Ptr(), value.Ptr(), key.Ptr(), properties.Ptr()) + ret.ptr = C.NSObject_inst_ReplacementObjectForCoder(o.Ptr(), aCoder.Ptr()) return ret } -func (o Id) ValueForKey(key NSString) Id { - ret := Id{} - ret.ptr = C.NSObject_inst_ValueForKey(o.Ptr(), key.Ptr()) +func (o Id) IsNotEqualTo(object NSObject) bool { + ret := (C.NSObject_inst_IsNotEqualTo(o.Ptr(), object.Ptr())) != 0 return ret } -func (o Id) AddObserver(observer NSObject, keyPath NSString, options NSKeyValueObservingOptions, context unsafe.Pointer) { - C.NSObject_inst_AddObserver(o.Ptr(), observer.Ptr(), keyPath.Ptr(), (C.NSKeyValueObservingOptions)(options), unsafe.Pointer(context)) -} - -func (o Id) ClassDescription() NSClassDescription { - ret := NSClassDescription{} - ret.ptr = C.NSObject_inst_ClassDescription(o.Ptr()) - return ret -} - -func (o Id) ValueAtIndex(index NSUInteger, key NSString) Id { - ret := Id{} - ret.ptr = C.NSObject_inst_ValueAtIndex(o.Ptr(), (C.NSUInteger)(index), key.Ptr()) - return ret -} - -func (o Id) MutableOrderedSetValueForKeyPath(keyPath NSString) NSMutableOrderedSet { - ret := NSMutableOrderedSet{} - ret.ptr = C.NSObject_inst_MutableOrderedSetValueForKeyPath(o.Ptr(), keyPath.Ptr()) - return ret -} - -func (o Id) DidChange(changeKind NSKeyValueChange, indexes NSIndexSet, key NSString) { - C.NSObject_inst_DidChange(o.Ptr(), (C.NSKeyValueChange)(changeKind), indexes.Ptr(), key.Ptr()) -} - -func (o Id) IsGreaterThanOrEqualTo(object NSObject) bool { - ret := (C.NSObject_inst_IsGreaterThanOrEqualTo(o.Ptr(), object.Ptr())) != 0 - return ret -} - -func (o Id) MutableOrderedSetValueForKey(key NSString) NSMutableOrderedSet { - ret := NSMutableOrderedSet{} - ret.ptr = C.NSObject_inst_MutableOrderedSetValueForKey(o.Ptr(), key.Ptr()) +func (o Id) ClassForArchiver() Class { + ret := (Class)(unsafe.Pointer(C.NSObject_inst_ClassForArchiver(o.Ptr()))) return ret } @@ -4803,140 +5042,34 @@ func (o Id) PerformSelectorOnThreadWithObject(aSelector SEL, thr NSThread, arg N C.NSObject_inst_PerformSelectorOnThreadWithObject(o.Ptr(), unsafe.Pointer(aSelector), thr.Ptr(), arg.Ptr(), (C.BOOL)(wait), array.Ptr()) } -func (o Id) IsCaseInsensitiveLike(object NSString) bool { - ret := (C.NSObject_inst_IsCaseInsensitiveLike(o.Ptr(), object.Ptr())) != 0 - return ret -} - -func (o Id) ClassCode() FourCharCode { - ret := (FourCharCode)(C.NSObject_inst_ClassCode(o.Ptr())) - return ret -} - -func (o Id) MutableSetValueForKey(key NSString) NSMutableSet { - ret := NSMutableSet{} - ret.ptr = C.NSObject_inst_MutableSetValueForKey(o.Ptr(), key.Ptr()) - return ret -} - -func (o Id) SetValuesForKeysWithDictionary(keyedValues NSDictionary) { - C.NSObject_inst_SetValuesForKeysWithDictionary(o.Ptr(), keyedValues.Ptr()) -} - -func (o Id) RemoveObserverForKeyPath(observer NSObject, keyPath NSString) { - C.NSObject_inst_RemoveObserverForKeyPath(o.Ptr(), observer.Ptr(), keyPath.Ptr()) -} - -func (o Id) RemoveObserverForKeyPathContext(observer NSObject, keyPath NSString, context unsafe.Pointer) { - C.NSObject_inst_RemoveObserverForKeyPathContext(o.Ptr(), observer.Ptr(), keyPath.Ptr(), unsafe.Pointer(context)) -} - -func (o Id) ClassName() NSString { - ret := NSString{} - ret.ptr = C.NSObject_inst_ClassName(o.Ptr()) - return ret -} - -func (o Id) ForwardInvocation(anInvocation NSInvocation) { - C.NSObject_inst_ForwardInvocation(o.Ptr(), anInvocation.Ptr()) -} - -func (o Id) ClassForKeyedArchiver() Class { - ret := (Class)(unsafe.Pointer(C.NSObject_inst_ClassForKeyedArchiver(o.Ptr()))) - return ret -} - -func (o Id) ToManyRelationshipKeys() NSArray { - ret := NSArray{} - ret.ptr = C.NSObject_inst_ToManyRelationshipKeys(o.Ptr()) - return ret -} - func (o Id) ObjectSpecifier() NSScriptObjectSpecifier { ret := NSScriptObjectSpecifier{} ret.ptr = C.NSObject_inst_ObjectSpecifier(o.Ptr()) return ret } -func (o Id) MethodSignatureForSelector(aSelector SEL) NSMethodSignature { - ret := NSMethodSignature{} - ret.ptr = C.NSObject_inst_MethodSignatureForSelector(o.Ptr(), unsafe.Pointer(aSelector)) +func (o Id) ObservationInfo() unsafe.Pointer { + ret := (unsafe.Pointer)(unsafe.Pointer(C.NSObject_inst_ObservationInfo(o.Ptr()))) return ret } -func (o Id) ScriptingIsLessThanOrEqualTo(object NSObject) bool { - ret := (C.NSObject_inst_ScriptingIsLessThanOrEqualTo(o.Ptr(), object.Ptr())) != 0 - return ret -} - -func (o Id) Copy() Id { +func (o Id) CoerceValue(value NSObject, key NSString) Id { ret := Id{} - ret.ptr = C.NSObject_inst_Copy(o.Ptr()) + ret.ptr = C.NSObject_inst_CoerceValue(o.Ptr(), value.Ptr(), key.Ptr()) return ret } -func (o Id) ReplacementObjectForCoder(aCoder NSCoder) Id { - ret := Id{} - ret.ptr = C.NSObject_inst_ReplacementObjectForCoder(o.Ptr(), aCoder.Ptr()) +func (o Id) AttemptRecoveryFromErrorOptionIndex(error NSError, recoveryOptionIndex NSUInteger) bool { + ret := (C.NSObject_inst_AttemptRecoveryFromErrorOptionIndex(o.Ptr(), error.Ptr(), (C.NSUInteger)(recoveryOptionIndex))) != 0 return ret } -func (o Id) PerformSelectorInBackground(aSelector SEL, arg NSObject) { - C.NSObject_inst_PerformSelectorInBackground(o.Ptr(), unsafe.Pointer(aSelector), arg.Ptr()) +func (o Id) AttemptRecoveryFromErrorOptionIndexDelegate(error NSError, recoveryOptionIndex NSUInteger, delegate NSObject, didRecoverSelector SEL, contextInfo unsafe.Pointer) { + C.NSObject_inst_AttemptRecoveryFromErrorOptionIndexDelegate(o.Ptr(), error.Ptr(), (C.NSUInteger)(recoveryOptionIndex), delegate.Ptr(), unsafe.Pointer(didRecoverSelector), unsafe.Pointer(contextInfo)) } -func (o Id) ScriptingIsGreaterThanOrEqualTo(object NSObject) bool { - ret := (C.NSObject_inst_ScriptingIsGreaterThanOrEqualTo(o.Ptr(), object.Ptr())) != 0 - return ret -} - -func (o Id) ScriptingIsGreaterThan(object NSObject) bool { - ret := (C.NSObject_inst_ScriptingIsGreaterThan(o.Ptr(), object.Ptr())) != 0 - return ret -} - -func (o Id) Dealloc() { - C.NSObject_inst_Dealloc(o.Ptr()) -} - -func (o Id) ScriptingEndsWith(object NSObject) bool { - ret := (C.NSObject_inst_ScriptingEndsWith(o.Ptr(), object.Ptr())) != 0 - return ret -} - -func (o Id) ToOneRelationshipKeys() NSArray { - ret := NSArray{} - ret.ptr = C.NSObject_inst_ToOneRelationshipKeys(o.Ptr()) - return ret -} - -func (o Id) IsLike(object NSString) bool { - ret := (C.NSObject_inst_IsLike(o.Ptr(), object.Ptr())) != 0 - return ret -} - -func (o Id) PerformSelectorOnMainThreadWithObject(aSelector SEL, arg NSObject, wait BOOL) { - C.NSObject_inst_PerformSelectorOnMainThreadWithObject(o.Ptr(), unsafe.Pointer(aSelector), arg.Ptr(), (C.BOOL)(wait)) -} - -func (o Id) PerformSelectorOnMainThreadWithObjectWaitUntilDone(aSelector SEL, arg NSObject, wait BOOL, array NSArray) { - C.NSObject_inst_PerformSelectorOnMainThreadWithObjectWaitUntilDone(o.Ptr(), unsafe.Pointer(aSelector), arg.Ptr(), (C.BOOL)(wait), array.Ptr()) -} - -func (o Id) ForwardingTargetForSelector(aSelector SEL) Id { - ret := Id{} - ret.ptr = C.NSObject_inst_ForwardingTargetForSelector(o.Ptr(), unsafe.Pointer(aSelector)) - return ret -} - -func (o Id) SetNilValueForKey(key NSString) { - C.NSObject_inst_SetNilValueForKey(o.Ptr(), key.Ptr()) -} - -func (o Id) IndicesOfObjectsByEvaluatingObjectSpecifier(specifier NSScriptObjectSpecifier) NSArray { - ret := NSArray{} - ret.ptr = C.NSObject_inst_IndicesOfObjectsByEvaluatingObjectSpecifier(o.Ptr(), specifier.Ptr()) - return ret +func (o Id) RemoveValueAtIndex(index NSUInteger, key NSString) { + C.NSObject_inst_RemoveValueAtIndex(o.Ptr(), (C.NSUInteger)(index), key.Ptr()) } func (o Id) ReplacementObjectForKeyedArchiver(archiver NSKeyedArchiver) Id { @@ -4945,110 +5078,13 @@ func (o Id) ReplacementObjectForKeyedArchiver(archiver NSKeyedArchiver) Id { return ret } -func (o Id) ScriptingContains(object NSObject) bool { - ret := (C.NSObject_inst_ScriptingContains(o.Ptr(), object.Ptr())) != 0 - return ret -} - -func (o Id) IsLessThan(object NSObject) bool { - ret := (C.NSObject_inst_IsLessThan(o.Ptr(), object.Ptr())) != 0 - return ret -} - -func (o Id) Init() Id { - ret := Id{} - ret.ptr = C.NSObject_inst_Init(o.Ptr()) - return ret -} - -func (o Id) RemoveValueAtIndex(index NSUInteger, key NSString) { - C.NSObject_inst_RemoveValueAtIndex(o.Ptr(), (C.NSUInteger)(index), key.Ptr()) -} - -func (o Id) WillChangeValueForKey(key NSString) { - C.NSObject_inst_WillChangeValueForKey(o.Ptr(), key.Ptr()) -} - -func (o Id) WillChangeValueForKeyWithSetMutation(key NSString, mutationKind NSKeyValueSetMutationKind, objects NSSet) { - C.NSObject_inst_WillChangeValueForKeyWithSetMutation(o.Ptr(), key.Ptr(), (C.NSKeyValueSetMutationKind)(mutationKind), objects.Ptr()) -} - -func (o Id) ValueForUndefinedKey(key NSString) Id { - ret := Id{} - ret.ptr = C.NSObject_inst_ValueForUndefinedKey(o.Ptr(), key.Ptr()) - return ret -} - -func (o Id) ReplaceValueAtIndex(index NSUInteger, key NSString, value NSObject) { - C.NSObject_inst_ReplaceValueAtIndex(o.Ptr(), (C.NSUInteger)(index), key.Ptr(), value.Ptr()) -} - -func (o Id) ScriptingProperties() NSDictionary { - ret := NSDictionary{} - ret.ptr = C.NSObject_inst_ScriptingProperties(o.Ptr()) - return ret -} - -func (o Id) ValueWithName(name NSString, key NSString) Id { - ret := Id{} - ret.ptr = C.NSObject_inst_ValueWithName(o.Ptr(), name.Ptr(), key.Ptr()) - return ret -} - -func (o Id) AwakeAfterUsingCoder(aDecoder NSCoder) Id { - ret := Id{} - ret.ptr = C.NSObject_inst_AwakeAfterUsingCoder(o.Ptr(), aDecoder.Ptr()) - return ret -} - -func (o Id) SetScriptingProperties(scriptingProperties NSDictionary) { - C.NSObject_inst_SetScriptingProperties(o.Ptr(), scriptingProperties.Ptr()) -} - func (o Id) ClassForCoder() Class { ret := (Class)(unsafe.Pointer(C.NSObject_inst_ClassForCoder(o.Ptr()))) return ret } -func (o Id) ValueWithUniqueID(uniqueID NSObject, key NSString) Id { - ret := Id{} - ret.ptr = C.NSObject_inst_ValueWithUniqueID(o.Ptr(), uniqueID.Ptr(), key.Ptr()) - return ret -} - -func (o Id) ScriptingIsLessThan(object NSObject) bool { - ret := (C.NSObject_inst_ScriptingIsLessThan(o.Ptr(), object.Ptr())) != 0 - return ret -} - -func (o Id) IsEqualTo(object NSObject) bool { - ret := (C.NSObject_inst_IsEqualTo(o.Ptr(), object.Ptr())) != 0 - return ret -} - -func (o Id) SetObservationInfo(observationInfo unsafe.Pointer) { - C.NSObject_inst_SetObservationInfo(o.Ptr(), unsafe.Pointer(observationInfo)) -} - -func (o Id) IsGreaterThan(object NSObject) bool { - ret := (C.NSObject_inst_IsGreaterThan(o.Ptr(), object.Ptr())) != 0 - return ret -} - -func (o Id) MutableArrayValueForKey(key NSString) NSMutableArray { - ret := NSMutableArray{} - ret.ptr = C.NSObject_inst_MutableArrayValueForKey(o.Ptr(), key.Ptr()) - return ret -} - -func (o Id) DoesContain(object NSObject) bool { - ret := (C.NSObject_inst_DoesContain(o.Ptr(), object.Ptr())) != 0 - return ret -} - -func (o Id) NewScriptingObjectOfClass(objectClass Class, key NSString, contentsValue NSObject, properties NSDictionary) Id { - ret := Id{} - ret.ptr = C.NSObject_inst_NewScriptingObjectOfClass(o.Ptr(), unsafe.Pointer(objectClass), key.Ptr(), contentsValue.Ptr(), properties.Ptr()) +func (o Id) ClassForKeyedArchiver() Class { + ret := (Class)(unsafe.Pointer(C.NSObject_inst_ClassForKeyedArchiver(o.Ptr()))) return ret } @@ -5057,8 +5093,13 @@ func (o Id) ScriptingIsEqualTo(object NSObject) bool { return ret } -func (o Id) IsNotEqualTo(object NSObject) bool { - ret := (C.NSObject_inst_IsNotEqualTo(o.Ptr(), object.Ptr())) != 0 +func (o Id) SetScriptingProperties(scriptingProperties NSDictionary) { + C.NSObject_inst_SetScriptingProperties(o.Ptr(), scriptingProperties.Ptr()) +} + +func (o Id) ToOneRelationshipKeys() NSArray { + ret := NSArray{} + ret.ptr = C.NSObject_inst_ToOneRelationshipKeys(o.Ptr()) return ret } @@ -5068,19 +5109,27 @@ func (o Id) ScriptingValueForSpecifier(objectSpecifier NSScriptObjectSpecifier) return ret } -func (o Id) ClassForArchiver() Class { - ret := (Class)(unsafe.Pointer(C.NSObject_inst_ClassForArchiver(o.Ptr()))) +func (o Id) ScriptingEndsWith(object NSObject) bool { + ret := (C.NSObject_inst_ScriptingEndsWith(o.Ptr(), object.Ptr())) != 0 return ret } -func (o Id) ConformsToProtocol(aProtocol Protocol) bool { - ret := (C.NSObject_inst_ConformsToProtocol(o.Ptr(), aProtocol.Ptr())) != 0 +func (o Id) RespondsToSelector(aSelector SEL) bool { + ret := (C.NSObject_inst_RespondsToSelector(o.Ptr(), unsafe.Pointer(aSelector))) != 0 return ret } -func (o Id) Description() NSString { - ret := NSString{} - ret.ptr = C.NSObject_inst_Description(o.Ptr()) +func (o Id) Release() { + C.NSObject_inst_Release(o.Ptr()) +} + +func (o Id) Hash() NSUInteger { + ret := (NSUInteger)(C.NSObject_inst_Hash(o.Ptr())) + return ret +} + +func (o Id) Superclass() Class { + ret := (Class)(unsafe.Pointer(C.NSObject_inst_Superclass(o.Ptr()))) return ret } @@ -5090,13 +5139,30 @@ func (o Id) DebugDescription() NSString { return ret } -func (o Id) Hash() NSUInteger { - ret := (NSUInteger)(C.NSObject_inst_Hash(o.Ptr())) +func (o Id) Retain() Id { + ret := Id{} + ret.ptr = C.NSObject_inst_Retain(o.Ptr()) return ret } -func (o Id) GetClass() Class { - ret := (Class)(unsafe.Pointer(C.NSObject_inst_Class(o.Ptr()))) +func (o Id) RetainCount() NSUInteger { + ret := (NSUInteger)(C.NSObject_inst_RetainCount(o.Ptr())) + return ret +} + +func (o Id) Description() NSString { + ret := NSString{} + ret.ptr = C.NSObject_inst_Description(o.Ptr()) + return ret +} + +func (o Id) Zone() *_NSZone { + ret := (*_NSZone)(unsafe.Pointer(C.NSObject_inst_Zone(o.Ptr()))) + return ret +} + +func (o Id) IsEqual(object NSObject) bool { + ret := (C.NSObject_inst_IsEqual(o.Ptr(), object.Ptr())) != 0 return ret } @@ -5111,18 +5177,29 @@ func (o Id) IsProxy() bool { return ret } +func (o Id) IsKindOfClass(aClass Class) bool { + ret := (C.NSObject_inst_IsKindOfClass(o.Ptr(), unsafe.Pointer(aClass))) != 0 + return ret +} + func (o Id) IsMemberOfClass(aClass Class) bool { ret := (C.NSObject_inst_IsMemberOfClass(o.Ptr(), unsafe.Pointer(aClass))) != 0 return ret } -func (o Id) RespondsToSelector(aSelector SEL) bool { - ret := (C.NSObject_inst_RespondsToSelector(o.Ptr(), unsafe.Pointer(aSelector))) != 0 +func (o Id) ConformsToProtocol(aProtocol Protocol) bool { + ret := (C.NSObject_inst_ConformsToProtocol(o.Ptr(), aProtocol.Ptr())) != 0 return ret } -func (o Id) IsEqual(object NSObject) bool { - ret := (C.NSObject_inst_IsEqual(o.Ptr(), object.Ptr())) != 0 +func (o Id) Autorelease() Id { + ret := Id{} + ret.ptr = C.NSObject_inst_Autorelease(o.Ptr()) + return ret +} + +func (o Id) GetClass() Class { + ret := (Class)(unsafe.Pointer(C.NSObject_inst_Class(o.Ptr()))) return ret } @@ -5138,89 +5215,14 @@ func (o Id) PerformSelectorWithObjectWithObject(aSelector SEL, object1 NSObject, return ret } -func (o Id) Retain() Id { - ret := Id{} - ret.ptr = C.NSObject_inst_Retain(o.Ptr()) - return ret -} - -func (o Id) Release() { - C.NSObject_inst_Release(o.Ptr()) -} - -func (o Id) IsKindOfClass(aClass Class) bool { - ret := (C.NSObject_inst_IsKindOfClass(o.Ptr(), unsafe.Pointer(aClass))) != 0 - return ret -} - -func (o Id) Autorelease() Id { - ret := Id{} - ret.ptr = C.NSObject_inst_Autorelease(o.Ptr()) - return ret -} - -func (o Id) RetainCount() NSUInteger { - ret := (NSUInteger)(C.NSObject_inst_RetainCount(o.Ptr())) - return ret -} - -func (o Id) Zone() *_NSZone { - ret := (*_NSZone)(unsafe.Pointer(C.NSObject_inst_Zone(o.Ptr()))) - return ret -} - -func (o Id) Superclass() Class { - ret := (Class)(unsafe.Pointer(C.NSObject_inst_Superclass(o.Ptr()))) - return ret -} - -func NSAutoreleasePoolConformsToProtocol(protocol Protocol) bool { - ret := (C.NSAutoreleasePool_ConformsToProtocol(protocol.Ptr())) != 0 - return ret -} - -func NSAutoreleasePoolVersion() NSInteger { - ret := (NSInteger)(C.NSAutoreleasePool_Version()) - return ret -} - -func NSAutoreleasePoolNew() NSAutoreleasePool { - ret := NSAutoreleasePool{} - ret.ptr = C.NSAutoreleasePool_New() - return ret -} - -func NSAutoreleasePoolResolveClassMethod(sel SEL) bool { - ret := (C.NSAutoreleasePool_ResolveClassMethod(unsafe.Pointer(sel))) != 0 - return ret -} - -func NSAutoreleasePoolAllocWithZone(zone *_NSZone) NSAutoreleasePool { - ret := NSAutoreleasePool{} - ret.ptr = C.NSAutoreleasePool_AllocWithZone(unsafe.Pointer(zone)) - return ret -} - -func NSAutoreleasePoolAddObject(anObject NSObject) { - C.NSAutoreleasePool_AddObject(anObject.Ptr()) -} - -func NSAutoreleasePoolDebugDescription() NSString { - ret := NSString{} - ret.ptr = C.NSAutoreleasePool_DebugDescription() - return ret -} - -func NSAutoreleasePoolDescription() NSString { - ret := NSString{} - ret.ptr = C.NSAutoreleasePool_Description() - return ret -} - func NSAutoreleasePoolSetVersion(aVersion NSInteger) { C.NSAutoreleasePool_SetVersion((C.NSInteger)(aVersion)) } +func NSAutoreleasePoolLoad() { + C.NSAutoreleasePool_Load() +} + func NSAutoreleasePoolCopyWithZone(zone *_NSZone) Id { ret := Id{} ret.ptr = C.NSAutoreleasePool_CopyWithZone(unsafe.Pointer(zone)) @@ -5233,49 +5235,88 @@ func NSAutoreleasePoolMutableCopyWithZone(zone *_NSZone) Id { return ret } +func NSAutoreleasePoolResolveClassMethod(sel SEL) bool { + ret := (C.NSAutoreleasePool_ResolveClassMethod(unsafe.Pointer(sel))) != 0 + return ret +} + +func NSAutoreleasePoolResolveInstanceMethod(sel SEL) bool { + ret := (C.NSAutoreleasePool_ResolveInstanceMethod(unsafe.Pointer(sel))) != 0 + return ret +} + +func NSAutoreleasePoolNew() NSAutoreleasePool { + ret := NSAutoreleasePool{} + ret.ptr = C.NSAutoreleasePool_New() + return ret +} + func NSAutoreleasePoolIsSubclassOfClass(aClass Class) bool { ret := (C.NSAutoreleasePool_IsSubclassOfClass(unsafe.Pointer(aClass))) != 0 return ret } +func NSAutoreleasePoolInstancesRespondToSelector(aSelector SEL) bool { + ret := (C.NSAutoreleasePool_InstancesRespondToSelector(unsafe.Pointer(aSelector))) != 0 + return ret +} + +func NSAutoreleasePoolVersion() NSInteger { + ret := (NSInteger)(C.NSAutoreleasePool_Version()) + return ret +} + +func NSAutoreleasePoolClass() Class { + ret := (Class)(unsafe.Pointer(C.NSAutoreleasePool_Class())) + return ret +} + +func NSAutoreleasePoolAlloc() NSAutoreleasePool { + ret := NSAutoreleasePool{} + ret.ptr = C.NSAutoreleasePool_Alloc() + return ret +} + +func NSAutoreleasePoolAddObject(anObject NSObject) { + C.NSAutoreleasePool_AddObject(anObject.Ptr()) +} + +func NSAutoreleasePoolSuperclass() Class { + ret := (Class)(unsafe.Pointer(C.NSAutoreleasePool_Superclass())) + return ret +} + +func NSAutoreleasePoolConformsToProtocol(protocol Protocol) bool { + ret := (C.NSAutoreleasePool_ConformsToProtocol(protocol.Ptr())) != 0 + return ret +} + +func NSAutoreleasePoolHash() NSUInteger { + ret := (NSUInteger)(C.NSAutoreleasePool_Hash()) + return ret +} + +func NSAutoreleasePoolDebugDescription() NSString { + ret := NSString{} + ret.ptr = C.NSAutoreleasePool_DebugDescription() + return ret +} + +func NSAutoreleasePoolAllocWithZone(zone *_NSZone) NSAutoreleasePool { + ret := NSAutoreleasePool{} + ret.ptr = C.NSAutoreleasePool_AllocWithZone(unsafe.Pointer(zone)) + return ret +} + func NSAutoreleasePoolInstanceMethodSignatureForSelector(aSelector SEL) NSMethodSignature { ret := NSMethodSignature{} ret.ptr = C.NSAutoreleasePool_InstanceMethodSignatureForSelector(unsafe.Pointer(aSelector)) return ret } -func NSAutoreleasePoolHash() NSUInteger { - ret := (NSUInteger)(C.NSAutoreleasePool_Hash()) - return ret -} - -func NSAutoreleasePoolSuperclass() Class { - ret := (Class)(unsafe.Pointer(C.NSAutoreleasePool_Superclass())) - return ret -} - -func NSAutoreleasePoolResolveInstanceMethod(sel SEL) bool { - ret := (C.NSAutoreleasePool_ResolveInstanceMethod(unsafe.Pointer(sel))) != 0 - return ret -} - -func NSAutoreleasePoolInstancesRespondToSelector(aSelector SEL) bool { - ret := (C.NSAutoreleasePool_InstancesRespondToSelector(unsafe.Pointer(aSelector))) != 0 - return ret -} - -func NSAutoreleasePoolClass() Class { - ret := (Class)(unsafe.Pointer(C.NSAutoreleasePool_Class())) - return ret -} - -func NSAutoreleasePoolLoad() { - C.NSAutoreleasePool_Load() -} - -func NSAutoreleasePoolAlloc() NSAutoreleasePool { - ret := NSAutoreleasePool{} - ret.ptr = C.NSAutoreleasePool_Alloc() +func NSAutoreleasePoolDescription() NSString { + ret := NSString{} + ret.ptr = C.NSAutoreleasePool_Description() return ret } @@ -5290,33 +5331,40 @@ func (o NSAutoreleasePool) Drain() { func MyClassAlloc() MyClass { ret := MyClass{} ret.ptr = unsafe.Pointer(C.MyClassAlloc()) + runtime.SetFinalizer(&ret,func(o *MyClass) { + o.Release() + }) return ret } type MyClassDispatch struct { - Dealloc func() Release func(MyClassSupermethods) + Dealloc func() } -var MyClassLookup map[unsafe.Pointer]MyClassDispatch = - map[unsafe.Pointer]MyClassDispatch{} +var MyClassLookup = map[unsafe.Pointer]MyClassDispatch{} +var MyClassMux sync.RWMutex type MyClassSupermethods struct { Release func() } -func (d MyClass) DeallocCallback(f func()) { - dispatch := MyClassLookup[d.Ptr()] - dispatch.Dealloc = f - MyClassLookup[d.Ptr()] = dispatch -} - func (d MyClass) ReleaseCallback(f func(MyClassSupermethods)) { + MyClassMux.Lock() dispatch := MyClassLookup[d.Ptr()] dispatch.Release = f MyClassLookup[d.Ptr()] = dispatch + MyClassMux.Unlock() } func (o MyClass) SuperRelease() { C.MyClass_super_release(o.Ptr()) } + +func (d MyClass) DeallocCallback(f func()) { + MyClassMux.Lock() + dispatch := MyClassLookup[d.Ptr()] + dispatch.Dealloc = f + MyClassLookup[d.Ptr()] = dispatch + MyClassMux.Unlock() +} diff --git a/examples/gc/nswrap.yaml b/examples/gc/nswrap.yaml new file mode 100644 index 0000000..039231a --- /dev/null +++ b/examples/gc/nswrap.yaml @@ -0,0 +1,17 @@ +inputfiles: + - /System/Library/Frameworks/Foundation.framework/Headers/Foundation.h +classes: + - NSAutoreleasePool + - NSArray + - NSMutableArray + - NSString + - NSObject +subclasses: + MyClass: + NSObject: + - dealloc + - release +frameworks: + - Foundation +pragma: [ clang diagnostic ignored "-Wformat-security" ] +gogc: true diff --git a/examples/memory/main.go b/examples/memory/main.go index b89b6cd..81b6b2d 100644 --- a/examples/memory/main.go +++ b/examples/memory/main.go @@ -17,7 +17,6 @@ func dealloc() { func release(super ns.MyClassSupermethods) { fmt.Println("--release called") - super.Release() // comment out for leak } @@ -39,8 +38,8 @@ func memtest1() { for { pool := ns.NSAutoreleasePoolAlloc().Init() o1 := ns.MyClassAlloc() - //If autorelease: true is set in nswrap.yaml, the manual calls to - //autorelease are not necessary. + //If autorelease: true is set in nswrap.yaml, the manual calls to + //autorelease are not necessary. o1.Autorelease() o1.DeallocCallback(dealloc) o1.ReleaseCallback(release) @@ -55,7 +54,7 @@ func memtest1() { _ = o3 _ = o4 pool.Drain() - time.Sleep(time.Second/2) + time.Sleep(time.Second / 2) } fmt.Println("memtest1: done") } @@ -71,11 +70,12 @@ func memtest2() { ns.Autoreleasepool(func() { o1 := ns.NSObjectAlloc() o1.Autorelease() - s1 := ns.NSStringWithGoString(fmt.Sprintf("string-%d",i)) + //Does not leak strings within an autorelease pool + s1 := ns.NSStringWithGoString(fmt.Sprintf("string-%d", i)) _ = s1 //o1.Retain() // uncomment for leak }) - time.Sleep(time.Second/3) + time.Sleep(time.Second / 3) } fmt.Println("memtest2: done") } @@ -87,18 +87,26 @@ func memtest3() { runtime.LockOSThread() // comment out for crash fmt.Println("memtest3: started") - for { ns.Autoreleasepool(func() { - arr := ns.NSMutableArrayAlloc().Init() - arr.Autorelease() - arr.AddObject(ns.NSStringWithGoString("my string")) + i := 0 + for { + ns.Autoreleasepool(func() { + arr := ns.NSMutableArrayAlloc().Init() + arr.Autorelease() + arr.AddObject(ns.NSStringWithGoString(fmt.Sprintf("my string %d",i))) + s1 := ns.NSStringWithGoString(fmt.Sprintf("my other string %d",i)) + _ = s1 + i++ - for { ns.Autoreleasepool(func() { - str := arr.ObjectAtIndex(0).NSString() - fmt.Println(str) // does not leak in an autorelease pool - time.Sleep(time.Second / 2) - })} - time.Sleep(time.Second) - })} + for { + ns.Autoreleasepool(func() { + str := arr.ObjectAtIndex(0).NSString() + fmt.Println(str) // does not leak in an autorelease pool + time.Sleep(time.Second / 2) + }) + } + time.Sleep(time.Second) + }) + } fmt.Println("memtest3: done") } @@ -117,34 +125,39 @@ func memtest4() { // Exactly one goroutine (locked to an OS thread) can use an // autorelease pool (?) go memtest1() + go memtest2() } func memtest4a() { for { o1 := ns.NSObjectAlloc() o1.Init() - time.Sleep(time.Second/50) + time.Sleep(time.Second / 50) o1.Release() } } func memtest4b() { + i := 0 for { o1 := ns.NSObjectAlloc() // need to Release + //s1 := ns.NSStringWithGoString(fmt.Sprintf("a string %d",i)) // uncomment for leak s1 := ns.NSStringWithGoString("a string") - arr := ns.NSArrayAlloc().InitWithObjects(s1) // need to Release + i++ + arr := ns.NSArrayAlloc().InitWithObjects(s1) // need to Release arr s2 := arr.ObjectAtIndex(0).NSString() - //If you try to convert an NSString to UTF8String, CString (*Char), - //or GoString, Objective-C runtime will leak an - //NSTaggedPointerCStringContainer. Don't know why or how to fix it. - //There would be no leak if we were using an autorelease pool. + //If you try to convert an NSString to UTF8String, CString (*Char), + //or GoString, Objective-C runtime will leak an + //NSTaggedPointerCStringContainer. Don't know why or how to fix it. + //There would be no leak if we were using an autorelease pool. //u := str.UTF8String() // uncomment for leak //fmt.Println(s1) // uncomment for leak - time.Sleep(time.Second/50) + time.Sleep(time.Second / 50) o1.Release() arr.Release() + //s1.Release() // does not work _ = o1 _ = s2 } @@ -154,12 +167,22 @@ func memtest4c() { o1 := ns.NSArrayAlloc() o2 := ns.NSStringAlloc() - time.Sleep(time.Second/50) + time.Sleep(time.Second / 50) o1.Release() o2.Release() } } +func fin(o *ns.MyClass) { + o.Release() +} + +func releaseX(x int) func (ns.MyClassSupermethods) { + return func(super ns.MyClassSupermethods) { + fmt.Printf("--release %d\n", x) + super.Release() // comment out for leak + } +} func main() { //Uncomment more than one test at a time for a crash. @@ -169,7 +192,7 @@ func main() { //go memtest1() //go memtest2() - go memtest3() - //go memtest4() - select { } + //go memtest3() + go memtest4() + select {} } diff --git a/examples/memory/memory b/examples/memory/memory deleted file mode 100755 index d92683b..0000000 Binary files a/examples/memory/memory and /dev/null differ diff --git a/examples/memory/tests b/examples/memory/tests deleted file mode 100755 index 64cfab1..0000000 Binary files a/examples/memory/tests and /dev/null differ diff --git a/examples/simple/main.go b/examples/simple/main.go index 50b2efc..38ea83a 100644 --- a/examples/simple/main.go +++ b/examples/simple/main.go @@ -1,4 +1,5 @@ package main + //go:generate nswrap import ( @@ -13,8 +14,8 @@ func cb(super ns.ClassThreeSupermethods) ns.Int { func main() { o := ns.ClassOneAlloc().Init() - fmt.Println("i1 = ",o.Geti1()) - fmt.Println("p1 = ",o.Getp1()) + fmt.Println("i1 = ", o.Geti1()) + fmt.Println("p1 = ", o.Getp1()) p1 := o.Getp1() fmt.Println("*p1 = ", *p1) *p1 = 17 @@ -31,4 +32,3 @@ func main() { fmt.Println(o3.Hi2(np)) fmt.Println(o3.Geti1()) } - diff --git a/main.go b/main.go index abe78ae..aad90c7 100644 --- a/main.go +++ b/main.go @@ -11,34 +11,35 @@ import ( "runtime/pprof" "strings" - "gopkg.in/yaml.v2" "git.wow.st/gmp/nswrap/ast" "git.wow.st/gmp/nswrap/wrap" + "gopkg.in/yaml.v2" ) var Debug = false var Profile = false type conf struct { - Positions bool - Package string - Inputfiles []string - Astfile string - Debugast bool - Classes []string - Functions []string - Enums []string - Delegates map[string]map[string][]string - Subclasses map[string]map[string][]string - Frameworks []string + Positions bool + Package string + Inputfiles []string + Astfile string + Debugast bool + Classes []string + Functions []string + Enums []string + Delegates map[string]map[string][]string + Subclasses map[string]map[string][]string + Frameworks []string Frameworkdirs []string - Imports []string - Sysimports []string - Pragma []string - Vaargs int + Imports []string + Sysimports []string + Pragma []string + Vaargs int //Arc flag for debugging only, builds will break - Arc bool + Arc bool Autorelease bool + Gogc bool } var Config conf @@ -52,17 +53,19 @@ type treeNode struct { node ast.Node } -func printLinesWithContext(lines []string,i int) { +func printLinesWithContext(lines []string, i int) { b := i - 3 - if b < 0 { b = 0 } + if b < 0 { + b = 0 + } var flag string - for x := b; (x < b + 6) && (x < len(lines)); x++ { + for x := b; (x < b+6) && (x < len(lines)); x++ { if x == i { flag = "--> " } else { flag = " " } - fmt.Printf("%s%s\n",flag,lines[x]) + fmt.Printf("%s%s\n", flag, lines[x]) } } @@ -90,7 +93,7 @@ func convertLinesToNodes(lines []string) []treeNode { switch node.(type) { case *ast.Unknown: fmt.Printf("Unrecognized node:\n") - printLinesWithContext(lines,i) + printLinesWithContext(lines, i) fmt.Printf("\n") unknowns++ if unknowns > 5 { @@ -184,8 +187,8 @@ func buildTree(nodes []treeNode, depth int) []ast.Node { } func matches(x string, rs []string) bool { - for _,r := range rs { - if m, _ := regexp.MatchString("^" + r + "$",x); m { + for _, r := range rs { + if m, _ := regexp.MatchString("^"+r+"$", x); m { return true } } @@ -196,10 +199,10 @@ func matches(x string, rs []string) bool { func Start() (err error) { astPP := []byte{} if Config.Astfile != "" { - fmt.Printf("Reading ast file %s\n",Config.Astfile) + fmt.Printf("Reading ast file %s\n", Config.Astfile) _, err = os.Stat(Config.Astfile) if err != nil { - return fmt.Errorf("Input AST file %s not found",Config.Astfile) + return fmt.Errorf("Input AST file %s not found", Config.Astfile) } astPP, err = ioutil.ReadFile(Config.Astfile) if err != nil { @@ -215,16 +218,16 @@ func Start() (err error) { // Generate AST cargs := []string{"-xobjective-c", "-Xclang", "-ast-dump", - "-fsyntax-only","-fno-color-diagnostics"} + "-fsyntax-only", "-fno-color-diagnostics"} if Config.Arc { - cargs = append(cargs,"-fobjc-arc") + cargs = append(cargs, "-fobjc-arc") } - for _,f := range Config.Frameworkdirs { - cargs = append(cargs,"-F" + f) + for _, f := range Config.Frameworkdirs { + cargs = append(cargs, "-F"+f) } - cargs = append(cargs,Config.Inputfiles...) + cargs = append(cargs, Config.Inputfiles...) fmt.Printf("Generating AST\n") - astPP, err = exec.Command("clang",cargs...).Output() + astPP, err = exec.Command("clang", cargs...).Output() if err != nil { // If clang fails it still prints out the AST, so we have to run it // again to get the real error. @@ -248,12 +251,19 @@ func Start() (err error) { if Config.Positions { ast.TrackPositions = true } + if Config.Gogc && Config.Autorelease { + fmt.Printf("Cannot use Autorelease and Gogc directives at the same time\n") + os.Exit(-1) + } if Config.Arc { wrap.Arc = true } if Config.Autorelease { wrap.Autorelease = true } + if Config.Gogc { + wrap.Gogc = true + } //NOTE: converting in parallel is slower on my system //nodes := convertLinesToNodesParallel(lines) nodes := convertLinesToNodes(lines) @@ -276,29 +286,29 @@ func Start() (err error) { w.Vaargs = Config.Vaargs for _, u := range tree { fmt.Printf("--processing translation unit\n") - for _, n := range(u.Children()) { + for _, n := range u.Children() { switch x := n.(type) { case *ast.ObjCInterfaceDecl: w.AddInterface(x) - for _,ss := range Config.Subclasses { - if sc,ok := ss["superclass"]; ok { - if matches(x.Name,sc) { - Config.Classes = append(Config.Classes,x.Name) + for _, ss := range Config.Subclasses { + if sc, ok := ss["superclass"]; ok { + if matches(x.Name, sc) { + Config.Classes = append(Config.Classes, x.Name) } } } case *ast.ObjCCategoryDecl: w.AddCategory(x) case *ast.TypedefDecl: - w.AddTypedef(x.Name,x.Type) + w.AddTypedef(x.Name, x.Type) case *ast.FunctionDecl: - if matches(x.Name,Config.Functions) { + if matches(x.Name, Config.Functions) { w.AddFunction(x) } case *ast.ObjCProtocolDecl: w.AddProtocol(x) case *ast.EnumDecl: - w.AddEnum(x,Config.Enums) + w.AddEnum(x, Config.Enums) } } } @@ -321,11 +331,11 @@ func main() { confbytes, err := ioutil.ReadFile("nswrap.yaml") if err != nil { - fmt.Printf("%s\n\nFATAL ERROR: Configuration file must be present in directory where nswrap\nis invoked.\n",err) + fmt.Printf("%s\n\nFATAL ERROR: Configuration file must be present in directory where nswrap\nis invoked.\n", err) os.Exit(-1) } - if err = yaml.UnmarshalStrict(confbytes,&Config); err != nil { - fmt.Printf("Cannot decode config file nswrap.yaml. %s\n",err) + if err = yaml.UnmarshalStrict(confbytes, &Config); err != nil { + fmt.Printf("Cannot decode config file nswrap.yaml. %s\n", err) os.Exit(-1) } ast.Debug = Config.Debugast diff --git a/types/combinators.go b/types/combinators.go index ee5e1fd..524fbbc 100644 --- a/types/combinators.go +++ b/types/combinators.go @@ -5,8 +5,8 @@ import ( ) var ( - whitespace *regexp.Regexp - wordchars *regexp.Regexp + whitespace *regexp.Regexp + wordchars *regexp.Regexp reservedwords *regexp.Regexp ) @@ -26,19 +26,19 @@ type Parser func(string, *Node) (string, *Node) //ChildOf takes a node and adds results of a parser to it as a child func ChildOf(ret *Node, p Parser) Parser { return func(s string, n *Node) (string, *Node) { - dbg("ChildOf(%s %p) %s %p\n",ret.Kind,ret,n.Kind,n) - s2,n2 := p(s,ret) + dbg("ChildOf(%s %p) %s %p\n", ret.Kind, ret, n.Kind, n) + s2, n2 := p(s, ret) if n2 == nil { - return s,nil + return s, nil } if n2 == ret { - dbg("ChildOf(ret = %p) n2 = %p. WHAT\n",ret,n2) + dbg("ChildOf(ret = %p) n2 = %p. WHAT\n", ret, n2) ret.Children = n2.Children } else { - dbg("ChildOf(ret = %p) AddChild()\n",ret) + dbg("ChildOf(ret = %p) AddChild()\n", ret) ret.AddChild(n2) } - return s2,ret + return s2, ret } } @@ -51,18 +51,18 @@ func Children(ps ...Parser) Parser { } p := ps[0] return func(s string, n *Node) (string, *Node) { - dbg("Children(%s %p)\n",n.Kind,n) - s2,n2 := p(s,n) + dbg("Children(%s %p)\n", n.Kind, n) + s2, n2 := p(s, n) if n2 == nil { - return s,nil + return s, nil } - for _,c := range n2.Children { - dbg("Children(%s %p) AddChild() from %p\n",n.Kind,n,n2) + for _, c := range n2.Children { + dbg("Children(%s %p) AddChild() from %p\n", n.Kind, n, n2) if c != n { n.AddChild(c) } } - return s2,n + return s2, n } } @@ -70,18 +70,18 @@ func Children(ps ...Parser) Parser { //to it as its children. func ChildrenOf(ret *Node, p Parser) Parser { return func(s string, n *Node) (string, *Node) { - dbg("ChildrenOf(%s %p) %s %p\n",ret.Kind,ret,n.Kind,n) - return Children(p)(s,ret) + dbg("ChildrenOf(%s %p) %s %p\n", ret.Kind, ret, n.Kind, n) + return Children(p)(s, ret) } } func NodeNamed(k string, p Parser) Parser { return func(s string, n *Node) (string, *Node) { - s2,n2 := p(s,n) + s2, n2 := p(s, n) if n2 != nil { n2.Kind = k } - return s2,n2 + return s2, n2 } } @@ -91,46 +91,46 @@ func NodeNamed(k string, p Parser) Parser { //if it fails func Opt(p Parser) Parser { return func(s string, n *Node) (string, *Node) { - s2,n2 := p(s,n) + s2, n2 := p(s, n) if n2 == nil { - return s,n + return s, n } - return s2,n2 + return s2, n2 } } //OneOf picks the first matching parser and returns its result func OneOf(ps ...Parser) Parser { - dbg("OneOf(%p)\n",ps) + dbg("OneOf(%p)\n", ps) return func(s string, n *Node) (string, *Node) { - for _,p := range ps { - s2,n2 := p(s,n) + for _, p := range ps { + s2, n2 := p(s, n) if n2 != nil { - return s2,n2 + return s2, n2 } } - return s,nil + return s, nil } } //Seq applies parsers in sequence, adding results as children to the input //node. Returns nil and the input string unless the entire sequence succeeds func Seq(ps ...Parser) Parser { - dbg("Seq(%p)\n",ps) + dbg("Seq(%p)\n", ps) p := func(s string, n *Node) (string, *Node) { ret := NewNode("Seq") - s2, n2 := s,n - for _,p := range ps { - s2, n2 = p(s2,ret) + s2, n2 := s, n + for _, p := range ps { + s2, n2 = p(s2, ret) if n2 == nil { - return s,nil + return s, nil } if n2 != ret { - dbg("Seq(%p): AddChild()\n",ps) + dbg("Seq(%p): AddChild()\n", ps) ret.AddChild(n2) } } - return s2,ret + return s2, ret } return Children(p) } @@ -138,21 +138,21 @@ func Seq(ps ...Parser) Parser { //Nest is like Seq but subsequent children are nested inside their earlier //siblings. func Nest(ps ...Parser) Parser { - dbg("Nest(%p)\n",ps) + dbg("Nest(%p)\n", ps) p := func(s string, n *Node) (string, *Node) { ret := NewNode("Nest") - s2,n2 := Seq(ps...)(s,ret) + s2, n2 := Seq(ps...)(s, ret) if n2 == nil { - return s,nil + return s, nil } ocs := n2.Children ret.Children = []*Node{} n3 := ret - for _,c := range ocs { + for _, c := range ocs { n3.AddChild(c) n3 = c } - return s2,ret + return s2, ret } return Children(p) } @@ -161,17 +161,17 @@ func Nest(ps ...Parser) Parser { func ZeroOrMore(p Parser) Parser { ret := func(s string, n *Node) (string, *Node) { ret := NewNode("ZeroOrMore") - dbg("ZeroOrMore(%s %p) ret = %p\n",n.Kind,n,ret) + dbg("ZeroOrMore(%s %p) ret = %p\n", n.Kind, n, ret) var s2 string var n2 *Node - for s2,n2 = p(s,n); n2 != nil; s2,n2 = p(s2,n) { - dbg("ZeroOrMore(%p): AddChild()\n",p) + for s2, n2 = p(s, n); n2 != nil; s2, n2 = p(s2, n) { + dbg("ZeroOrMore(%p): AddChild()\n", p) ret.AddChild(n2) } if len(ret.Children) > 0 { - return s2,ret + return s2, ret } - return s,n + return s, n } return Children(ret) } @@ -179,27 +179,27 @@ func ZeroOrMore(p Parser) Parser { //OneOrMore is ZeroOrMore, but fails (returns nil) if the input parser does //not match any elements. func OneOrMore(p Parser) Parser { - return Seq(p,ZeroOrMore(p)) + return Seq(p, ZeroOrMore(p)) } //Parenthesized matches the input parser surrounded by literal parenthesis. func Parenthesized(p Parser) Parser { - return Children(Seq(Lit("("),p,Lit(")"))) + return Children(Seq(Lit("("), p, Lit(")"))) } //Bracketed matches the input parser surrounded by literal square brackets. func Bracketed(p Parser) Parser { - return Seq(Lit("["),p,Lit("]")) + return Seq(Lit("["), p, Lit("]")) } //AngBracketed matches the input parser surrounded by literal angled brackets. func AngBracketed(p Parser) Parser { - return Children(Seq(Lit("<"),p,Lit(">"))) + return Children(Seq(Lit("<"), p, Lit(">"))) } //CurlyBracketed matches the input parser surrounded by literal curly brackets. func CurlyBracketed(p Parser) Parser { - return Children(Seq(Lit("{"),p,Lit("}"))) + return Children(Seq(Lit("{"), p, Lit("}"))) } // Recognizers -- these functions return parsers that match tokens in the input @@ -207,7 +207,7 @@ func CurlyBracketed(p Parser) Parser { //Word matches an element with a word boundary after its end func Word(f string) Parser { - return Lit(f,true) + return Lit(f, true) } //Lit matches a literal string @@ -218,19 +218,19 @@ func Lit(f string, ws ...bool) Parser { } lenf := len(f) return func(s string, n *Node) (string, *Node) { - ret := NewNode("Lit",f) - dbg("Lit(%p) %s ret = %p\n",n,f,ret) + ret := NewNode("Lit", f) + dbg("Lit(%p) %s ret = %p\n", n, f, ret) if len(s) < lenf { - return s,nil + return s, nil } if f == s[:lenf] && !(word && len(s) > lenf && wordchars.Match([]byte{s[lenf]})) { adv := lenf if loc := whitespace.FindStringIndex(s[lenf:]); loc != nil { adv += loc[1] } - return s[adv:],ret + return s[adv:], ret } - return s,nil + return s, nil } } @@ -239,18 +239,17 @@ func Regexp(f string) Parser { f = "^" + f r := regexp.MustCompile(f) return func(s string, n *Node) (string, *Node) { - dbg("Regexp(%p) %s\n",n,f) + dbg("Regexp(%p) %s\n", n, f) if loc := r.FindStringIndex(s); loc != nil { lenf := loc[1] adv := lenf if loc := whitespace.FindStringIndex(s[lenf:]); loc != nil { adv += loc[1] } - ret := NewNode("Regexp",s[:lenf]) - dbg("Regexp(%p): ret = %p (%s)\n",n,ret,s[:lenf]) - return s[adv:],ret + ret := NewNode("Regexp", s[:lenf]) + dbg("Regexp(%p): ret = %p (%s)\n", n, ret, s[:lenf]) + return s[adv:], ret } - return s,nil + return s, nil } } - diff --git a/types/convert.go b/types/convert.go index 9af08d6..92cd1be 100644 --- a/types/convert.go +++ b/types/convert.go @@ -24,7 +24,6 @@ func IsGoInterface(gt string) bool { return goInterfaces[gt] } - //TypeParameters maps, for each class, a TypedefName to a type, representing //the Objective-C type parameters for that class var TypeParameters map[string]map[string]string @@ -37,7 +36,7 @@ func (t *Type) Typedef() *Type { } var ( - r_id *regexp.Regexp + r_id *regexp.Regexp r_instancename *regexp.Regexp r_instancetype *regexp.Regexp ) @@ -75,60 +74,60 @@ func AddTypedef(n string, tp *Type) { } type Type struct { - Node *Node - Class string + Node *Node + Class string Variadic bool } func (t *Type) CloneToClass(c string) *Type { return &Type{ - Node: t.Node, - Class: c, + Node: t.Node, + Class: c, Variadic: t.Variadic, } } -func clean(n *Node,c string) (*Node,bool) { +func clean(n *Node, c string) (*Node, bool) { if n == nil { - return nil,false + return nil, false } - ret := NewNode(n.Kind,n.Content) + ret := NewNode(n.Kind, n.Content) ret.Children = n.Children //fmt.Printf("clean(%s,%s)\n",n.CType(),c) recur := false if TypeParameters[c] != nil { - for k,v := range TypeParameters[c] { - recur = ret.renameTypedefs(k,v) + for k, v := range TypeParameters[c] { + recur = ret.renameTypedefs(k, v) } } if recur { clean(n, c) - return ret,true + return ret, true } - return n,false + return n, false } func NewType(n *Node, c string) *Type { - n2,_ := clean(n, c) + n2, _ := clean(n, c) return &Type{ - Node: n2, + Node: n2, Class: c, } } -func NewTypeFromString(t,c string) *Type { +func NewTypeFromString(t, c string) *Type { //fmt.Printf("t/c: %s/%s\n",t,c) - n,err := Parse(t) + n, err := Parse(t) //fmt.Printf("%p %s",n,n.String()) if err != nil { return &Type{} } - if n2,ok := clean(n, c); ok { + if n2, ok := clean(n, c); ok { //found type parameters, re-parse - return NewTypeFromString(n2.CType(),c) + return NewTypeFromString(n2.CType(), c) } return &Type{ - Node: n, + Node: n, Class: c, } } @@ -156,7 +155,7 @@ func (t *Type) BaseType() *Type { if t == nil { return nil } - ret := NewType( + ret := NewType( t.Node.BaseType(), t.Class, ) @@ -172,11 +171,11 @@ func swapstars(s string) string { func (t *Type) CGoType() string { ct := swapstars("C." + t.CType()) - ct = strings.ReplaceAll(ct,"unsigned ","u") - ct = strings.ReplaceAll(ct,"signed ","u") - ct = strings.ReplaceAll(ct,"long ","long") - ct = strings.ReplaceAll(ct,"complex ","complex") - ct = strings.ReplaceAll(ct," ","_") + ct = strings.ReplaceAll(ct, "unsigned ", "u") + ct = strings.ReplaceAll(ct, "signed ", "u") + ct = strings.ReplaceAll(ct, "long ", "long") + ct = strings.ReplaceAll(ct, "complex ", "complex") + ct = strings.ReplaceAll(ct, " ", "_") return ct } @@ -187,15 +186,15 @@ func (t *Type) GoType() string { func _goType(ct string) string { ct = swapstars(ct) ct = strings.Title(ct) - ct = strings.ReplaceAll(ct," ","") - ct = strings.ReplaceAll(ct,"Struct","") + ct = strings.ReplaceAll(ct, " ", "") + ct = strings.ReplaceAll(ct, "Struct", "") if IsGoInterface(ct) { return ct } /* - if ct == "Id" { - ct = "Id" - }*/ + if ct == "Id" { + ct = "Id" + }*/ if len(ct) > 1 && ShouldWrap(ct[1:]) { return ct[1:] } @@ -220,14 +219,14 @@ func (t *Type) _CType(attrib bool) string { } var ct string if attrib { - ignore := map[string]bool { "GenericList": true } + ignore := map[string]bool{"GenericList": true} ct = t.Node._CType(ignore) } else { ct = t.Node.CTypeSimplified() } - ct = r_id.ReplaceAllString(ct,"NSObject*") - ct = r_instancename.ReplaceAllString(ct,t.Class) - ct = r_instancetype.ReplaceAllString(ct,t.Class + "*") + ct = r_id.ReplaceAllString(ct, "NSObject*") + ct = r_instancename.ReplaceAllString(ct, t.Class) + ct = r_instancetype.ReplaceAllString(ct, t.Class+"*") return ct } @@ -252,7 +251,7 @@ func (t *Type) GoTypeDecl() string { } return fmt.Sprintf(` type %s %s -`,gt,cgt) +`, gt, cgt) } } @@ -266,7 +265,7 @@ func (t *Type) GoInterfaceDecl() string { type %s interface { Ptr() unsafe.Pointer } -`,gt) +`, gt) } if IsGoInterface(super) { super = "Id" @@ -279,7 +278,7 @@ func (o Id) %s() %s { ret.ptr = o.ptr return ret } -`,gt,super,gt,gt,gt,gt) +`, gt, super, gt, gt, gt, gt) } func (t *Type) IsFunctionPtr() bool { @@ -321,7 +320,7 @@ func (t *Type) ReturnType() *Type { return td.ReturnType() } if rt := t.Node.ReturnType(); rt != nil { - return NewType(rt,t.Class) + return NewType(rt, t.Class) } return nil } @@ -341,11 +340,11 @@ func (t *Type) CToGo(cval string) string { if t.IsPointer() { cval = "unsafe.Pointer(" + cval + ")" } - return fmt.Sprintf("(%s)(%s)",t.GoType(),cval) + return fmt.Sprintf("(%s)(%s)", t.GoType(), cval) } // Call a C function from Go with a given return type and parameter types -func GoToC(name string, pnames, snames []string, rtype *Type, ptypes []*Type, fun bool) string { +func GoToC(name string, pnames, snames []string, rtype *Type, ptypes []*Type, fun, gogc bool) string { if rtype == nil { //fmt.Println("nil sent to GoToC") return "" @@ -360,8 +359,8 @@ func GoToC(name string, pnames, snames []string, rtype *Type, ptypes []*Type, fu if rt != "void" { if sw { ret.WriteString(fmt.Sprintf( -`ret := %s{} - ret.ptr = `,rtgt)) + `ret := %s{} + ret.ptr = `, rtgt)) } else { if rtgt == "BOOL" { ret.WriteString("ret := (") @@ -377,7 +376,7 @@ func GoToC(name string, pnames, snames []string, rtype *Type, ptypes []*Type, fu ret.WriteString("C." + name + "(") parms := []string{} for i := 0; i < len(pnames); i++ { - pn,pt := pnames[i],ptypes[i] + pn, pt := pnames[i], ptypes[i] p := pn if (ShouldWrap(pt.GoType()) || IsGoInterface(pt.GoType())) && !pt.Variadic { p = pn + ".Ptr()" @@ -393,9 +392,9 @@ func GoToC(name string, pnames, snames []string, rtype *Type, ptypes []*Type, fu p = "(" + pt.CGoType() + ")(" + pn + ")" } } - parms = append(parms,p) + parms = append(parms, p) } - ret.WriteString(strings.Join(parms,", ")) + ret.WriteString(strings.Join(parms, ", ")) ret.WriteString(")") if rt != "void" && !sw { ret.WriteString(")") @@ -406,8 +405,10 @@ func GoToC(name string, pnames, snames []string, rtype *Type, ptypes []*Type, fu if rt == "BOOL" { ret.WriteString(" != 0") } - for i,sname := range snames { - if sname == "" { continue } + for i, sname := range snames { + if sname == "" { + continue + } ret.WriteString(fmt.Sprintf(` (*%s) = (*%s)[:cap(*%s)] for i := 0; i < len(*%s); i++ { @@ -416,12 +417,19 @@ func GoToC(name string, pnames, snames []string, rtype *Type, ptypes []*Type, fu break } (*%s)[i].ptr = %s[i] - }`,pnames[i],pnames[i],pnames[i],pnames[i],sname,pnames[i],pnames[i],pnames[i],sname)) + }`, pnames[i], pnames[i], pnames[i], pnames[i], sname, pnames[i], pnames[i], pnames[i], sname)) } if rt != "void" { + if sw && gogc && rtgt != "NSAutoreleasePool" { +// if m,_ :=regexp.MatchString(`Alloc(WithZone)?`,name); m { + ret.WriteString(fmt.Sprintf(` + runtime.SetFinalizer(&ret, func(o *%s) { + o.Release() + })`,rtgt)) +// } + } ret.WriteString(` return ret`) } return ret.String() } - diff --git a/types/convert_test.go b/types/convert_test.go index 304d9ae..4f4baf0 100644 --- a/types/convert_test.go +++ b/types/convert_test.go @@ -9,7 +9,7 @@ import ( func isNil(x interface{}) bool { return x == nil || (reflect.ValueOf(x).Kind() == reflect.Ptr && - reflect.ValueOf(x).IsNil()) + reflect.ValueOf(x).IsNil()) } func TestType(t *testing.T) { @@ -20,169 +20,171 @@ func TestType(t *testing.T) { var tp *Type chk := func(actual, expected interface{}) { - t.Run(fmt.Sprintf("TestType%d",i),func(t *testing.T) { - if isNil(actual) && isNil(expected) { return } - if !reflect.DeepEqual(actual,expected) { - t.Errorf("Test failed for %s\n",str) - fmt.Println("Actual:\n",actual) - fmt.Println("Expected:\n",expected) + t.Run(fmt.Sprintf("TestType%d", i), func(t *testing.T) { + if isNil(actual) && isNil(expected) { + return + } + if !reflect.DeepEqual(actual, expected) { + t.Errorf("Test failed for %s\n", str) + fmt.Println("Actual:\n", actual) + fmt.Println("Expected:\n", expected) } }) } chk_newtype := func() { - tp = NewTypeFromString(str,"") - chk(tp,&Type{ Node: n, Class: "" }) + tp = NewTypeFromString(str, "") + chk(tp, &Type{Node: n, Class: ""}) } //tests on nil Type pointers: - chk(tp.BaseType(),nil) - chk(tp.CType(),"") - chk(tp.IsFunction(),false) - chk(tp.IsPointer(),false) - chk(tp.IsFunctionPtr(),false) - chk(tp.IsValist(),false) + chk(tp.BaseType(), nil) + chk(tp.CType(), "") + chk(tp.IsFunction(), false) + chk(tp.IsPointer(), false) + chk(tp.IsFunctionPtr(), false) + chk(tp.IsValist(), false) str = "int" - n = &Node{ "TypeName", "", []*Node{ - &Node{ "TypeSpecifier", "int", []*Node{} } } } + n = &Node{"TypeName", "", []*Node{ + &Node{"TypeSpecifier", "int", []*Node{}}}} chk_newtype() tint := tp str = "NSObject" - n = &Node{ "TypeName", "", []*Node{ - &Node{ "TypedefName", "NSObject", []*Node{} } } } + n = &Node{"TypeName", "", []*Node{ + &Node{"TypedefName", "NSObject", []*Node{}}}} chk_newtype() nso := tp str = "NSString" - n = &Node{ "TypeName", "", []*Node{ - &Node{ "TypedefName", "NSString", []*Node{} } } } + n = &Node{"TypeName", "", []*Node{ + &Node{"TypedefName", "NSString", []*Node{}}}} chk_newtype() nst := tp str = "NSString*" - n = &Node{ "TypeName", "", []*Node{ - &Node{ "TypedefName", "NSString", []*Node{} }, - &Node{ "Pointer", "*", []*Node{} } } } + n = &Node{"TypeName", "", []*Node{ + &Node{"TypedefName", "NSString", []*Node{}}, + &Node{"Pointer", "*", []*Node{}}}} chk_newtype() - chk(tp.IsPointer(),true) - chk(tp.Typedef(),nil) + chk(tp.IsPointer(), true) + chk(tp.Typedef(), nil) tpNSString := tp str = "myTypedef" - AddTypedef("myTypedef",tp) - n = &Node { "TypeName", "", []*Node{ - &Node{ "TypedefName", "myTypedef", []*Node{} }}} + AddTypedef("myTypedef", tp) + n = &Node{"TypeName", "", []*Node{ + &Node{"TypedefName", "myTypedef", []*Node{}}}} chk_newtype() - chk(tp.Typedef(),tpNSString) + chk(tp.Typedef(), tpNSString) str = "const NSArray *" - n = &Node{ "TypeName", "", []*Node{ - &Node{ "TypeQualifier", "const", []*Node{} }, - &Node{ "TypedefName", "NSArray", []*Node{} }, - &Node{ "GenericList", "", []*Node{ - &Node{ "Generic", "", []*Node{ - &Node{ "TypedefName", "ObjectType", []*Node{} }, - &Node{ "Pointer", "*", []*Node{} }, - &Node{ "NullableAnnotation", "_Nonnull", []*Node{} } } } } }, - &Node{ "Pointer", "*", []*Node{} } } } + n = &Node{"TypeName", "", []*Node{ + &Node{"TypeQualifier", "const", []*Node{}}, + &Node{"TypedefName", "NSArray", []*Node{}}, + &Node{"GenericList", "", []*Node{ + &Node{"Generic", "", []*Node{ + &Node{"TypedefName", "ObjectType", []*Node{}}, + &Node{"Pointer", "*", []*Node{}}, + &Node{"NullableAnnotation", "_Nonnull", []*Node{}}}}}}, + &Node{"Pointer", "*", []*Node{}}}} chk_newtype() - chk(tp.CType(),"NSArray*") - chk(tp.CTypeAttrib(),"const NSArray*") - chk(tp.CGoType(),"*C.NSArray") - chk(tp.GoType(),"*NSArray") + chk(tp.CType(), "NSArray*") + chk(tp.CTypeAttrib(), "const NSArray*") + chk(tp.CGoType(), "*C.NSArray") + chk(tp.GoType(), "*NSArray") - SetTypeParam("MyClass","ObjectType","MyClass") + SetTypeParam("MyClass", "ObjectType", "MyClass") str = "id" - n = &Node{ "TypeName", "", []*Node{ - &Node{ "TypedefName", "id", []*Node{} }, - &Node{ "GenericList", "", []*Node{ - &Node{ "Generic", "", []*Node{ - &Node{ "TypedefName", "ObjectType", []*Node{} }, - &Node{ "Pointer", "*", []*Node{} } } } } } } } + n = &Node{"TypeName", "", []*Node{ + &Node{"TypedefName", "id", []*Node{}}, + &Node{"GenericList", "", []*Node{ + &Node{"Generic", "", []*Node{ + &Node{"TypedefName", "ObjectType", []*Node{}}, + &Node{"Pointer", "*", []*Node{}}}}}}}} chk_newtype() - tp = NewType(n,"MyClass") - chk(tp.CType(),"NSObject*") + tp = NewType(n, "MyClass") + chk(tp.CType(), "NSObject*") chk(tp.String(), -` '' + ` '' - 'id' - '' -- '' --- 'MyClass' --- '*' `) - x,_ := clean(nil,"MyClass") - chk(x,nil) - SetSuper("NSString","NSObject") - chk(Super("NSString"),"NSObject") + x, _ := clean(nil, "MyClass") + chk(x, nil) + SetSuper("NSString", "NSObject") + chk(Super("NSString"), "NSObject") tp2 := tp.CloneToClass("NSObject") - chk(tp2.Class,"NSObject") + chk(tp2.Class, "NSObject") str = "you can't parse this" - tp = NewTypeFromString(str,"") + tp = NewTypeFromString(str, "") tp2 = &Type{} - chk(tp,tp2) + chk(tp, tp2) str = "id" - tp2 = NewTypeFromString(str,"MyClass") - chk(tp.BaseType(),tp) + tp2 = NewTypeFromString(str, "MyClass") + chk(tp.BaseType(), tp) str = "id*" - tp = NewTypeFromString(str,"MyClass") - chk(tp.BaseType(),tp2) - chk(tp.PointsTo(),tp2) - AddTypedef("myTypedef",tp) + tp = NewTypeFromString(str, "MyClass") + chk(tp.BaseType(), tp2) + chk(tp.PointsTo(), tp2) + AddTypedef("myTypedef", tp) str = "myTypedef" - n = &Node{ "TypeName", "", []*Node{ - &Node{ "TypedefName", "myTypedef", []*Node{} } } } + n = &Node{"TypeName", "", []*Node{ + &Node{"TypedefName", "myTypedef", []*Node{}}}} chk_newtype() - chk(tp.PointsTo(),tp2) - chk(tp2.PointsTo(),nil) + chk(tp.PointsTo(), tp2) + chk(tp2.PointsTo(), nil) - chk(tp.GoTypeDecl(),` + chk(tp.GoTypeDecl(), ` type MyTypedef **C.NSObject `) - chk(tp2.GoTypeDecl(),"") - chk(nst.GoTypeDecl(),` + chk(tp2.GoTypeDecl(), "") + chk(nst.GoTypeDecl(), ` type NSString C.NSString `) str = "void" - n = &Node{ "TypeName", "", []*Node{ - &Node{ "TypeSpecifier", "void", []*Node{} } } } + n = &Node{"TypeName", "", []*Node{ + &Node{"TypeSpecifier", "void", []*Node{}}}} chk_newtype() - chk(tp.GoTypeDecl(),"") + chk(tp.GoTypeDecl(), "") void := tp str = "BOOL" - n,_ = Parse(str) + n, _ = Parse(str) chk_newtype() bl := tp str = "void**" - n,_ = Parse(str) + n, _ = Parse(str) chk_newtype() - chk(tp.GoType(),"*unsafe.Pointer") - chk(tp.CToGo("var"),"(*unsafe.Pointer)(unsafe.Pointer(var))") + chk(tp.GoType(), "*unsafe.Pointer") + chk(tp.CToGo("var"), "(*unsafe.Pointer)(unsafe.Pointer(var))") voidpp := tp Wrap("NSObject") str = "NSObject*" - n,_ = Parse(str) + n, _ = Parse(str) chk_newtype() - chk(tp.GoType(),"NSObject") + chk(tp.GoType(), "NSObject") Wrap("NSString") - chk(nso.GoTypeDecl(),` + chk(nso.GoTypeDecl(), ` type NSObject interface { Ptr() unsafe.Pointer } `) - chk(nso.GoType(),"NSObject") + chk(nso.GoType(), "NSObject") - chk(nst.GoTypeDecl(),` + chk(nst.GoTypeDecl(), ` type NSString struct { Id } func (o NSString) Ptr() unsafe.Pointer { return o.ptr } func (o Id) NSString() NSString { @@ -192,60 +194,60 @@ func (o Id) NSString() NSString { } `) str = "int(void)" - n,_ = Parse(str) + n, _ = Parse(str) chk_newtype() - chk(tp.IsFunction(),true) - chk(tp.IsFunctionPtr(),false) - chk(tp.ReturnType().CType(),"int") + chk(tp.IsFunction(), true) + chk(tp.IsFunctionPtr(), false) + chk(tp.ReturnType().CType(), "int") str = "int *(void)" - n,_ = Parse(str) + n, _ = Parse(str) chk_newtype() - chk(tp.IsFunction(),true) - chk(tp.ReturnType().CType(),"int*") - chk(tp.ReturnType().GoType(),"*Int") + chk(tp.IsFunction(), true) + chk(tp.ReturnType().CType(), "int*") + chk(tp.ReturnType().GoType(), "*Int") fn := tp - AddTypedef("myTypedef",fn) + AddTypedef("myTypedef", fn) str = "myTypedef" - n,_ = Parse(str) + n, _ = Parse(str) chk_newtype() - chk(tp.IsFunction(),true) - chk(tp.IsFunctionPtr(),false) - chk(tp.ReturnType().CType(),"int*") + chk(tp.IsFunction(), true) + chk(tp.IsFunctionPtr(), false) + chk(tp.ReturnType().CType(), "int*") str = "int (*)(void)" - n,_ = Parse(str) + n, _ = Parse(str) chk_newtype() - chk(tp.IsFunction(),false) - chk(tp.IsPointer(),true) - chk(tp.IsFunctionPtr(),true) - chk(tp.ReturnType(),nil) + chk(tp.IsFunction(), false) + chk(tp.IsPointer(), true) + chk(tp.IsFunctionPtr(), true) + chk(tp.ReturnType(), nil) fnptr := tp - AddTypedef("myTypedef",fnptr) + AddTypedef("myTypedef", fnptr) str = "myTypedef" - n,_ = Parse(str) + n, _ = Parse(str) chk_newtype() - chk(tp.IsFunction(),false) - chk(tp.IsPointer(),true) - chk(tp.IsFunctionPtr(),true) - chk(tp.ReturnType(),nil) + chk(tp.IsFunction(), false) + chk(tp.IsPointer(), true) + chk(tp.IsFunctionPtr(), true) + chk(tp.ReturnType(), nil) - chk(tp.IsValist(),false) + chk(tp.IsValist(), false) str = "__va_list_tag" - n,_ = Parse(str) + n, _ = Parse(str) chk_newtype() - chk(tp.IsValist(),true) + chk(tp.IsValist(), true) str = "GoToC" var rtype *Type - ptypes := []*Type{ nst, nso, tint, voidpp } - pnames := []string{"p1","p2","p3", "p4"} - snames := []string{"","","",""} + ptypes := []*Type{nst, nso, tint, voidpp} + pnames := []string{"p1", "p2", "p3", "p4"} + snames := []string{"", "", "", ""} chk_gotoc := func(expected string) { - chk(GoToC("myFun",pnames,snames,rtype,ptypes,false),expected) + chk(GoToC("myFun", pnames, snames, rtype, ptypes, false), expected) } chk_gotoc("") @@ -255,36 +257,36 @@ func (o Id) NSString() NSString { rtype = bl chk_gotoc( -`ret := (C.myFun(p1.Ptr(), p2.Ptr(), (C.int)(p3), unsafe.Pointer(p4))) != 0 + `ret := (C.myFun(p1.Ptr(), p2.Ptr(), (C.int)(p3), unsafe.Pointer(p4))) != 0 return ret`) rtype = voidpp chk_gotoc( -`ret := (*unsafe.Pointer)(unsafe.Pointer(C.myFun(p1.Ptr(), p2.Ptr(), (C.int)(p3), unsafe.Pointer(p4)))) + `ret := (*unsafe.Pointer)(unsafe.Pointer(C.myFun(p1.Ptr(), p2.Ptr(), (C.int)(p3), unsafe.Pointer(p4)))) return ret`) rtype = nst chk_gotoc( -`ret := NSString{} + `ret := NSString{} ret.ptr = C.myFun(p1.Ptr(), p2.Ptr(), (C.int)(p3), unsafe.Pointer(p4)) return ret`) rtype = nso chk_gotoc( -`ret := Id{} + `ret := Id{} ret.ptr = C.myFun(p1.Ptr(), p2.Ptr(), (C.int)(p3), unsafe.Pointer(p4)) return ret`) ptypes[1].Variadic = true chk_gotoc( -`ret := Id{} + `ret := Id{} ret.ptr = C.myFun(p1.Ptr(), unsafe.Pointer(&p2), (C.int)(p3), unsafe.Pointer(p4)) return ret`) ptypes[1].Variadic = false snames[1] = "p2p" chk_gotoc( -`ret := Id{} + `ret := Id{} ret.ptr = C.myFun(p1.Ptr(), p2.Ptr(), (C.int)(p3), unsafe.Pointer(p4)) (*p2) = (*p2)[:cap(*p2)] for i := 0; i < len(*p2); i++ { @@ -298,7 +300,7 @@ func (o Id) NSString() NSString { snames[1] = "" snames[2] = "p3p" chk_gotoc( -`ret := Id{} + `ret := Id{} ret.ptr = C.myFun(p1.Ptr(), p2.Ptr(), unsafe.Pointer(&p3p[0]), unsafe.Pointer(p4)) (*p3) = (*p3)[:cap(*p3)] for i := 0; i < len(*p3); i++ { @@ -309,8 +311,8 @@ func (o Id) NSString() NSString { (*p3)[i].ptr = p3p[i] } return ret`) - chk(GoToC("myFun",pnames,snames,rtype,ptypes,true), -`ret := Id{} + chk(GoToC("myFun", pnames, snames, rtype, ptypes, true), + `ret := Id{} ret.ptr = C.myFun(p1.Ptr(), p2.Ptr(), unsafe.Pointer(&p3p[0]), (**C.void)(p4)) (*p3) = (*p3)[:cap(*p3)] for i := 0; i < len(*p3); i++ { diff --git a/types/cparser.go b/types/cparser.go index d2e9080..361f001 100644 --- a/types/cparser.go +++ b/types/cparser.go @@ -18,14 +18,14 @@ func init() { //memoize the TypeName function for performance cache := map[string]*Node{} TypeName = func(s string, n *Node) (string, *Node) { - if n2,ok := cache[s]; ok { - return "",n2 + if n2, ok := cache[s]; ok { + return "", n2 } - s2,n2 := _TypeName(s,n) + s2, n2 := _TypeName(s, n) if s2 == "" && cacheable(s) { cache[s] = n2 } - return s2,n2 + return s2, n2 } //for debug purposes, the following line can be uncommented, which will //memoization memoization @@ -33,57 +33,57 @@ func init() { } func MethodSignature(s string, n *Node) (string, *Node) { - return ChildOf(NewNode("MethodSignature"),Seq( + return ChildOf(NewNode("MethodSignature"), Seq( Parenthesized(TypeName), Identifier, Opt(MethodParameterList), - ))(s,n) + ))(s, n) } func MethodParameterList(s string, n *Node) (string, *Node) { return Seq( FirstMethodParameter, ZeroOrMore(MethodParameter), - )(s,n) + )(s, n) } func FirstMethodParameter(s string, n *Node) (string, *Node) { - return ChildOf(NewNode("MethodParameter"),Seq( + return ChildOf(NewNode("MethodParameter"), Seq( Lit(":"), Parenthesized(TypeName), Identifier, - ))(s,n) + ))(s, n) } func MethodParameter(s string, n *Node) (string, *Node) { - return ChildOf(NewNode("MethodParameter"),Seq( + return ChildOf(NewNode("MethodParameter"), Seq( Identifier, Lit(":"), Parenthesized(TypeName), Identifier, - ))(s,n) + ))(s, n) } func _TypeName(s string, n *Node) (string, *Node) { - return ChildOf(NewNode("TypeName"),Seq( + return ChildOf(NewNode("TypeName"), Seq( SpecifierQualifierList, Opt(AbstractDeclarator), - ))(s,n) + ))(s, n) } func AbstractDeclarator(s string, n *Node) (string, *Node) { return OneOf(Seq( - Opt(Pointer), - OneOrMore(DirectAbstractDeclarator)), + Opt(Pointer), + OneOrMore(DirectAbstractDeclarator)), Pointer, Block, - )(s,n) + )(s, n) } func ParenAbstractDeclarator(s string, n *Node) (string, *Node) { return ChildOf(NewNode("Parenthesized"), - Parenthesized(AbstractDeclarator), - )(s,n) + Parenthesized(AbstractDeclarator), + )(s, n) } func ArrayDeclarator(s string, n *Node) (string, *Node) { @@ -95,26 +95,26 @@ func ArrayDeclarator(s string, n *Node) (string, *Node) { ChildOf(NewNode("Array"), Bracketed(Seq( Opt(TypeQualifierList), - NodeNamed("Length",Regexp(`[\d]+|\*`))))), + NodeNamed("Length", Regexp(`[\d]+|\*`))))), ChildOf(NewNode("Array"), Bracketed(Seq( Word("static"), Opt(TypeQualifierList), - NodeNamed("Length",Regexp(`[\d]+`))))), + NodeNamed("Length", Regexp(`[\d]+`))))), ChildOf(NewNode("Array"), Bracketed(Seq( Opt(TypeQualifierList), Word("static"), - NodeNamed("Length",Regexp(`[\d]+`))))), - )(s,n) + NodeNamed("Length", Regexp(`[\d]+`))))), + )(s, n) } func FunctionDeclarator(s string, n *Node) (string, *Node) { return ChildOf(NewNode("Function"), - Parenthesized(Opt(ParameterList)), - )(s,n) + Parenthesized(Opt(ParameterList)), + )(s, n) } func DirectAbstractDeclarator(s string, n *Node) (string, *Node) { @@ -122,100 +122,100 @@ func DirectAbstractDeclarator(s string, n *Node) (string, *Node) { ParenAbstractDeclarator, ArrayDeclarator, FunctionDeclarator, - )(s,n) + )(s, n) } func ParameterList(s string, n *Node) (string, *Node) { return Seq( - Opt(OneOrMore(Seq(ParameterDeclaration,Lit(",")))), + Opt(OneOrMore(Seq(ParameterDeclaration, Lit(",")))), ParameterDeclaration, - )(s,n) + )(s, n) } func ParameterDeclaration(s string, n *Node) (string, *Node) { - return ChildOf(NewNode("ParameterDeclaration"),OneOf( - NodeNamed("Ellipsis",Lit("...")), - Seq(DeclarationSpecifiers,Declarator), - Seq(DeclarationSpecifiers,Opt(AbstractDeclarator)), - ))(s,n) + return ChildOf(NewNode("ParameterDeclaration"), OneOf( + NodeNamed("Ellipsis", Lit("...")), + Seq(DeclarationSpecifiers, Declarator), + Seq(DeclarationSpecifiers, Opt(AbstractDeclarator)), + ))(s, n) } func DeclarationSpecifiers(s string, n *Node) (string, *Node) { return OneOf( - Seq(StorageClassSpecifier,Opt(DeclarationSpecifiers)), - Seq(TypeSpecifier,Opt(DeclarationSpecifiers)), - Seq(StructOrUnionSpecifier,Opt(DeclarationSpecifiers)), - Seq(TypeQualifier,Opt(DeclarationSpecifiers)), - Seq(TypedefName,Opt(DeclarationSpecifiers)), + Seq(StorageClassSpecifier, Opt(DeclarationSpecifiers)), + Seq(TypeSpecifier, Opt(DeclarationSpecifiers)), + Seq(StructOrUnionSpecifier, Opt(DeclarationSpecifiers)), + Seq(TypeQualifier, Opt(DeclarationSpecifiers)), + Seq(TypedefName, Opt(DeclarationSpecifiers)), // Seq(FunctionSpecifier,Opt(DeclarationSpecifiers)), - )(s,n) + )(s, n) } func StorageClassSpecifier(s string, n *Node) (string, *Node) { - return NodeNamed("StorageClassSpecifier",OneOf( + return NodeNamed("StorageClassSpecifier", OneOf( Word("typedef"), Word("extern"), Word("static"), Word("auto"), Word("register"), - ))(s,n) + ))(s, n) } func Declarator(s string, n *Node) (string, *Node) { return ChildOf(NewNode("Declarator"), - Seq(ZeroOrMore(Pointer), DirectDeclarator))(s,n) + Seq(ZeroOrMore(Pointer), DirectDeclarator))(s, n) } func DirectDeclarator(s string, n *Node) (string, *Node) { return OneOf( - Identifier, - Parenthesized(Declarator), - // INCOMPLETE - )(s,n) + Identifier, + Parenthesized(Declarator), + // INCOMPLETE + )(s, n) } func NullableAnnotation(s string, n *Node) (string, *Node) { - return NodeNamed("NullableAnnotation",OneOf( + return NodeNamed("NullableAnnotation", OneOf( Word("_Nullable"), Word("_Nonnull"), Word("_Null_unspecified"), - ))(s,n) + ))(s, n) } func Pointer(s string, n *Node) (string, *Node) { return Seq( - NodeNamed("Pointer",Lit("*")), + NodeNamed("Pointer", Lit("*")), Opt(TypeQualifierList), Opt(NullableAnnotation), Opt(Pointer), - )(s,n) + )(s, n) } //FIXME: not sure how correct this is... func Block(s string, n *Node) (string, *Node) { return Seq( - NodeNamed("Block",Lit("^")), + NodeNamed("Block", Lit("^")), Opt(NullableAnnotation), - )(s,n) + )(s, n) } func TypeQualifierList(s string, n *Node) (string, *Node) { - return OneOrMore(TypeQualifier)(s,n) + return OneOrMore(TypeQualifier)(s, n) } func SpecifierQualifierList(s string, n *Node) (string, *Node) { return NodeNamed("SpecifierQualifierList", OneOf( - Seq(TypeSpecifier,Opt(SpecifierQualifierList)), - Seq(StructOrUnionSpecifier,Opt(SpecifierQualifierList)), - Seq(TypedefName,Opt(SpecifierQualifierList)), - Seq(TypeQualifier,Opt(SpecifierQualifierList)), + Seq(TypeSpecifier, Opt(SpecifierQualifierList)), + Seq(StructOrUnionSpecifier, Opt(SpecifierQualifierList)), + Seq(TypedefName, Opt(SpecifierQualifierList)), + Seq(TypeQualifier, Opt(SpecifierQualifierList)), ), - )(s,n) + )(s, n) } func TypeSpecifier(s string, n *Node) (string, *Node) { - return NodeNamed("TypeSpecifier",OneOf( + return NodeNamed("TypeSpecifier", OneOf( Word("void"), Word("char"), Word("short"), @@ -228,69 +228,68 @@ func TypeSpecifier(s string, n *Node) (string, *Node) { Word("_Bool"), Word("_Complex"), EnumSpecifier, - ))(s,n) + ))(s, n) } func TypeQualifier(s string, n *Node) (string, *Node) { - return NodeNamed("TypeQualifier",OneOf( + return NodeNamed("TypeQualifier", OneOf( Word("const"), Word("restrict"), Word("volatile"), - ))(s,n) + ))(s, n) } func StructOrUnionSpecifier(s string, n *Node) (string, *Node) { return OneOf( -// Seq(StructOrUnion,Opt(Identifier),StructDeclarationList), - Nest(StructOrUnion,Identifier), - )(s,n) + // Seq(StructOrUnion,Opt(Identifier),StructDeclarationList), + Nest(StructOrUnion, Identifier), + )(s, n) } func StructOrUnion(s string, n *Node) (string, *Node) { return OneOf( - NodeNamed("Struct",Word("struct")), - NodeNamed("Union",Word("union")))(s,n) + NodeNamed("Struct", Word("struct")), + NodeNamed("Union", Word("union")))(s, n) } func EnumSpecifier(s string, n *Node) (string, *Node) { return Nest( - NodeNamed("Enum",Word("enum")),Identifier)(s,n) + NodeNamed("Enum", Word("enum")), Identifier)(s, n) } func Generic(s string, n *Node) (string, *Node) { - return NodeNamed("Generic",TypeName)(s,n) + return NodeNamed("Generic", TypeName)(s, n) } func GenericList(s string, n *Node) (string, *Node) { - return ChildOf(NewNode("GenericList"),Seq( + return ChildOf(NewNode("GenericList"), Seq( Generic, - ZeroOrMore(Seq(Lit(","),Generic)), - ))(s,n) + ZeroOrMore(Seq(Lit(","), Generic)), + ))(s, n) } func BareTypedefName(s string, n *Node) (string, *Node) { - return NodeNamed("TypedefName",Identifier)(s,n) + return NodeNamed("TypedefName", Identifier)(s, n) } func TypedefName(s string, n *Node) (string, *Node) { return Seq( - Opt(NodeNamed("KindQualifier",Lit("__kindof"))), + Opt(NodeNamed("KindQualifier", Lit("__kindof"))), BareTypedefName, Opt(AngBracketed(GenericList)), Opt(NullableAnnotation), - )(s,n) + )(s, n) } func Identifier(s string, n *Node) (string, *Node) { - s2,n2 := NodeNamed("Identifier", - Regexp(`[_a-zA-Z][_0-9a-zA-Z]*`))(s,n) + s2, n2 := NodeNamed("Identifier", + Regexp(`[_a-zA-Z][_0-9a-zA-Z]*`))(s, n) if n2 == nil { - return s,nil + return s, nil } if reservedwords.MatchString(n2.Content) { - dbg("Identifier '%s' contains reserved word\n",n2.Content) - return s,nil + dbg("Identifier '%s' contains reserved word\n", n2.Content) + return s, nil } - return s2,n2 + return s2, n2 } - diff --git a/types/main.go b/types/main.go index 7648586..80da93c 100644 --- a/types/main.go +++ b/types/main.go @@ -10,7 +10,7 @@ var ( func dbg(f string, xs ...interface{}) { if Debug { - fmt.Printf(f,xs...) + fmt.Printf(f, xs...) } } @@ -18,7 +18,7 @@ func (n *Node) HasFunc() bool { if n == nil { return false } - for _,c := range n.Children { + for _, c := range n.Children { if c.Kind == "Function" || c.HasFunc() { return true } @@ -27,10 +27,10 @@ func (n *Node) HasFunc() bool { } func Parse(s string) (*Node, error) { - s2, n := TypeName(s,NewNode("AST")) + s2, n := TypeName(s, NewNode("AST")) //fmt.Printf("%p Parsed %s\n",n,s) if s2 != "" { - return n,fmt.Errorf("Parse failed or incomplete. Remainder: %s",s2) + return n, fmt.Errorf("Parse failed or incomplete. Remainder: %s", s2) } return n, nil } @@ -53,25 +53,26 @@ func (n *Node) stripIndirect(k string) *Node { return nil } ret := NewNode(n.Kind) - cs := append([]*Node{},n.Children...) + cs := append([]*Node{}, n.Children...) - dbg("stripIndirect(): i = %d\n",i) + dbg("stripIndirect(): i = %d\n", i) //Scan backwords skipping TypeQualifier and NullableAnnotation tags - for ;i > 0 && + for ; i > 0 && (cs[i].Kind == "TypeQualifier" || - cs[i].Kind == "NullableAnnotation") ; i-- { } + cs[i].Kind == "NullableAnnotation"); i-- { + } if cs[i].Kind == k { - dbg("stripIndirect(): last node is %s\n",k) + dbg("stripIndirect(): last node is %s\n", k) ret.Children = cs[:i] return ret } if i > 1 && cs[i-1].Kind == "Parenthesized" { j := len(cs[i-1].Children) - 1 - for ;j > 0 && + for ; j > 0 && (cs[i-1].Children[j].Kind == "TypeQualifier" || - cs[i-1].Children[j].Kind == "NullableAnnotation"); - j-- { } + cs[i-1].Children[j].Kind == "NullableAnnotation"); j-- { + } if cs[i-1].Children[j].Kind != k { return nil } @@ -121,8 +122,9 @@ func (n *Node) IsStruct() bool { return false } i := 0 - for ; i '' + ` '' - 'int' `) runParseTest(`int`, -` '' + ` '' - 'int' `) runParseTest(`char*`, -` '' + ` '' - 'char' - '*' `) runParseTest(`struct Str`, -` '' + ` '' - 'struct' -- 'Str' `) runParseTest(`uint`, -` '' + ` '' - 'uint' `) runParseTest(`uind`, -` '' + ` '' - 'uind' `) runParseTest(`void ()`, -` '' + ` '' - 'void' - '' `) runParseTest(`void (*)(struct NSRange)`, -` '' + ` '' - 'void' - '' -- '*' @@ -75,7 +75,7 @@ func TestParse(t *testing.T) { ---- 'NSRange' `) runParseTest(`void (* _Nullable)(int)`, -` '' + ` '' - 'void' - '' -- '*' @@ -85,20 +85,20 @@ func TestParse(t *testing.T) { --- 'int' `) runParseTest(`NSRange[3]`, -` '' + ` '' - 'NSRange' - '' -- '3' `) runParseTest(`struct _NSRange[3]`, -` '' + ` '' - 'struct' -- '_NSRange' - '' -- '3' `) runParseTest(`struct _NSRange (*)(int, char[])`, -` '' + ` '' - 'struct' -- '_NSRange' - '' @@ -111,7 +111,7 @@ func TestParse(t *testing.T) { --- '' `) runParseTest(`struct _NSRange (*)(int, char[],NSRange)`, -` '' + ` '' - 'struct' -- '_NSRange' - '' @@ -126,7 +126,7 @@ func TestParse(t *testing.T) { --- 'NSRange' `) runParseTest(`struct _NSRange (*)(int, char[],struct _NSRange)`, -` '' + ` '' - 'struct' -- '_NSRange' - '' @@ -142,22 +142,22 @@ func TestParse(t *testing.T) { ---- '_NSRange' `) runParseTest(`mytype`, -` '' + ` '' - 'mytype' `) runParseTest(`const int`, -` '' + ` '' - 'const' - 'int' `) runParseTest(`int[*]`, -` '' + ` '' - 'int' - '' -- '*' `) runParseTest(`int[3][5]`, -` '' + ` '' - 'int' - '' -- '3' @@ -165,31 +165,31 @@ func TestParse(t *testing.T) { -- '5' `) runParseTest(`int *`, -` '' + ` '' - 'int' - '*' `) runParseTest(`int * _Nonnull`, -` '' + ` '' - 'int' - '*' - '_Nonnull' `) runParseTest(`int **`, -` '' + ` '' - 'int' - '*' - '*' `) runParseTest(`int *[3]`, -` '' + ` '' - 'int' - '*' - '' -- '3' `) runParseTest(`int (*)[3]`, -` '' + ` '' - 'int' - '' -- '*' @@ -197,7 +197,7 @@ func TestParse(t *testing.T) { -- '3' `) runParseTest(`int (*)[*]`, -` '' + ` '' - 'int' - '' -- '*' @@ -205,13 +205,13 @@ func TestParse(t *testing.T) { -- '*' `) runParseTest(`int *()`, -` '' + ` '' - 'int' - '*' - '' `) runParseTest(`int (*)(void)`, -` '' + ` '' - 'int' - '' -- '*' @@ -220,7 +220,7 @@ func TestParse(t *testing.T) { --- 'void' `) runParseTest(`int (*)(int, unsigned int)`, -` '' + ` '' - 'int' - '' -- '*' @@ -232,7 +232,7 @@ func TestParse(t *testing.T) { --- 'int' `) runParseTest(`int (* _Nullable)(int, unsigned int)`, -` '' + ` '' - 'int' - '' -- '*' @@ -245,7 +245,7 @@ func TestParse(t *testing.T) { --- 'int' `) runParseTest(`int (*const [])(unsigned int, ...)`, -` '' + ` '' - 'int' - '' -- '*' @@ -259,7 +259,7 @@ func TestParse(t *testing.T) { --- '...' `) runParseTest(`BOOL (* _Nullable)()`, -` '' + ` '' - 'BOOL' - '' -- '*' @@ -267,7 +267,7 @@ func TestParse(t *testing.T) { - '' `) runParseTest(`BOOL (* _Nullable)(const void * _Nonnull, const void * _Nonnull)`, -` '' + ` '' - 'BOOL' - '' -- '*' @@ -285,7 +285,7 @@ func TestParse(t *testing.T) { --- '_Nonnull' `) runParseTest(`BOOL (* _Nullable)(const void * _Nonnull, const void * _Nonnull, int (* _Nullable)(const void * _Nonnull))`, -` '' + ` '' - 'BOOL' - '' -- '*' @@ -314,7 +314,7 @@ func TestParse(t *testing.T) { ----- '_Nonnull' `) runParseTest(`BOOL (* _Nullable)(const void * _Nonnull, const void * _Nonnull, NSUInteger (* _Nullable)(const void * _Nonnull))`, -` '' + ` '' - 'BOOL' - '' -- '*' @@ -343,7 +343,7 @@ func TestParse(t *testing.T) { ----- '_Nonnull' `) runParseTest(`NSEnumerator * _Nonnull`, -` '' + ` '' - 'NSEnumerator' - '' -- '' @@ -352,7 +352,7 @@ func TestParse(t *testing.T) { - '_Nonnull' `) runParseTest(`NSArray * _Nonnull`, -` '' + ` '' - 'NSArray' - '' -- '' @@ -362,7 +362,7 @@ func TestParse(t *testing.T) { - '_Nonnull' `) runParseTest(`id _Nonnull (^ _Nonnull)(id _Nullable, NSArray * _Nonnull, NSMutableDictionary * _Nullable)`, -` '' + ` '' - 'id' - '_Nonnull' - '' @@ -386,13 +386,13 @@ func TestParse(t *testing.T) { --- '_Nullable' `) runSigTest(`(void)pressed`, -` '' + ` '' - '' -- 'void' - 'pressed' `) runSigTest(`(void)performSelector:(SEL)aSelector target:(id)target argument:(id)arg order:(NSUInteger)order modes:(NSArray *)modes`, -` '' + ` '' - '' -- 'void' - 'performSelector' @@ -432,30 +432,32 @@ func TestFuncs(t *testing.T) { var n *Node var err error f := func(input string, actual, expected interface{}) { - t.Run(fmt.Sprintf("TestFunc%d",i),func (t *testing.T) { + t.Run(fmt.Sprintf("TestFunc%d", i), func(t *testing.T) { if err != nil { - t.Errorf("Error parsing %s\n",input) + t.Errorf("Error parsing %s\n", input) } - if actual == nil && expected == nil { return } - if !reflect.DeepEqual(actual,expected) { - t.Errorf("Test failed for %s\n",input) + if actual == nil && expected == nil { + return + } + if !reflect.DeepEqual(actual, expected) { + t.Errorf("Test failed for %s\n", input) } }) i++ } str := "int*" - n,err = Parse(str) - f(str,n.HasFunc(),false) + n, err = Parse(str) + f(str, n.HasFunc(), false) str = "int (*)(void)" - n,err = Parse(str) - f(str,n.HasFunc(),true) - n,err = nil,nil - f("",n.HasFunc(),false) - f("",n.IsId(),false) - f("",n.IsFunction(),false) - f("",n.IsInstancetype(),false) - f("",n.IsArray(),false) - f("",n.IsStruct(),false) + n, err = Parse(str) + f(str, n.HasFunc(), true) + n, err = nil, nil + f("", n.HasFunc(), false) + f("", n.IsId(), false) + f("", n.IsFunction(), false) + f("", n.IsInstancetype(), false) + f("", n.IsArray(), false) + f("", n.IsStruct(), false) if n.BaseType() != nil { t.Errorf("BaseType() for nil node is not nil\n") } @@ -465,123 +467,122 @@ func TestFuncs(t *testing.T) { if n.ReturnType() != nil { t.Errorf("ReturnType() for nil node is not nil\n") } - f("",n.String(),"") - f("",n.Qualifiers(),"") - f("",n.Annotations(),"") + f("", n.String(), "") + f("", n.Qualifiers(), "") + f("", n.Annotations(), "") str = "int" - n,err = Parse(str) - f(str,n.isIndirect("Pointer"),false) + n, err = Parse(str) + f(str, n.isIndirect("Pointer"), false) if n.ReturnType() != nil { t.Errorf("Return type for non-function is not nil\n") } str = "int*" - n,err = Parse(str) - f(str,n.isIndirect("Pointer"),true) - f(str,n.isIndirect("Array"),false) + n, err = Parse(str) + f(str, n.isIndirect("Pointer"), true) + f(str, n.isIndirect("Array"), false) str = "int* _Nullable" - n,err = Parse(str) - f(str,n.isIndirect("Pointer"),true) + n, err = Parse(str) + f(str, n.isIndirect("Pointer"), true) str = "int* _Nonnull" - n,err = Parse(str) - f(str,n.isIndirect("Pointer"),true) - f(str,n.CType(),"int* _Nonnull") - f(str,n.CTypeSimplified(),"int*") - f(str,n.Annotations(),"_Nonnull") + n, err = Parse(str) + f(str, n.isIndirect("Pointer"), true) + f(str, n.CType(), "int* _Nonnull") + f(str, n.CTypeSimplified(), "int*") + f(str, n.Annotations(), "_Nonnull") - n,err = Parse("int[]") - n2,err2 := Parse("int") + n, err = Parse("int[]") + n2, err2 := Parse("int") if err2 != nil { t.Errorf("Cannot parse int") } - f(str,n.isIndirect("Pointer"),false) - f(str,n.isIndirect("Array"),true) - f(str,n.ArrayOf(),n2) - f(str,n.CType(),"int[]") - f(str,n.CTypeSimplified(),"int[]") + f(str, n.isIndirect("Pointer"), false) + f(str, n.isIndirect("Array"), true) + f(str, n.ArrayOf(), n2) + f(str, n.CType(), "int[]") + f(str, n.CTypeSimplified(), "int[]") str = "const int*[]" - n,err = Parse(str) - f(str,n.isIndirect("Array"),true) - f(str,n.Qualifiers(),"const") + n, err = Parse(str) + f(str, n.isIndirect("Array"), true) + f(str, n.Qualifiers(), "const") str = "int (*)[]" - n,err = Parse(str) - f(str,n.isIndirect("Array"),true) - f(str,n.isIndirect("Pointer"),true) + n, err = Parse(str) + f(str, n.isIndirect("Array"), true) + f(str, n.isIndirect("Pointer"), true) str = "int (* _Nullable * _Nonnull)[]" - n,err = Parse(str) - f(str,n.isIndirect("Pointer"),true) + n, err = Parse(str) + f(str, n.isIndirect("Pointer"), true) str = "int (*)(void)" - n,err = Parse(str) - n2,err2 = Parse("int(void)") + n, err = Parse(str) + n2, err2 = Parse("int(void)") if err2 != nil { t.Errorf("Failed to parse int(void)") } - f(str,n.PointsTo(),n2) - f(str,n.IsPointer(),true) - f(str,n.IsFunction(),false) - f(str,n.CType(),"int (*)(void)") + f(str, n.PointsTo(), n2) + f(str, n.IsPointer(), true) + f(str, n.IsFunction(), false) + f(str, n.CType(), "int (*)(void)") str = "int *(void)" - n,err = Parse(str) - f(str,n.IsFunction(),true) - n2,_ = Parse("int*") - f(str,n.ReturnType(),n2) + n, err = Parse(str) + f(str, n.IsFunction(), true) + n2, _ = Parse("int*") + f(str, n.ReturnType(), n2) str = "__kindof NSRange" - n,err = Parse(str) - f(str,n.IsStruct(),false) - f(str,n.IsInstancetype(),false) + n, err = Parse(str) + f(str, n.IsStruct(), false) + f(str, n.IsInstancetype(), false) str = "struct NSRange" - n,err = Parse(str) - f(str,n.IsStruct(),true) - f(str,n.IsFunction(),false) + n, err = Parse(str) + f(str, n.IsStruct(), true) + f(str, n.IsFunction(), false) str = "id" - n,err = Parse(str) - f(str,n.IsId(),true) - f(str,n.IsPointer(),true) + n, err = Parse(str) + f(str, n.IsId(), true) + f(str, n.IsPointer(), true) str = "int * _Nullable * _Nonnull" - n,err = Parse(str) - n2,_ = Parse("int") - f(str,n.BaseType(),n2) + n, err = Parse(str) + n2, _ = Parse("int") + f(str, n.BaseType(), n2) str = "__kindof id" - n,err = Parse(str) - f(str,n.IsId(),true) - f(str,n.IsPointer(),true) - + n, err = Parse(str) + f(str, n.IsId(), true) + f(str, n.IsPointer(), true) str = "NSArray *" - n,err = Parse(str) - f(str,n.CType(),"NSArray *") - f(str,n.CTypeSimplified(),"NSArray*") + n, err = Parse(str) + f(str, n.CType(), "NSArray *") + f(str, n.CTypeSimplified(), "NSArray*") str = "NSRange *(int, NSRange *)" - n,err = Parse(str) - f(str,n.renameTypedefs("NSRange","struct NSRange"),true) - f(str,n.CType(),"struct NSRange* (int, struct NSRange*)") + n, err = Parse(str) + f(str, n.renameTypedefs("NSRange", "struct NSRange"), true) + f(str, n.CType(), "struct NSRange* (int, struct NSRange*)") str = "int*%&#$" - n,err = Parse(str) + n, err = Parse(str) if err == nil { - fmt.Printf("%s\n",n.String()) - t.Errorf("Parse should have failed for %s\n",str) + fmt.Printf("%s\n", n.String()) + t.Errorf("Parse should have failed for %s\n", str) } var r func(i int) *Node r = func(i int) *Node { n := &Node{} if i > 0 { - n.Children = []*Node{ r(i-1) } + n.Children = []*Node{r(i - 1)} } return n } @@ -595,7 +596,7 @@ func TestFuncs(t *testing.T) { func ExampleDebug() { Debug = true - dbg("one %s two %d","string",15) + dbg("one %s two %d", "string", 15) // Output: one string two 15 Debug = false } diff --git a/types/node.go b/types/node.go index 55ed991..b5921e0 100644 --- a/types/node.go +++ b/types/node.go @@ -10,18 +10,18 @@ import ( type Node struct { Kind, Content string - Children []*Node + Children []*Node } //NewNode returns a new node of kind k with an optional content string as its //second parameter. -func NewNode(k string,cs ...string) *Node { +func NewNode(k string, cs ...string) *Node { c := "" if len(cs) > 0 { c = cs[0] } - ret := &Node{ Kind: k, Content: c, Children: []*Node{} } - dbg("NewNode(%p) %s\n",ret,ret.Kind) + ret := &Node{Kind: k, Content: c, Children: []*Node{}} + dbg("NewNode(%p) %s\n", ret, ret.Kind) return ret } @@ -37,48 +37,58 @@ func (n *Node) String(ls ...int) string { return "(*Node)String(): Recursion too deep" } } - prefix := strings.Repeat("-",level) - ret.WriteString(fmt.Sprintf("%s<%s> '%s'\n",prefix, n.Kind, n.Content)) - for _,c := range n.Children { - ret.WriteString(c.String(level+1)) + prefix := strings.Repeat("-", level) + ret.WriteString(fmt.Sprintf("%s<%s> '%s'\n", prefix, n.Kind, n.Content)) + for _, c := range n.Children { + ret.WriteString(c.String(level + 1)) } return ret.String() } func (n *Node) AddChild(c *Node) *Node { erp := func(s string) { - dbg("(%p)AddChild(%p): %s\n",n,c,s) + dbg("(%p)AddChild(%p): %s\n", n, c, s) os.Exit(-1) } - if n == nil { erp("Called on nil node") } - if c == nil { erp("Child is nil") } - if n == c { erp("Node cannot be its own child") } + if n == nil { + erp("Called on nil node") + } + if c == nil { + erp("Child is nil") + } + if n == c { + erp("Node cannot be its own child") + } // Skip literals - if c.Kind == "Lit" { return n } + if c.Kind == "Lit" { + return n + } - for _,d := range n.Children { + for _, d := range n.Children { if c == d { return n } } - dbg("(%p)AddChild(%p)\n",n,c) - n.Children = append(n.Children,c) + dbg("(%p)AddChild(%p)\n", n, c) + n.Children = append(n.Children, c) return n } //returns true if anything gets renamed -func (n *Node) renameTypedefs(a,b string) (ret bool) { +func (n *Node) renameTypedefs(a, b string) (ret bool) { ret = false - if n == nil { return } - for i,c := range n.Children { + if n == nil { + return + } + for i, c := range n.Children { if c.Kind == "TypedefName" && c.Content == a { ret = true n.Children[i] = NewNode("TypedefName", b) n.Children[i].Children = c.Children } if len(c.Children) > 0 { - ret2 := c.renameTypedefs(a,b) + ret2 := c.renameTypedefs(a, b) ret = ret || ret2 } } @@ -88,9 +98,9 @@ func (n *Node) renameTypedefs(a,b string) (ret bool) { func (n *Node) CTypeSimplified() string { ignore := map[string]bool{ "NullableAnnotation": true, - "KindQualifier": true, - "TypeQualifier": true, - "GenericList": true, + "KindQualifier": true, + "TypeQualifier": true, + "GenericList": true, } return n._CType(ignore) } @@ -106,8 +116,10 @@ func (n *Node) _CType(ignore map[string]bool) string { var ret strings.Builder childStrings := func(n *Node) []string { ret := []string{} - if n == nil { return ret } - for _,c := range n.Children { + if n == nil { + return ret + } + for _, c := range n.Children { if x := c._CType(ignore); x != "" { ret = append(ret, x) } @@ -116,41 +128,40 @@ func (n *Node) _CType(ignore map[string]bool) string { } switch n.Kind { case "Parenthesized": - ret.WriteString("(" + strings.Join(childStrings(n)," ") + ")") + ret.WriteString("(" + strings.Join(childStrings(n), " ") + ")") case "Function": - ret.WriteString("(" + strings.Join(childStrings(n),", ") + ")") + ret.WriteString("(" + strings.Join(childStrings(n), ", ") + ")") case "GenericList": - ret.WriteString("<" + strings.Join(childStrings(n),", ") + ">") + ret.WriteString("<" + strings.Join(childStrings(n), ", ") + ">") case "Array": - ret.WriteString("[" + strings.Join(childStrings(n)," ") + "]") + ret.WriteString("[" + strings.Join(childStrings(n), " ") + "]") default: ret.WriteString(n.Content) - cc := strings.Join(childStrings(n)," ") + cc := strings.Join(childStrings(n), " ") if n.Content != "" && cc != "" { ret.WriteString(" ") } ret.WriteString(cc) } s := ret.String() - s = strings.ReplaceAll(s," *","*") - s = strings.ReplaceAll(s," [","[") - s = strings.ReplaceAll(s,") (",")(") + s = strings.ReplaceAll(s, " *", "*") + s = strings.ReplaceAll(s, " [", "[") + s = strings.ReplaceAll(s, ") (", ")(") return s } - func (n *Node) Qualifiers() string { if n == nil { return "" } ret := []string{} - for _,c := range n.Children { + for _, c := range n.Children { switch c.Kind { case "TypeQualifier": - ret = append(ret,c.Content) + ret = append(ret, c.Content) } } - return strings.Join(ret," ") + return strings.Join(ret, " ") } func (n *Node) Annotations() string { @@ -158,11 +169,11 @@ func (n *Node) Annotations() string { return "" } ret := []string{} - for _,c := range n.Children { + for _, c := range n.Children { switch c.Kind { case "NullableAnnotation": - ret = append(ret,c.Content) + ret = append(ret, c.Content) } } - return strings.Join(ret," ") + return strings.Join(ret, " ") } diff --git a/wrap/main.go b/wrap/main.go index e469c56..70fa8a6 100644 --- a/wrap/main.go +++ b/wrap/main.go @@ -16,51 +16,60 @@ import ( var ( Debug = false -// Arc flag is for debugging only, your builds will break if you turn it on - Arc = false + // Arc flag is for debugging only, your builds will break if you turn it on + Arc = false Autorelease = false + Gogc = false ) type Wrapper struct { - Package string - Interfaces map[string]*Interface - Functions map[string]*Method - NamedEnums map[string]*Enum - AnonEnums []*Enum - Delegates map[string]map[string][]string - Subclasses map[string]*Subclass - Protocols map[string]*Protocol - Frameworks []string + Package string + Interfaces map[string]*Interface + Functions map[string]*Method + NamedEnums map[string]*Enum + AnonEnums []*Enum + Delegates map[string]map[string][]string + Subclasses map[string]*Subclass + Protocols map[string]*Protocol + Frameworks []string Frameworkdirs []string - Pragmas []string + Pragmas []string - cgoFlags strings.Builder // put cGo directives here - cImports strings.Builder // put C imports and sysimports here - cCode strings.Builder // put cGo code here - goTypes strings.Builder // put Go type declarations here - goConst strings.Builder // put Go constants (from C enums) here - goCode strings.Builder // put Go code here + cgoFlags strings.Builder // put cGo directives here + cImports strings.Builder // put C imports and sysimports here + goImports map[string]bool // put required go imports here + cCode strings.Builder // put cGo code here + goTypes strings.Builder // put Go type declarations here + goConst strings.Builder // put Go constants (from C enums) here + goCode strings.Builder // put Go code here goExports strings.Builder // put exported Go functions here goHelpers strings.Builder // put Go helper functions here - ProcessedTypes map[string]bool + ProcessedTypes map[string]bool ProcessedClassMethods map[string]bool - Vaargs int + Vaargs int } func NewWrapper(debug bool) *Wrapper { Debug = debug - if Debug { fmt.Println("// Debug mode") } + if Debug { + fmt.Println("// Debug mode") + } ret := &Wrapper{ - Interfaces: map[string]*Interface{}, - Functions: map[string]*Method{}, - NamedEnums: map[string]*Enum{}, - AnonEnums: []*Enum{}, - Protocols: map[string]*Protocol{}, - Subclasses: map[string]*Subclass{}, - ProcessedTypes: map[string]bool{}, + Interfaces: map[string]*Interface{}, + Functions: map[string]*Method{}, + NamedEnums: map[string]*Enum{}, + AnonEnums: []*Enum{}, + Protocols: map[string]*Protocol{}, + Subclasses: map[string]*Subclass{}, + ProcessedTypes: map[string]bool{}, ProcessedClassMethods: map[string]bool{}, - Vaargs: 16, + Vaargs: 16, + goImports: map[string]bool{}, + } + ret.goImports["unsafe"] = true + if Gogc { + ret.goImports["runtime"] = true } ret.goTypes.WriteString(` type Id struct { @@ -72,13 +81,13 @@ func (o Id) Ptr() unsafe.Pointer { return o.ptr } } func (w *Wrapper) Import(ss []string) { - for _,s := range ss { + for _, s := range ss { w.cImports.WriteString("\n#import \"" + s + "\"\n") } } func (w *Wrapper) SysImport(ss []string) { - for _,s := range ss { + for _, s := range ss { w.cImports.WriteString("\n#import <" + s + ">\n") } } @@ -88,28 +97,28 @@ func (w *Wrapper) Delegate(ds map[string]map[string][]string) { } func (w *Wrapper) Subclass(ds map[string]map[string][]string) { - for k,v := range ds { + for k, v := range ds { sc := &Subclass{ - Overrides: []string{}, + Overrides: []string{}, NewMethods: []string{}, } if len(ds) == 0 { - fmt.Printf("No superclass specified for subclass %s\n",k) + fmt.Printf("No superclass specified for subclass %s\n", k) os.Exit(-1) } if len(ds) > 1 { - fmt.Printf("Multiple inheritance not permitted for subclass %s\n",k) + fmt.Printf("Multiple inheritance not permitted for subclass %s\n", k) os.Exit(-1) } sc.Name = k - for x,y := range(v) { + for x, y := range v { sc.Super = x - for _,m := range y { + for _, m := range y { switch m[0] { - case '-','+': - sc.NewMethods = append(sc.NewMethods,m) + case '-', '+': + sc.NewMethods = append(sc.NewMethods, m) default: - sc.Overrides = append(sc.Overrides,m) + sc.Overrides = append(sc.Overrides, m) } } } @@ -118,46 +127,46 @@ func (w *Wrapper) Subclass(ds map[string]map[string][]string) { } type Subclass struct { - Name,Super string - Overrides []string - NewMethods []string + Name, Super string + Overrides []string + NewMethods []string } type Property struct { Name, Attr string - Type *types.Type + Type *types.Type } type Parameter struct { Pname, Vname string - Type *types.Type + Type *types.Type } type Method struct { Name, GoName, Class, GoClass string - Type *types.Type - ClassMethod bool - Parameters []*Parameter + Type *types.Type + ClassMethod bool + Parameters []*Parameter } //Fully disambiguated method name (m.GoName + all parameter names) func (m *Method) LongName() string { ret := m.GoName - for _,p := range m.Parameters { + for _, p := range m.Parameters { ret = ret + p.Pname } return ret } func (m *Method) HasUnsupportedType() bool { - return m.Type.IsFunction() || + return m.Type.IsFunction() || m.Type.IsFunctionPtr() || m.hasUnsupportedParam() } type Enum struct { - Name string - Type *types.Type + Name string + Type *types.Type Constants []string } @@ -166,13 +175,13 @@ type Protocol struct { } type MethodCollection struct { - Class string + Class string Methods []*Method } func NewMethodCollection(class string) *MethodCollection { ret := &MethodCollection{ - Class: class, + Class: class, Methods: []*Method{}, } return ret @@ -180,30 +189,30 @@ func NewMethodCollection(class string) *MethodCollection { type ByParams []*Method -func (a ByParams) Len() int { return len(a) } -func (a ByParams) Swap(i,j int) { a[i], a[j] = a[j], a[i] } +func (a ByParams) Len() int { return len(a) } +func (a ByParams) Swap(i, j int) { a[i], a[j] = a[j], a[i] } func (a ByParams) Less(i, j int) bool { return len(a[i].Parameters) < len(a[j].Parameters) } //Disambiguate overloaded method names func Disambiguate(mc *MethodCollection) { lst := map[string][]*Method{} - for _,m := range mc.Methods { + for _, m := range mc.Methods { lst2 := lst[m.Name] if lst2 == nil { lst2 = []*Method{m} - } else { - lst2 = append(lst2,m) + } else { + lst2 = append(lst2, m) } lst[m.Name] = lst2 } mc.Methods = []*Method{} used := map[string]bool{} - for _,v := range lst { + for _, v := range lst { sort.Sort(ByParams(v)) - for _,m := range v { + for _, m := range v { if len(v) < 2 || len(m.Parameters) < 2 { if !used[m.Name] { - mc.Methods = append(mc.Methods,m) + mc.Methods = append(mc.Methods, m) used[m.Name] = true } continue @@ -215,12 +224,11 @@ func Disambiguate(mc *MethodCollection) { } used[pname] = true m.GoName = strings.Title(pname) - mc.Methods = append(mc.Methods,m) + mc.Methods = append(mc.Methods, m) } } } - //isVoid() returns true if the method has no return value. func (m Method) isVoid() bool { return m.Type.CType() == "void" @@ -228,7 +236,7 @@ func (m Method) isVoid() bool { //hasUnsupportedParam() returns true if a method has a function as a parameter. func (m Method) hasUnsupportedParam() bool { - for _,p := range m.Parameters { + for _, p := range m.Parameters { if p.Type.IsFunction() || p.Type.IsFunctionPtr() { return true } @@ -239,14 +247,14 @@ func (m Method) hasUnsupportedParam() bool { return false } -func (w Wrapper) cparamlist(m *Method) (string,string,string) { - ns := make([]string,0) - ret := make([]string,0) +func (w Wrapper) cparamlist(m *Method) (string, string, string) { + ns := make([]string, 0) + ret := make([]string, 0) tps := []string{"void*"} if !m.ClassMethod { - ret = append(ret,"void* o") + ret = append(ret, "void* o") } - for _,p := range m.Parameters { + for _, p := range m.Parameters { var tp string wp := types.ShouldWrap(p.Type.GoType()) if wp || p.Type.IsPointer() || p.Type.Variadic { @@ -254,11 +262,11 @@ func (w Wrapper) cparamlist(m *Method) (string,string,string) { } else { tp = p.Type.CType() } - ns = append(ns,p.Vname) - ret = append(ret,fmt.Sprintf("%s %s",tp,p.Vname)) - tps = append(tps,tp) + ns = append(ns, p.Vname) + ret = append(ret, fmt.Sprintf("%s %s", tp, p.Vname)) + tps = append(tps, tp) } - return strings.Join(ns,", "),strings.Join(ret,", "),strings.Join(tps,", ") + return strings.Join(ns, ", "), strings.Join(ret, ", "), strings.Join(tps, ", ") } func (w Wrapper) objcparamlist(m *Method) string { @@ -267,54 +275,56 @@ func (w Wrapper) objcparamlist(m *Method) string { } first := true ret := []string{} - for _,p := range m.Parameters { + for _, p := range m.Parameters { if first && !p.Type.Variadic { - ret = append(ret,m.Name + ":" + p.Vname) + ret = append(ret, m.Name+":"+p.Vname) first = false } else { if p.Type.Variadic { str := []string{p.Pname + ", arr[0]"} for i := 1; i < w.Vaargs; i++ { - str = append(str,"arr["+strconv.Itoa(i)+"]") + str = append(str, "arr["+strconv.Itoa(i)+"]") } - str = append(str,"nil") - ret = append(ret, strings.Join(str,", ")) + str = append(str, "nil") + ret = append(ret, strings.Join(str, ", ")) } else { - ret = append(ret, p.Pname + ":" + p.Vname) + ret = append(ret, p.Pname+":"+p.Vname) } } } - return strings.Join(ret," ") + return strings.Join(ret, " ") } //goreserved is a map telling whether a word is a go reserved word that is not //also a C/Objective-C reserved word. var goreserved map[string]bool = map[string]bool{ "range": true, - "type": true, - "len": true, + "type": true, + "len": true, } -func (w *Wrapper) gpntp(m *Method) ([]string,[]string,[]*types.Type,string) { +func (w *Wrapper) gpntp(m *Method) ([]string, []string, []*types.Type, string) { ns := []string{} tps := []*types.Type{} if !m.ClassMethod { - ns = append(ns,"o") - tps = append(tps,types.NewTypeFromString(m.Class + "*","")) + ns = append(ns, "o") + tps = append(tps, types.NewTypeFromString(m.Class+"*", "")) } - for _,p := range m.Parameters { + for _, p := range m.Parameters { gname := p.Vname if goreserved[gname] { gname = gname + "_" } - ns = append(ns,gname) - tps = append(tps,p.Type) + ns = append(ns, gname) + tps = append(tps, p.Type) } w.processTypes(tps) ret := []string{} - snames := make([]string,len(ns)) + snames := make([]string, len(ns)) i := 0 - if !m.ClassMethod { i = 1 } + if !m.ClassMethod { + i = 1 + } for ; i < len(ns); i++ { gt := tps[i].GoType() if gt == "*Void" { @@ -332,23 +342,24 @@ func (w *Wrapper) gpntp(m *Method) ([]string,[]string,[]*types.Type,string) { gt = "*[]" + x snames[i] = "goSlice" + strconv.Itoa(i) } - ret = append(ret,ns[i] + " " + gt) + ret = append(ret, ns[i]+" "+gt) } - return ns, snames, tps, strings.Join(ret,", ") + return ns, snames, tps, strings.Join(ret, ", ") } - type Interface struct { - Name, GoName string + Name, GoName string InstanceMethods, ClassMethods *MethodCollection - Properties map[string]*Property - Protocols []string // Protocols impelemented by this Interface - ProcessedInstanceMethods map[string]bool + Properties map[string]*Property + Protocols []string // Protocols impelemented by this Interface + ProcessedInstanceMethods map[string]bool } //AddInterface adds an Objective-C interface to a Wrapper. func (w *Wrapper) AddInterface(n *ast.ObjCInterfaceDecl) { - if Debug { fmt.Printf("ast.ObjCInterfaceDecl: %s\n",n.Name) } + if Debug { + fmt.Printf("ast.ObjCInterfaceDecl: %s\n", n.Name) + } w.addIntCat(n.Name, n.Children()) } @@ -364,44 +375,48 @@ func (w *Wrapper) AddCategory(n *ast.ObjCCategoryDecl) { return } } - fmt.Printf("Not adding methods for %s: interface name not found in first child node of category defclaration\n",n.Name) + fmt.Printf("Not adding methods for %s: interface name not found in first child node of category defclaration\n", n.Name) } func (w *Wrapper) AddFunction(n *ast.FunctionDecl) { //treat functions as class methods with no class - tp := types.NewTypeFromString(n.Type,"") + tp := types.NewTypeFromString(n.Type, "") m := &Method{ - Name: n.Name, - GoName: strings.Title(n.Name), - Type: tp.ReturnType(), - Class: "", + Name: n.Name, + GoName: strings.Title(n.Name), + Type: tp.ReturnType(), + Class: "", ClassMethod: true, - Parameters: []*Parameter{}, + Parameters: []*Parameter{}, } f := tp.Node.Children[len(tp.Node.Children)-1] // Function node if f.Kind != "Function" { //fmt.Printf("AddFunction(%s): not a function -- Node type is %s\n%s",n.Name,f.Kind,tp.String()) return } - if Debug { fmt.Printf("FunctionDecl: %s (%s) %s\n",n.Type,m.Type.CType(),n.Name) } + if Debug { + fmt.Printf("FunctionDecl: %s (%s) %s\n", n.Type, m.Type.CType(), n.Name) + } i := 0 - for _,c := range n.Children() { + for _, c := range n.Children() { switch x := c.(type) { case *ast.ParmVarDecl: p := &Parameter{ Vname: x.Name, - Type: types.NewTypeFromString(x.Type,""), + Type: types.NewTypeFromString(x.Type, ""), } - m.Parameters = append(m.Parameters,p) + m.Parameters = append(m.Parameters, p) i++ - if Debug { fmt.Printf(" %s\n",p.Type.CType()) } + if Debug { + fmt.Printf(" %s\n", p.Type.CType()) + } case *ast.Variadic: p := &Parameter{ Vname: "object", - Type: types.NewTypeFromString("NSObject*",""), + Type: types.NewTypeFromString("NSObject*", ""), } p.Type.Variadic = true - m.Parameters = append(m.Parameters,p) + m.Parameters = append(m.Parameters, p) i++ } } @@ -411,26 +426,30 @@ func (w *Wrapper) AddFunction(n *ast.FunctionDecl) { func (w *Wrapper) AddProtocol(n *ast.ObjCProtocolDecl) { p := w.Protocols[n.Name] if p == nil { - if Debug { fmt.Printf("Adding protocol %s\n",n.Name) } + if Debug { + fmt.Printf("Adding protocol %s\n", n.Name) + } p = &Protocol{ - ClassMethods: NewMethodCollection(n.Name), + ClassMethods: NewMethodCollection(n.Name), InstanceMethods: NewMethodCollection(n.Name), } } - if Debug { fmt.Printf("Protocol %s\n",n.Name) } - for _,c := range n.Children() { + if Debug { + fmt.Printf("Protocol %s\n", n.Name) + } + for _, c := range n.Children() { switch x := c.(type) { case *ast.ObjCMethodDecl: if Arc { switch x.Name { - case "retain","release","autorelease": + case "retain", "release", "autorelease": continue } } if x.ClassMethod { - w.AddMethod(p.ClassMethods,x) + w.AddMethod(p.ClassMethods, x) } else { - w.AddMethod(p.InstanceMethods,x) + w.AddMethod(p.InstanceMethods, x) } } } @@ -441,71 +460,85 @@ func (w *Wrapper) AddProtocol(n *ast.ObjCProtocolDecl) { func (w *Wrapper) AddMethod(p *MethodCollection, x *ast.ObjCMethodDecl) { m := &Method{ - Name: x.Name, - GoName: strings.Title(x.Name), - Type: types.NewTypeFromString(x.Type,p.Class), - Class: p.Class, - GoClass: strings.Title(p.Class), + Name: x.Name, + GoName: strings.Title(x.Name), + Type: types.NewTypeFromString(x.Type, p.Class), + Class: p.Class, + GoClass: strings.Title(p.Class), ClassMethod: x.ClassMethod, } - if Debug { fmt.Printf(" -- Method %s\n",m.Name) } + if Debug { + fmt.Printf(" -- Method %s\n", m.Name) + } var avail bool - m.Parameters, avail = w.GetParms(x,p.Class) + m.Parameters, avail = w.GetParms(x, p.Class) if avail { - if Debug { fmt.Printf("%s: Adding %s (%d)\n",p.Class,m.Name,len(m.Parameters)) } - p.Methods = append(p.Methods,m) + if Debug { + fmt.Printf("%s: Adding %s (%d)\n", p.Class, m.Name, len(m.Parameters)) + } + p.Methods = append(p.Methods, m) } else { - if Debug { fmt.Printf("--Method %s is not available\n",m.Name) } + if Debug { + fmt.Printf("--Method %s is not available\n", m.Name) + } } } //FIXME: copied from nswrap/main.go, should put this in a utils package func matches(x string, rs []string) bool { - for _,r := range rs { - if m,_ := regexp.MatchString("^" + r + "$",x); m { + for _, r := range rs { + if m, _ := regexp.MatchString("^"+r+"$", x); m { return true } } return false } -func (w *Wrapper) AddEnum(n *ast.EnumDecl,rs []string) { - if n.Name != "" && !matches(n.Name,rs) { +func (w *Wrapper) AddEnum(n *ast.EnumDecl, rs []string) { + if n.Name != "" && !matches(n.Name, rs) { return } - if Debug { fmt.Printf("Adding enum: (%s) %s\n",n.Type,n.Name) } + if Debug { + fmt.Printf("Adding enum: (%s) %s\n", n.Type, n.Name) + } var tp *types.Type a := (*Avail)(&[]AvailAttr{}) if n.Type == "" { tp = nil } else { - tp = types.NewTypeFromString(n.Type,"") - if Debug { fmt.Printf(" type: %s -> %s\n",n.Type,tp.CType()) } + tp = types.NewTypeFromString(n.Type, "") + if Debug { + fmt.Printf(" type: %s -> %s\n", n.Type, tp.CType()) + } } e := &Enum{ - Name: n.Name, // NOTE: may be empty string - Type: tp, + Name: n.Name, // NOTE: may be empty string + Type: tp, Constants: []string{}, } - for _,c := range n.Children() { + for _, c := range n.Children() { switch x := c.(type) { case *ast.AvailabilityAttr, *ast.UnavailableAttr, *ast.DeprecatedAttr: a.Add(x) case *ast.EnumConstantDecl: - if Debug { fmt.Printf("*ast.EnumConstantDecl: (%s) '%s': %s\n",n.Type,n.Name,x.Name) } - if n.Name == "" && !matches(x.Name,rs) { + if Debug { + fmt.Printf("*ast.EnumConstantDecl: (%s) '%s': %s\n", n.Type, n.Name, x.Name) + } + if n.Name == "" && !matches(x.Name, rs) { continue } - e.Constants = append(e.Constants,x.Name) + e.Constants = append(e.Constants, x.Name) } } if a.Available() && len(e.Constants) > 0 { if e.Name == "" { - w.AnonEnums = append(w.AnonEnums,e) + w.AnonEnums = append(w.AnonEnums, e) } else { w.NamedEnums[e.Name] = e } - if Debug { fmt.Printf(" added\n") } + if Debug { + fmt.Printf(" added\n") + } } } @@ -513,10 +546,10 @@ func (w *Wrapper) AddEnum(n *ast.EnumDecl,rs []string) { func (w *Wrapper) addIntCat(name string, ns []ast.Node) { var i *Interface var ok bool - goname := strings.Title(types.NewTypeFromString(name,name).GoType()) + goname := strings.Title(types.NewTypeFromString(name, name).GoType()) types.Wrap(goname) - if i,ok = w.Interfaces[name]; !ok { - i = &Interface{ } + if i, ok = w.Interfaces[name]; !ok { + i = &Interface{} i.Name = name i.GoName = goname i.InstanceMethods = NewMethodCollection(name) @@ -524,28 +557,30 @@ func (w *Wrapper) addIntCat(name string, ns []ast.Node) { i.Protocols = []string{} i.ProcessedInstanceMethods = map[string]bool{} /* - m := &Method{ - Name: "class", - GoName: "Class", - Class: i.Name, - GoClass: i.Name, - Type: types.NewTypeFromString("Class",i.Name), - ClassMethod: true, - Parameters: []*Parameter{}, - } - i.ClassMethods.Methods = []*Method{m} + m := &Method{ + Name: "class", + GoName: "Class", + Class: i.Name, + GoClass: i.Name, + Type: types.NewTypeFromString("Class",i.Name), + ClassMethod: true, + Parameters: []*Parameter{}, + } + i.ClassMethods.Methods = []*Method{m} */ } avail := (*Avail)(&[]AvailAttr{}) mcc := NewMethodCollection(name) mci := NewMethodCollection(name) prots := []string{} - for _,c := range ns { + for _, c := range ns { switch x := c.(type) { case *ast.ObjCPropertyDecl: //FIXME: Properties are not supported, typically there //will be setter/getter methods you can use instead - if Debug { fmt.Printf("ObjCPropertyDecl: %s\n",x.Name) } + if Debug { + fmt.Printf("ObjCPropertyDecl: %s\n", x.Name) + } //p := &Property{ // Name: x.Name, // Type: types.NewTypeFromString(x.Type,name), @@ -555,39 +590,51 @@ func (w *Wrapper) addIntCat(name string, ns []ast.Node) { // i.Properties[p.Name] = p //} case *ast.ObjCMethodDecl: - if Debug { fmt.Printf("ObjCMethodDecl: %s (%s) %s\n",x.Type,name,x.Name) } + if Debug { + fmt.Printf("ObjCMethodDecl: %s (%s) %s\n", x.Type, name, x.Name) + } if name == "NSObject" && x.Name == "initialize" { continue } if x.ClassMethod { - w.AddMethod(mcc,x) + w.AddMethod(mcc, x) } else { - w.AddMethod(mci,x) + w.AddMethod(mci, x) } case *ast.ObjCProtocol: - if Debug { fmt.Printf("ast.ObjCProtocol: %s\n",x.Name) } - prots = append(prots,x.Name) + if Debug { + fmt.Printf("ast.ObjCProtocol: %s\n", x.Name) + } + prots = append(prots, x.Name) case *ast.ObjCInterface: if x.Super { - if Debug { fmt.Printf("ast.ObjCInterface: %s inherits from %s\n",name,x.Name) } - types.SetSuper(name,x.Name) + if Debug { + fmt.Printf("ast.ObjCInterface: %s inherits from %s\n", name, x.Name) + } + types.SetSuper(name, x.Name) } case *ast.ObjCTypeParamDecl: - if Debug { fmt.Printf("ObjCTypeParamDecl: %s = %s\n",x.Name,x.Type) } - types.SetTypeParam(name,x.Name,x.Type) + if Debug { + fmt.Printf("ObjCTypeParamDecl: %s = %s\n", x.Name, x.Type) + } + types.SetTypeParam(name, x.Name, x.Type) case *ast.AvailabilityAttr, *ast.UnavailableAttr, *ast.DeprecatedAttr: avail.Add(x) case *ast.Unknown: - if Debug { fmt.Printf("(*ast.Unkonwn %s: %s)\n",x.Name,x.Content) } - case *ast.ObjCRootClassAttr, *ast.VisibilityAttr, + if Debug { + fmt.Printf("(*ast.Unkonwn %s: %s)\n", x.Name, x.Content) + } + case *ast.ObjCRootClassAttr, *ast.VisibilityAttr, *ast.ObjCIvarDecl, *ast.ArcWeakrefUnavailableAttr, *ast.ObjCExceptionAttr: default: - fmt.Printf("AST parse error: node type is %s\n",reflect.TypeOf(x).String()) + fmt.Printf("AST parse error: node type is %s\n", reflect.TypeOf(x).String()) } } if !avail.Available() { - if Debug { fmt.Printf("-- %s is not available\n",i.Name) } + if Debug { + fmt.Printf("-- %s is not available\n", i.Name) + } return } i.ClassMethods.Methods = append(i.ClassMethods.Methods, mcc.Methods...) @@ -595,47 +642,49 @@ func (w *Wrapper) addIntCat(name string, ns []ast.Node) { i.Protocols = append(i.Protocols, prots...) //Add class methods from super class - var supmethods func(*Interface,string) + var supmethods func(*Interface, string) supmethods = func(i *Interface, s string) { - if sup,ok := w.Interfaces[s]; !ok { + if sup, ok := w.Interfaces[s]; !ok { return } else { //depth first - supmethods(i,types.Super(s)) - for _,m := range sup.ClassMethods.Methods { + supmethods(i, types.Super(s)) + for _, m := range sup.ClassMethods.Methods { m2 := &Method{ - Name: m.Name, - GoName: m.GoName, - Class: i.Name, - GoClass: i.GoName, - Type: m.Type.CloneToClass(i.Name), + Name: m.Name, + GoName: m.GoName, + Class: i.Name, + GoClass: i.GoName, + Type: m.Type.CloneToClass(i.Name), ClassMethod: true, - Parameters: []*Parameter{}, + Parameters: []*Parameter{}, } - for _,p := range m.Parameters { + for _, p := range m.Parameters { p2 := &Parameter{ Pname: p.Pname, Vname: p.Vname, - Type: p.Type.CloneToClass(i.Name), + Type: p.Type.CloneToClass(i.Name), } - m2.Parameters = append(m2.Parameters,p2) + m2.Parameters = append(m2.Parameters, p2) } found := false longname := m2.LongName() - for n,x := range i.ClassMethods.Methods { + for n, x := range i.ClassMethods.Methods { if x.LongName() == longname { i.ClassMethods.Methods[n] = m2 found = true } } if !found { - i.ClassMethods.Methods = append(i.ClassMethods.Methods,m2) + i.ClassMethods.Methods = append(i.ClassMethods.Methods, m2) } } } } - supmethods(i,types.Super(i.Name)) - if Debug { fmt.Println("Add interface ",i.Name) } + supmethods(i, types.Super(i.Name)) + if Debug { + fmt.Println("Add interface ", i.Name) + } Disambiguate(i.ClassMethods) Disambiguate(i.InstanceMethods) w.Interfaces[i.Name] = i @@ -643,7 +692,7 @@ func (w *Wrapper) addIntCat(name string, ns []ast.Node) { type AvailAttr struct { OS, Version string - Deprecated bool + Deprecated bool } type Avail []AvailAttr @@ -651,17 +700,23 @@ type Avail []AvailAttr func (a *Avail) Add(n ast.Node) { switch x := n.(type) { case *ast.AvailabilityAttr: - if Debug { fmt.Printf(" AvailabilityAttr: OS: %s, Version: %s, Deprecated: %t\n",x.OS,x.Version,(x.Unknown1 != "0") || x.IsUnavailable) } - if x.OS != "macos" { return } + if Debug { + fmt.Printf(" AvailabilityAttr: OS: %s, Version: %s, Deprecated: %t\n", x.OS, x.Version, (x.Unknown1 != "0") || x.IsUnavailable) + } + if x.OS != "macos" { + return + } *a = append(*a, AvailAttr{ - OS: x.OS, - Version: x.Version, + OS: x.OS, + Version: x.Version, Deprecated: (x.Unknown1 != "0") || x.IsUnavailable, }) case *ast.UnavailableAttr, *ast.DeprecatedAttr: - if Debug { fmt.Printf(" DeprecatedAttr\n") } + if Debug { + fmt.Printf(" DeprecatedAttr\n") + } *a = append(*a, AvailAttr{ - OS: "macos", Deprecated: true }) + OS: "macos", Deprecated: true}) } } @@ -669,7 +724,7 @@ func (a *Avail) Available() bool { if len(*a) == 0 { return true } - for _,x := range *a { + for _, x := range *a { if x.OS == "macos" && x.Deprecated == false { return true } @@ -680,8 +735,8 @@ func (a *Avail) Available() bool { //GetParms returns the parameters of a method declaration and a bool //indicating whether the given method is available on MacOS and not //deprecated. -func (w *Wrapper) GetParms(n ast.Node,class string) ([]*Parameter,bool) { - ret := make([]*Parameter,0) +func (w *Wrapper) GetParms(n ast.Node, class string) ([]*Parameter, bool) { + ret := make([]*Parameter, 0) avail := (*Avail)(&[]AvailAttr{}) var parms []string switch x := n.(type) { @@ -692,31 +747,33 @@ func (w *Wrapper) GetParms(n ast.Node,class string) ([]*Parameter,bool) { panic("GetParms called with wrong node type") } j := 0 - for _,c := range n.Children() { + for _, c := range n.Children() { switch x := c.(type) { case *ast.ParmVarDecl: p := &Parameter{ Vname: x.Name, - Type: types.NewTypeFromString(x.Type,class), + Type: types.NewTypeFromString(x.Type, class), } if parms != nil { p.Pname = parms[j] } - ret = append(ret,p) + ret = append(ret, p) j++ case *ast.Variadic: //ret[j-1].Type.Variadic = true p := &Parameter{ Vname: "object", - Type: types.NewTypeFromString("NSObject*",""), + Type: types.NewTypeFromString("NSObject*", ""), } p.Type.Variadic = true - ret = append(ret,p) + ret = append(ret, p) j++ case *ast.AvailabilityAttr, *ast.UnavailableAttr, *ast.DeprecatedAttr: avail.Add(x) case *ast.Unknown: - if Debug { fmt.Printf("GetParms(): ast.Unknown: %s\n",x.Name) } + if Debug { + fmt.Printf("GetParms(): ast.Unknown: %s\n", x.Name) + } } } // check that the method is available for this OS and not deprecated @@ -726,22 +783,26 @@ func (w *Wrapper) GetParms(n ast.Node,class string) ([]*Parameter,bool) { return ret, true } -func (w *Wrapper) AddTypedef(n,t string) { - tp := types.NewTypeFromString(t,"") +func (w *Wrapper) AddTypedef(n, t string) { + tp := types.NewTypeFromString(t, "") gt := tp.GoType() - if Debug { fmt.Printf("Typedef %s -> %s\n",n,t) } + if Debug { + fmt.Printf("Typedef %s -> %s\n", n, t) + } if types.ShouldWrap(gt) { - if Debug { fmt.Printf(" processing type for %s (%s)\n",n,gt) } + if Debug { + fmt.Printf(" processing type for %s (%s)\n", n, gt) + } types.Wrap(n) - types.SetSuper(n,gt) - w._processType(tp,"*" + n) + types.SetSuper(n, gt) + w._processType(tp, "*"+n) } else { - types.AddTypedef(n,tp) + types.AddTypedef(n, tp) } } func (w *Wrapper) processTypes(tps []*types.Type) { - for _,tp := range tps { + for _, tp := range tps { w.processType(tp) } } @@ -749,11 +810,13 @@ func (w *Wrapper) processTypes(tps []*types.Type) { func (w *Wrapper) processType(tp *types.Type) { bt := tp.BaseType() gt := bt.GoType() - w._processType(bt,gt) + w._processType(bt, gt) } func (w *Wrapper) _processType(bt *types.Type, gt string) { - if Debug { fmt.Printf("processType: gt = %s bt = %s\n",gt,bt) } + if Debug { + fmt.Printf("processType: gt = %s bt = %s\n", gt, bt) + } if gt == "" { return } @@ -761,7 +824,9 @@ func (w *Wrapper) _processType(bt *types.Type, gt string) { w.processType(bt.PointsTo()) return } - if w.ProcessedTypes[gt] { return } + if w.ProcessedTypes[gt] { + return + } w.ProcessedTypes[gt] = true if gt == "Char" { w.CharHelpers() @@ -777,7 +842,7 @@ func (w *Wrapper) _processType(bt *types.Type, gt string) { } super := types.Super(gt) if super != "" { - tp := types.NewTypeFromString(super,"") + tp := types.NewTypeFromString(super, "") types.Wrap(tp.GoType()) w.processType(tp) } @@ -860,44 +925,46 @@ func Selector(s string) SEL { } func (w *Wrapper) ProcessMethod(m *Method) { - w._processMethod(m,false) + w._processMethod(m, false) } func (w *Wrapper) ProcessMethodForClass(m *Method, class string) { - goclass := strings.Title(types.NewTypeFromString(class,class).GoType()) + goclass := strings.Title(types.NewTypeFromString(class, class).GoType()) m2 := &Method{ Name: m.Name, GoName: m.GoName, Class: class, GoClass: goclass, - Type: m.Type.CloneToClass(class), + Type: m.Type.CloneToClass(class), ClassMethod: m.ClassMethod, - Parameters: make([]*Parameter,len(m.Parameters)), + Parameters: make([]*Parameter, len(m.Parameters)), } - for i,p := range m.Parameters { + for i, p := range m.Parameters { m2.Parameters[i] = &Parameter{ Pname: p.Pname, Vname: p.Vname, Type: p.Type.CloneToClass(class), } } - w._processMethod(m2,false) + w._processMethod(m2, false) } func (w *Wrapper) ProcessFunction(m *Method) { if m.Type.Node.IsId() { - //do not wrap functions that return ID because of CGo struct size bug + //do not wrap functions that return ID because of CGo struct size bug return } - w._processMethod(m,true) + w._processMethod(m, true) } -func (w *Wrapper) _processMethod(m *Method,fun bool) { - if Debug { fmt.Printf(" method: %s (%s)\n", m.Name, m.Type) } +func (w *Wrapper) _processMethod(m *Method, fun bool) { + if Debug { + fmt.Printf(" method: %s (%s)\n", m.Name, m.Type) + } if m.HasUnsupportedType() { return } w.processType(m.Type) gname := m.GoName - gname = strings.ReplaceAll(gname,"_"," ") + gname = strings.ReplaceAll(gname, "_", " ") gname = strings.Title(gname) - gname = strings.ReplaceAll(gname," ","") + gname = strings.ReplaceAll(gname, " ", "") receiver := "" var cname string if fun { @@ -905,7 +972,9 @@ func (w *Wrapper) _processMethod(m *Method,fun bool) { } else { cname = gname } - if Debug { fmt.Printf("Method %s (GoClass %s)\n",cname,m.GoClass) } + if Debug { + fmt.Printf("Method %s (GoClass %s)\n", cname, m.GoClass) + } switch { case !m.ClassMethod: if types.IsGoInterface(m.GoClass) { @@ -919,11 +988,15 @@ func (w *Wrapper) _processMethod(m *Method,fun bool) { //Shorten class method names lens1 := len(m.Class) i := 0 - if len(gname) < len(m.Class) { i = lens1 - len(gname) } - for ; i < lens1; i++ { - if m.Class[i:] == gname[:lens1 - i] { break } + if len(gname) < len(m.Class) { + i = lens1 - len(gname) } - if lens1 - i >= len(gname) { + for ; i < lens1; i++ { + if m.Class[i:] == gname[:lens1-i] { + break + } + } + if lens1-i >= len(gname) { gname = m.GoClass + gname } else { gname = m.GoClass + gname[lens1-i:] @@ -945,7 +1018,7 @@ func (w *Wrapper) _processMethod(m *Method,fun bool) { } else { cmtype = m.Type.CTypeAttrib() } - ns,snames,tps,gplist := w.gpntp(m) + ns, snames, tps, gplist := w.gpntp(m) grtype := m.Type.GoType() if grtype == "Void" { grtype = "" @@ -967,7 +1040,7 @@ func (w *Wrapper) _processMethod(m *Method,fun bool) { } else { i, ok := w.Interfaces[m.Class] if !ok { - fmt.Printf("Can't find interface %s for method %s\n",m.Class,m.Name) + fmt.Printf("Can't find interface %s for method %s\n", m.Class, m.Name) os.Exit(-1) } if i.ProcessedInstanceMethods[gname] { @@ -978,20 +1051,20 @@ func (w *Wrapper) _processMethod(m *Method,fun bool) { w.goCode.WriteString(fmt.Sprintf(` func %s%s(%s) %s { -`,receiver,gname,gplist,grtype)) - lparm := len(tps)-1 +`, receiver, gname, gplist, grtype)) + lparm := len(tps) - 1 if len(tps) > 0 && tps[lparm].Variadic { vn := ns[lparm] vn = vn[:len(vn)-1] ns[lparm] = vn w.goCode.WriteString(fmt.Sprintf( -` var %s [%d]unsafe.Pointer + ` var %s [%d]unsafe.Pointer for i,o := range %ss { %s[i] = o.Ptr() } -`,vn,w.Vaargs,vn,vn)) +`, vn, w.Vaargs, vn, vn)) } - for i,n := range ns { + for i, n := range ns { if snames[i] == "" { continue } @@ -1000,10 +1073,10 @@ func %s%s(%s) %s { for i := 0; i < len(*%s); i++ { %s[i] = (*%s)[i].Ptr() } -`,snames[i],n,n,snames[i],n)) +`, snames[i], n, n, snames[i], n)) } w.goCode.WriteString(` ` + - types.GoToC(cname,ns,snames,m.Type,tps,fun) + "\n}\n") + types.GoToC(cname, ns, snames, m.Type, tps, fun, Gogc) + "\n}\n") cret := "" if !m.isVoid() { @@ -1015,7 +1088,7 @@ func %s%s(%s) %s { } else { cobj = "(" + m.Class + "*)o" } - cns,cntps,_ := w.cparamlist(m) + cns, cntps, _ := w.cparamlist(m) if fun { return } @@ -1025,7 +1098,7 @@ func %s%s(%s) %s { `, cmtype, cname, cntps)) if len(tps) > 0 && tps[lparm].Variadic { w.cCode.WriteString(fmt.Sprintf( -` %s* arr = %s; + ` %s* arr = %s; `, tps[lparm].CType(), ns[lparm])) } switch { @@ -1033,27 +1106,50 @@ func %s%s(%s) %s { w.cCode.WriteString(fmt.Sprintf(` %s%s(%s); }`, cret, m.Name, cns)) case len(m.Name) >= 5 && m.Name[:5] == "alloc" && m.Class != "NSAutoreleasePool": - if Autorelease { w.cCode.WriteString(fmt.Sprintf(` %s[[%s %s] autorelease]; -}`, cret, cobj, w.objcparamlist(m))) } else { + if Autorelease { + w.cCode.WriteString(fmt.Sprintf(` %s[[%s %s] autorelease]; +}`, cret, cobj, w.objcparamlist(m))) + } else { w.cCode.WriteString(fmt.Sprintf(` %s[%s %s]; }`, cret, cobj, w.objcparamlist(m))) } default: - w.cCode.WriteString(fmt.Sprintf(` %s[%s %s]; + if Gogc && !m.isVoid() { + rtn := "" + if types.ShouldWrap(m.Type.GoType()) { + rtn = ` + [ret retain];` + } + w.cCode.WriteString(fmt.Sprintf( +` %s ret; + @autoreleasepool { + ret = [%s %s];%s + } + return ret; +}`, m.Type.CTypeAttrib(), cobj, w.objcparamlist(m),rtn)) + } else { + w.cCode.WriteString(fmt.Sprintf(` %s[%s %s]; }`, cret, cobj, w.objcparamlist(m))) + } } // create GoString helper method - if ok,_ := regexp.MatchString("WithString$",m.Name); ok { - if Debug { fmt.Printf("--%s\n",gname) } + if ok, _ := regexp.MatchString("WithString$", m.Name); ok { + if Debug { + fmt.Printf("--%s\n", gname) + } cvts := "" gname2 := gname[:len(gname)-6] + "GoString" gps := []string{} i := 0 - if !m.ClassMethod { i = 1 } + if !m.ClassMethod { + i = 1 + } for ; i < len(ns); i++ { gt := tps[i].GoType() - if Debug { fmt.Printf(" %s\n",gt) } + if Debug { + fmt.Printf(" %s\n", gt) + } ns2 := ns[i] if gt == "NSString" { gt = "string" @@ -1061,9 +1157,9 @@ func %s%s(%s) %s { cvts = cvts + gStringToNSString(ns[i]) ns[i] = "NSStringWithUTF8String(" + ns[i] + "_chr)" } - gps = append(gps,ns2 + " " + gt) + gps = append(gps, ns2+" "+gt) } - gplist = strings.Join(gps,", ") + gplist = strings.Join(gps, ", ") obj := "" if !m.ClassMethod { obj = "o." @@ -1073,20 +1169,21 @@ func %s%s(%s) %s { func %s%s(%s) %s { %sreturn %s%s(%s) } -`,receiver,gname2,gplist,grtype,cvts,obj,gname,strings.Join(ns,", "))) +`, receiver, gname2, gplist, grtype, cvts, obj, gname, strings.Join(ns, ", "))) } } func gStringToNSString(s string) string { return fmt.Sprintf( -`%s_chr := CharWithGoString(%s) + `%s_chr := CharWithGoString(%s) defer %s_chr.Free() - `,s,s,s) + `, s, s, s) } - func (w *Wrapper) ProcessEnum(e *Enum) { - if Debug { fmt.Printf("Processing enum (%s)\n",e.Name) } + if Debug { + fmt.Printf("Processing enum (%s)\n", e.Name) + } w.processType(e.Type) gtp := "" ctp := "" @@ -1101,21 +1198,23 @@ func (w *Wrapper) ProcessEnum(e *Enum) { if !w.ProcessedTypes[gtp] { w.goTypes.WriteString(fmt.Sprintf(` type %s %s -`,gtp,ctp)) +`, gtp, ctp)) w.ProcessedTypes[gtp] = true } } gtp = gtp + " " - if Debug { fmt.Printf(" gtp = %s; ctp = %s\n",gtp,ctp) } - for _,c := range e.Constants { + if Debug { + fmt.Printf(" gtp = %s; ctp = %s\n", gtp, ctp) + } + for _, c := range e.Constants { w.goConst.WriteString(fmt.Sprintf(`const %s %s= C.%s -`,c,gtp,c)) +`, c, gtp, c)) } w.goConst.WriteString("\n") } -func (w *Wrapper) MethodFromSig(sig,class string) *Method { - ret := &Method{ Parameters: []*Parameter{} } +func (w *Wrapper) MethodFromSig(sig, class string) *Method { + ret := &Method{Parameters: []*Parameter{}} if len(sig) == 0 { return ret } @@ -1123,26 +1222,26 @@ func (w *Wrapper) MethodFromSig(sig,class string) *Method { ret.ClassMethod = true } sig = sig[1:] - rem,n := types.MethodSignature(sig,types.NewNode("AST")) + rem, n := types.MethodSignature(sig, types.NewNode("AST")) if len(rem) > 0 { - fmt.Printf("Failed to parse method signature %s (%s)\n",sig,rem) + fmt.Printf("Failed to parse method signature %s (%s)\n", sig, rem) os.Exit(-1) } i := 0 // count MethodParameters - for _,c := range n.Children { + for _, c := range n.Children { switch c.Kind { case "TypeName": - tp := types.NewType(c,class) + tp := types.NewType(c, class) ret.Type = tp case "Identifier": ret.Name = c.Content ret.GoName = strings.Title(c.Content) case "MethodParameter": p := &Parameter{} - for _,d := range c.Children { + for _, d := range c.Children { switch d.Kind { case "TypeName": - tp := types.NewType(d,class) + tp := types.NewType(d, class) p.Type = tp case "Identifier": if i == 0 || p.Pname != "" { @@ -1153,7 +1252,7 @@ func (w *Wrapper) MethodFromSig(sig,class string) *Method { } } i++ - ret.Parameters = append(ret.Parameters,p) + ret.Parameters = append(ret.Parameters, p) } } return ret @@ -1162,18 +1261,18 @@ func (w *Wrapper) MethodFromSig(sig,class string) *Method { func (w *Wrapper) ProcessSubclass(sname string, sc *Subclass) { gname := strings.Title(sname) types.Wrap(gname) - types.SetSuper(gname,sc.Super) + types.SetSuper(gname, sc.Super) ps := map[string][]string{} ps[sc.Super] = sc.Overrides - nms := make([]*Method,len(sc.NewMethods)) - for i,sig := range sc.NewMethods { - nms[i] = w.MethodFromSig(sig,sname) + nms := make([]*Method, len(sc.NewMethods)) + for i, sig := range sc.NewMethods { + nms[i] = w.MethodFromSig(sig, sname) } - w._ProcessDelSub(sname,ps,nms,true) + w._ProcessDelSub(sname, ps, nms, true) } func (w *Wrapper) ProcessDelegate(dname string, ps map[string][]string) { - w._ProcessDelSub(dname,ps,nil,false) + w._ProcessDelSub(dname, ps, nil, false) } //NOTE: The delegate wrapper does not support variadic callback functions. @@ -1197,12 +1296,12 @@ func (w *Wrapper) _ProcessDelSub(dname string, ps map[string][]string, nms []*Me //set up array of methods for this delegate methods := []*Method{} - sms := 0 // the number of methods that have super-methods + sms := 0 // the number of methods that have super-methods gnames := []string{} // go names for methods - pnames := make([]string,len(ps)) + pnames := make([]string, len(ps)) var supr string i := 0 - for pname,pats := range ps { + for pname, pats := range ps { pnames[i] = pname i++ var ms []*Method @@ -1210,102 +1309,122 @@ func (w *Wrapper) _ProcessDelSub(dname string, ps map[string][]string, nms []*Me interf := w.Interfaces[pname] supr = interf.GoName if i > 1 { - fmt.Printf("Multiple inheritance is not permitted:\n subclass %s already inherits from %s\n",dname,supr) + fmt.Printf("Multiple inheritance is not permitted:\n subclass %s already inherits from %s\n", dname, supr) os.Exit(-1) } if interf == nil { - fmt.Printf("Failed to find interface %s for subclass %s\n",pname,dname) + fmt.Printf("Failed to find interface %s for subclass %s\n", pname, dname) os.Exit(-1) } - if Debug { fmt.Printf(" subclass for %s\n",pname) } + if Debug { + fmt.Printf(" subclass for %s\n", pname) + } mc := NewMethodCollection(dname) var addmeths func(s string) addmeths = func(s string) { if sup := types.Super(s); w.Interfaces[sup] != nil { addmeths(sup) } - if Debug { fmt.Printf("Adding methods for interface %s\n",s) } - for _,m := range w.Interfaces[s].InstanceMethods.Methods { - if Debug { fmt.Printf(" -> %s\n",m.Name) } - mc.Methods = append(mc.Methods,m) + if Debug { + fmt.Printf("Adding methods for interface %s\n", s) + } + for _, m := range w.Interfaces[s].InstanceMethods.Methods { + if Debug { + fmt.Printf(" -> %s\n", m.Name) + } + mc.Methods = append(mc.Methods, m) } //mc.Methods = append(mc.Methods,w.Interfaces[s].InstanceMethods...) - for _,p := range w.Interfaces[s].Protocols { - if Debug { fmt.Printf("Adding methods for protocol %s\n",p) } - for _,m := range w.Protocols[p].InstanceMethods.Methods { - if Debug { fmt.Printf(" -> %s\n",m.Name) } - mc.Methods = append(mc.Methods,m) + for _, p := range w.Interfaces[s].Protocols { + if Debug { + fmt.Printf("Adding methods for protocol %s\n", p) + } + for _, m := range w.Protocols[p].InstanceMethods.Methods { + if Debug { + fmt.Printf(" -> %s\n", m.Name) + } + mc.Methods = append(mc.Methods, m) } } } - //for subclasses, add all superclass methods, depth first + //for subclasses, add all superclass methods, depth first addmeths(interf.Name) Disambiguate(mc) ms = mc.Methods } else { // not a subclass proto := w.Protocols[pname] if proto == nil { - fmt.Printf("Failed to find protocol %s for delegate %s\n",pname,dname) + fmt.Printf("Failed to find protocol %s for delegate %s\n", pname, dname) os.Exit(-1) } - if Debug { fmt.Printf(" proto %s\n",pname) } + if Debug { + fmt.Printf(" proto %s\n", pname) + } ms = proto.InstanceMethods.Methods - if Debug { fmt.Printf("Protocol %s\n",pname) } - types.SetSuper(dname,"Id") + if Debug { + fmt.Printf("Protocol %s\n", pname) + } + types.SetSuper(dname, "Id") supr = "Id" } - for _,m := range ms { - //note:we may have capitalized the first character to make a GoName... - if Debug { fmt.Printf("--Method: %s\n",m.Name) } - if !matches(string(m.Name[0])+m.GoName[1:],pats) { + for _, m := range ms { + //note:we may have capitalized the first character to make a GoName... + if Debug { + fmt.Printf("--Method: %s\n", m.Name) + } + if !matches(string(m.Name[0])+m.GoName[1:], pats) { continue } if m.HasUnsupportedType() { continue } - methods = append(methods,m) - gnames = append(gnames,m.GoName) - if sub { sms = len(methods) } + methods = append(methods, m) + gnames = append(gnames, m.GoName) + if sub { + sms = len(methods) + } } } //add new methods being defined for the subclass if sub { - for _,m := range nms { - methods = append(methods,m) - gnames = append(gnames,strings.Title(m.Name)) + for _, m := range nms { + methods = append(methods, m) + gnames = append(gnames, strings.Title(m.Name)) } } - methprotos := make([]string,len(methods)) // objc method prototypes - smethprotos := make([]string,sms) // super method prototypes - sfunprotos := make([]string,sms) // super method prototypes - gname := strings.Title(dname) // go name for this Delegate - vnames := make([][]string,len(methods)) // objc variable names - vpnames := make([][]string,len(methods)) // objc parameter:variable names - gtypes := make([][]string,len(methods)) // go parameter types for each method - getypes := make([][]string,len(methods)) // parameter types for go export - grtypes := make([]string,len(methods)) // go retrun types for each method - cgtypes := make([]string,len(methods)) // cgo return types - crtypes := make([]string,len(methods)) // c return types for each method + methprotos := make([]string, len(methods)) // objc method prototypes + smethprotos := make([]string, sms) // super method prototypes + sfunprotos := make([]string, sms) // super method prototypes + gname := strings.Title(dname) // go name for this Delegate + vnames := make([][]string, len(methods)) // objc variable names + vpnames := make([][]string, len(methods)) // objc parameter:variable names + gtypes := make([][]string, len(methods)) // go parameter types for each method + getypes := make([][]string, len(methods)) // parameter types for go export + grtypes := make([]string, len(methods)) // go retrun types for each method + cgtypes := make([]string, len(methods)) // cgo return types + crtypes := make([]string, len(methods)) // c return types for each method //1. ObjC interface if sub { - fmt.Printf("Subclass %s <%s>: %d overrides, %d new methods\n",dname,strings.Join(pnames,", "),sms, len(nms)) + fmt.Printf("Subclass %s <%s>: %d overrides, %d new methods\n", dname, strings.Join(pnames, ", "), sms, len(nms)) } else { - fmt.Printf("Delegate %s <%s>: %d methods\n",dname,strings.Join(pnames,", "),len(methods)) + fmt.Printf("Delegate %s <%s>: %d methods\n", dname, strings.Join(pnames, ", "), len(methods)) } - for i,m := range methods { + for i, m := range methods { w.processType(m.Type) - vnames[i] = make([]string,len(m.Parameters)+1) - vpnames[i] = make([]string,len(m.Parameters)) - getypes[i] = make([]string,len(m.Parameters)+1) + vnames[i] = make([]string, len(m.Parameters)+1) + vpnames[i] = make([]string, len(m.Parameters)) + getypes[i] = make([]string, len(m.Parameters)+1) vnames[i][0] = "self" getypes[i][0] = "unsafe.Pointer" - gtypes[i] = make([]string,len(m.Parameters)+1) + gtypes[i] = make([]string, len(m.Parameters)+1) if m.Name != "dealloc" { gtypes[i][0] = gname + "Supermethods" } - if Debug { fmt.Printf("%s: %s\n",dname,m.Name) } + if Debug { + fmt.Printf("%s: %s\n", dname, m.Name) + } var parms string var cparms string if len(m.Parameters) == 0 { @@ -1315,8 +1434,8 @@ func (w *Wrapper) _ProcessDelSub(dname string, ps map[string][]string, nms []*Me } else { pm := m.Parameters[0] w.processType(pm.Type) - parms = fmt.Sprintf(":(%s)%s",pm.Type.Node.CType(),pm.Vname) - cparms = fmt.Sprintf("void* self, %s %s",pm.Type.Node.CType(),pm.Vname) + parms = fmt.Sprintf(":(%s)%s", pm.Type.Node.CType(), pm.Vname) + cparms = fmt.Sprintf("void* self, %s %s", pm.Type.Node.CType(), pm.Vname) vnames[i][1] = pm.Vname vpnames[i][0] = pm.Pname + ":" + pm.Vname gtypes[i][1] = pm.Type.GoType() @@ -1329,8 +1448,8 @@ func (w *Wrapper) _ProcessDelSub(dname string, ps map[string][]string, nms []*Me for j := 1; j < len(m.Parameters); j++ { pm := m.Parameters[j] w.processType(pm.Type) - parms = parms + fmt.Sprintf(" %s:(%s)%s",pm.Pname,pm.Type.Node.CType(),pm.Vname) - cparms = cparms + fmt.Sprintf(", %s %s",pm.Type.Node.CType(),pm.Vname) + parms = parms + fmt.Sprintf(" %s:(%s)%s", pm.Pname, pm.Type.Node.CType(), pm.Vname) + cparms = cparms + fmt.Sprintf(", %s %s", pm.Type.Node.CType(), pm.Vname) vnames[i][j+1] = pm.Vname vpnames[i][j] = pm.Pname + ":" + pm.Vname gtypes[i][j+1] = pm.Type.GoType() @@ -1343,7 +1462,7 @@ func (w *Wrapper) _ProcessDelSub(dname string, ps map[string][]string, nms []*Me getypes[i][j+1] = getp } methprotos[i] = fmt.Sprintf( -`- (%s)%s%s;`,m.Type.Node.CType(),m.Name,parms) + `- (%s)%s%s;`, m.Type.Node.CType(), m.Name, parms) if x := m.Type.GoType(); x == "Void" { grtypes[i] = "" } else { @@ -1359,12 +1478,12 @@ func (w *Wrapper) _ProcessDelSub(dname string, ps map[string][]string, nms []*Me } if i < sms { smethprotos[i] = fmt.Sprintf( -`- (%s)super_%s%s;`,ct,m.Name,parms) + `- (%s)super_%s%s;`, ct, m.Name, parms) } if i < sms { - _,cntps,_ := w.cparamlist(m) + _, cntps, _ := w.cparamlist(m) sfunprotos[i] = fmt.Sprintf( -`%s %s_super_%s(%s);`,ct,dname,m.Name,cntps) + `%s %s_super_%s(%s);`, ct, dname, m.Name, cntps) } crtypes[i] = m.Type.CTypeAttrib() if m.Type.IsPointer() { @@ -1373,7 +1492,7 @@ func (w *Wrapper) _ProcessDelSub(dname string, ps map[string][]string, nms []*Me crtypes[i] = m.Type.CTypeAttrib() cgtypes[i] = m.Type.CGoType() } -} + } var supcls string var protos string if sub { @@ -1381,16 +1500,16 @@ func (w *Wrapper) _ProcessDelSub(dname string, ps map[string][]string, nms []*Me protos = "" } else { supcls = "NSObject" - protos = "<" + strings.Join(pnames,", ") + ">" + protos = "<" + strings.Join(pnames, ", ") + ">" } ccode.WriteString(fmt.Sprintf(` @interface %s : %s %s { } %s -`,dname,supcls,protos,strings.Join(methprotos,"\n"))) +`, dname, supcls, protos, strings.Join(methprotos, "\n"))) havesupmethods := sms > 0 if sub { - for i,sp := range smethprotos { + for i, sp := range smethprotos { if methods[i].Name != "dealloc" { ccode.WriteString(sp + "\n") } else { @@ -1404,7 +1523,7 @@ func (w *Wrapper) _ProcessDelSub(dname string, ps map[string][]string, nms []*Me @end `) if sub { - for i,sf := range sfunprotos { + for i, sf := range sfunprotos { if methods[i].Name != "dealloc" { ccode.WriteString(sf + "\n") } @@ -1412,10 +1531,10 @@ func (w *Wrapper) _ProcessDelSub(dname string, ps map[string][]string, nms []*Me } //2. ObjC implementation - methdecls := make([]string,len(methods)) - smethdecls := make([]string,len(methods)) - sfundecls := make([]string,len(methods)) - for i,mp := range methprotos { + methdecls := make([]string, len(methods)) + smethdecls := make([]string, len(methods)) + sfundecls := make([]string, len(methods)) + for i, mp := range methprotos { mp := mp[:len(mp)-1] var smp, sfp, superdealloc string if sub && i < sms { @@ -1434,34 +1553,34 @@ func (w *Wrapper) _ProcessDelSub(dname string, ps map[string][]string, nms []*Me { %s%s(%s); } -`,mp,ret,gname + gnames[i],strings.Join(vnames[i],", ")) +`, mp, ret, gname+gnames[i], strings.Join(vnames[i], ", ")) methdecls[i] = fmt.Sprintf(` %s { %s%s(%s);%s } -`,mp,ret,gname + gnames[i],strings.Join(vnames[i],", "),superdealloc) +`, mp, ret, gname+gnames[i], strings.Join(vnames[i], ", "), superdealloc) if sub && i < sms { smethdecls[i] = fmt.Sprintf(` %s { %s[super %s]; } -`,smp,ret,strings.Join(vpnames[i]," ")) +`, smp, ret, strings.Join(vpnames[i], " ")) sfundecls[i] = fmt.Sprintf(` %s { %s[(%s*)o super_%s]; } -`,sfp,ret,dname,strings.Join(vpnames[i]," ")) +`, sfp, ret, dname, strings.Join(vpnames[i], " ")) } } ccode.WriteString(fmt.Sprintf(` @implementation %s %s -`,dname,strings.Join(methdecls,"\n"))) +`, dname, strings.Join(methdecls, "\n"))) if sub { - for i,sm := range smethdecls { + for i, sm := range smethdecls { if methods[i].Name != "dealloc" { ccode.WriteString(sm + "\n") } @@ -1471,7 +1590,7 @@ func (w *Wrapper) _ProcessDelSub(dname string, ps map[string][]string, nms []*Me @end `) if sub { - for i,sf := range sfundecls { + for i, sf := range sfundecls { if methods[i].Name != "dealloc" { ccode.WriteString(sf + "\n") } @@ -1482,74 +1601,90 @@ func (w *Wrapper) _ProcessDelSub(dname string, ps map[string][]string, nms []*Me ccode.WriteString(fmt.Sprintf(` void* %sAlloc() { -`,dname)) - if Autorelease { ccode.WriteString(fmt.Sprintf( -` return [[%s alloc] autorelease]; +`, dname)) + if Autorelease { + ccode.WriteString(fmt.Sprintf( + ` return [[%s alloc] autorelease]; } -`,dname)) } else { ccode.WriteString(fmt.Sprintf( -` return [%s alloc]; +`, dname)) + } else { + ccode.WriteString(fmt.Sprintf( + ` return [%s alloc]; } -`,dname)) } +`, dname)) + } //4. Go type - + gotypes.WriteString( - types.NewTypeFromString(gname,supr).GoInterfaceDecl()) + types.NewTypeFromString(gname, supr).GoInterfaceDecl()) //5. Go constructor + var finalizer string + if Gogc { + w.goImports["runtime"] = true + finalizer = fmt.Sprintf( +`runtime.SetFinalizer(&ret,func(o *%s) { + o.Release() + }) + `,gname) + } gocode.WriteString(fmt.Sprintf(` func %sAlloc() %s { ret := %s{} ret.ptr = unsafe.Pointer(C.%sAlloc()) - return ret + %sreturn ret } -`,gname,gname,gname,dname)) +`, gname, gname, gname, dname, finalizer)) //6. Go dispatch database for callbacks - dispitems := make([]string,len(gnames)) - sdispitems := make([]string,sms) - for i,n := range gnames { + dispitems := make([]string, len(gnames)) + sdispitems := make([]string, sms) + for i, n := range gnames { if !sub || sms == 0 { gtypes[i] = gtypes[i][1:] } dispitems[i] = fmt.Sprintf( -` %s func(%s)%s`,n,strings.Join(gtypes[i],", "),grtypes[i]) + ` %s func(%s)%s`, n, strings.Join(gtypes[i], ", "), grtypes[i]) if sub && i < sms && methods[i].Name != "dealloc" { sdispitems[i] = fmt.Sprintf( -` %s func(%s)%s -`,n,strings.Join(gtypes[i][1:],", "),grtypes[i]) + ` %s func(%s)%s +`, n, strings.Join(gtypes[i][1:], ", "), grtypes[i]) } } gocode.WriteString(fmt.Sprintf(` type %sDispatch struct { %s } -var %sLookup map[unsafe.Pointer]%sDispatch = - map[unsafe.Pointer]%sDispatch{} -`,gname,strings.Join(dispitems,"\n"),gname,gname,gname)) +var %sLookup = map[unsafe.Pointer]%sDispatch{} +var %sMux sync.RWMutex +`, gname, strings.Join(dispitems, "\n"), gname, gname, gname)) + w.goImports["sync"] = true if sub && sms > 0 && havesupmethods { gocode.WriteString(fmt.Sprintf(` type %sSupermethods struct { %s } -`,gname,strings.Join(sdispitems,""))) +`, gname, strings.Join(sdispitems, ""))) } //To create (per method): cprotos.WriteString("\n\n") - for i,m := range methods { + for i, m := range methods { //1. ObjC function prototypes for go exports - _,_,ctps := w.cparamlist(m) + _, _, ctps := w.cparamlist(m) cprotos.WriteString(fmt.Sprintf( -`%s %s%s(%s); -`,crtypes[i],gname,gnames[i],ctps)) + `%s %s%s(%s); +`, crtypes[i], gname, gnames[i], ctps)) //2. Go callback registration functions gocode.WriteString(fmt.Sprintf(` func (d %s) %sCallback(f func(%s)%s) { + %sMux.Lock() dispatch := %sLookup[d.Ptr()] dispatch.%s = f %sLookup[d.Ptr()] = dispatch + %sMux.Unlock() } -`,gname,gnames[i],strings.Join(gtypes[i],", "),grtypes[i],gname,gnames[i],gname)) +`, gname, gnames[i], strings.Join(gtypes[i], ", "), grtypes[i], gname, gname, gnames[i], gname, gname)) //3. Go exported callback function wrappers earglist := []string{"o unsafe.Pointer"} garglist := []string{} @@ -1558,7 +1693,7 @@ func (d %s) %sCallback(f func(%s)%s) { garglist = []string{"super"} } for j := 1; j < len(vnames[i]); j++ { - earglist = append(earglist,vnames[i][j] + " " + getypes[i][j]) + earglist = append(earglist, vnames[i][j]+" "+getypes[i][j]) var gt2 string if sub { gt2 = gtypes[i][j] @@ -1569,13 +1704,13 @@ func (d %s) %sCallback(f func(%s)%s) { gt2 = "Id" } if types.ShouldWrap(gt2) || gt2 == "Id" { - garglist = append(garglist,fmt.Sprintf( -`a%d`,j)) - gargconv = append(gargconv,fmt.Sprintf( -` a%d := %s{}; a%d.ptr = %s`,j,gt2,j,vnames[i][j])) + garglist = append(garglist, fmt.Sprintf( + `a%d`, j)) + gargconv = append(gargconv, fmt.Sprintf( + ` a%d := %s{}; a%d.ptr = %s`, j, gt2, j, vnames[i][j])) } else { - garglist = append(garglist,fmt.Sprintf( -`(%s)(%s)`,gt2,vnames[i][j])) + garglist = append(garglist, fmt.Sprintf( + `(%s)(%s)`, gt2, vnames[i][j])) } } retdecl := "" @@ -1598,22 +1733,22 @@ func (d %s) %sCallback(f func(%s)%s) { } retnparen = retnparen + ")" } - sdispentries := make([]string,sms) - for i,_ := range sdispentries { + sdispentries := make([]string, sms) + for i, _ := range sdispentries { if methods[i].Name != "dealloc" { sdispentries[i] = fmt.Sprintf( -` self.Super%s, -`,gnames[i]) + ` self.Super%s, +`, gnames[i]) } } sper := "" if sub && sms > 0 && m.Name != "dealloc" { sper = fmt.Sprintf( -` self := %s{} + ` self := %s{} self.ptr = o super := %sSupermethods{ %s } -`,gname,gname,strings.Join(sdispentries,"")) +`, gname, gname, strings.Join(sdispentries, "")) } if len(gargconv) > 0 { retn = "\n " + retn @@ -1623,14 +1758,20 @@ func (d %s) %sCallback(f func(%s)%s) { goexports.WriteString(fmt.Sprintf(` //export %s%s func %s%s(%s)%s { + %sMux.RLock() %scb := %sLookup[o].%s + %sMux.RUnlock() if cb == nil { return%s } %s%s%scb(%s)%s } -`,gname,gnames[i],gname,gnames[i],strings.Join(earglist,", "),crtype,retdecl,gname,gnames[i],retname,sper,strings.Join(gargconv,"\n"),retn,strings.Join(garglist,", "),retnparen)) +`, gname, gnames[i], gname, gnames[i], strings.Join(earglist, ", "), crtype, gname, retdecl, gname, gnames[i], gname, retname, sper, strings.Join(gargconv, "\n"), retn, strings.Join(garglist, ", "), retnparen)) //4. Go wrapper functions for superclass methods - if !sub || i >= sms { continue } // for subclasses only - if m.Name == "dealloc" { continue } + if !sub || i >= sms { + continue + } // for subclasses only + if m.Name == "dealloc" { + continue + } grtype := m.Type.GoType() if grtype == "Void" { grtype = "" @@ -1644,21 +1785,21 @@ func %s%s(%s)%s { if sub { gocode.WriteString(fmt.Sprintf(` func (o %s) Super%s(%s) %s { -`,gname,gnames[i],strings.Join(earglist[1:],", "), grtype)) - ns,snames,tps,_ := w.gpntp(m) - lparm := len(tps)-1 +`, gname, gnames[i], strings.Join(earglist[1:], ", "), grtype)) + ns, snames, tps, _ := w.gpntp(m) + lparm := len(tps) - 1 if len(tps) > 0 && tps[lparm].Variadic { vn := ns[lparm] vn = vn[:len(vn)-1] ns[lparm] = vn gocode.WriteString(fmt.Sprintf( -` var %s [%d]unsafe.Pointer + ` var %s [%d]unsafe.Pointer for i,o := range %ss { %s[i] = o.Ptr() } -`,vn,w.Vaargs,vn,vn)) +`, vn, w.Vaargs, vn, vn)) } - gocode.WriteString("\t" + types.GoToC(dname + "_super_"+m.Name,ns,snames,m.Type,tps,false) + "\n}\n") + gocode.WriteString("\t" + types.GoToC(dname+"_super_"+m.Name, ns, snames, m.Type, tps, false, Gogc) + "\n}\n") } } w.cCode.WriteString(cprotos.String()) @@ -1668,37 +1809,38 @@ func (o %s) Super%s(%s) %s { w.goExports.WriteString(goexports.String()) } - func (w *Wrapper) Wrap(toproc []string) { - if w.Package == "" { w.Package = "ns" } - err := os.MkdirAll(w.Package,0755) + if w.Package == "" { + w.Package = "ns" + } + err := os.MkdirAll(w.Package, 0755) if err != nil { - fmt.Printf("Error creating directory '%s'\n%s\n",w.Package,err) + fmt.Printf("Error creating directory '%s'\n%s\n", w.Package, err) os.Exit(-1) } - of,err := os.Create(path.Join(w.Package,"main.go")) + of, err := os.Create(path.Join(w.Package, "main.go")) if err != nil { - fmt.Printf("Error opening file %s\n%s\n",path.Join(w.Package,"main.go"),err) + fmt.Printf("Error opening file %s\n%s\n", path.Join(w.Package, "main.go"), err) os.Exit(-1) } - ef,err := os.Create(path.Join(w.Package,"exports.go")) + ef, err := os.Create(path.Join(w.Package, "exports.go")) if err != nil { - fmt.Printf("Error opening file %s\n%s\n",path.Join(w.Package,"exports.go"),err) + fmt.Printf("Error opening file %s\n%s\n", path.Join(w.Package, "exports.go"), err) os.Exit(-1) } - fmt.Printf("Writing output to %s\n",path.Join(w.Package,"main.go")) + fmt.Printf("Writing output to %s\n", path.Join(w.Package, "main.go")) pInterfaces := map[string]*Interface{} //Note: the following code eliminates duplicates, so it is acceptable //to have duplicate interfaces in 'toproc' - for _,iface := range toproc { + for _, iface := range toproc { pInterfaces[iface] = w.Interfaces[iface] } //FIXME: sort pInterfaces - for _,i := range pInterfaces { + for _, i := range pInterfaces { if i == nil { continue } - w.processType(types.NewTypeFromString(i.GoName,"")) + w.processType(types.NewTypeFromString(i.GoName, "")) if i.Name == "NSString" { w.StringHelpers() } @@ -1713,78 +1855,55 @@ func (w *Wrapper) Wrap(toproc []string) { fmt.Printf("Interface %s: %d properties, %d class methods, %d instance methods\n", i.Name, len(i.Properties), len(i.ClassMethods.Methods), len(i.InstanceMethods.Methods)) -/* - w.goCode.WriteString(fmt.Sprintf(` -func %sAlloc() %s { - ret := %s{} - ret.ptr = unsafe.Pointer(C.%sAlloc()) - return ret -} -`,i.GoName,gname,gname,i.Name)) - - if i.Name != "NSAutoreleasePool" { - w.cCode.WriteString(fmt.Sprintf(` -void* -%sAlloc() { - return [[%s alloc] autorelease]; -} -`, i.Name, i.Name)) - } else { - //who autoreleases the autorelease pools? - w.cCode.WriteString(fmt.Sprintf(` -void* -%sAlloc() { - return [%s alloc]; -} -`, i.Name, i.Name)) - } -*/ - //FIXME: sort properties - for _,p := range i.Properties { + for _, p := range i.Properties { //Properties are not supported, use getter/setter //methods instead. - if Debug { fmt.Printf(" property: %s (%s)\n", p.Name, p.Type.CType()) } + if Debug { + fmt.Printf(" property: %s (%s)\n", p.Name, p.Type.CType()) + } } - for _,m := range i.ClassMethods.Methods { + for _, m := range i.ClassMethods.Methods { w.ProcessMethod(m) } - for _,m := range i.InstanceMethods.Methods { + for _, m := range i.InstanceMethods.Methods { w.ProcessMethod(m) } // add methods for Protocols that this interface implements - for _,p := range i.Protocols { - prot,ok := w.Protocols[p] + for _, p := range i.Protocols { + prot, ok := w.Protocols[p] if !ok { - fmt.Printf("Failed to find protocol %s for interface %s\n",p,i.Name) + fmt.Printf("Failed to find protocol %s for interface %s\n", p, i.Name) os.Exit(-1) } - for _,m := range prot.ClassMethods.Methods { - w.ProcessMethodForClass(m,i.Name) + for _, m := range prot.ClassMethods.Methods { + w.ProcessMethodForClass(m, i.Name) } - for _,m := range prot.InstanceMethods.Methods { - w.ProcessMethodForClass(m,i.Name) + for _, m := range prot.InstanceMethods.Methods { + w.ProcessMethodForClass(m, i.Name) } } } - for _,m := range w.Functions { - if Debug { fmt.Printf("Processing function %s %s\n",m.Type.CType(),m.Name) } + for _, m := range w.Functions { + if Debug { + fmt.Printf("Processing function %s %s\n", m.Type.CType(), m.Name) + } w.ProcessFunction(m) } - for _,e := range w.NamedEnums { + for _, e := range w.NamedEnums { w.ProcessEnum(e) } - for _,e := range w.AnonEnums { + for _, e := range w.AnonEnums { w.ProcessEnum(e) } - for n,p := range w.Delegates { - w.ProcessDelegate(n,p) + for n, p := range w.Delegates { + w.ProcessDelegate(n, p) } - for n,s := range w.Subclasses { - w.ProcessSubclass(n,s) + for n, s := range w.Subclasses { + w.ProcessSubclass(n, s) } fmt.Printf("%d functions\n", len(w.Functions)) - fmt.Printf("%d enums\n", len(w.NamedEnums) + len(w.AnonEnums)) + fmt.Printf("%d enums\n", len(w.NamedEnums)+len(w.AnonEnums)) of.WriteString("package " + w.Package + "\n\n") arc := " -fno-objc-arc" @@ -1793,16 +1912,16 @@ void* } w.cgoFlags.WriteString(fmt.Sprintf(` /* -#cgo CFLAGS: -x objective-c%s`,arc)) +#cgo CFLAGS: -x objective-c%s`, arc)) ldflags := "" if w.Frameworks != nil && len(w.Frameworks) > 0 { - for _,s := range w.Frameworks { - w.cImports.WriteString(fmt.Sprintf("#import <%s/%s.h>\n",s,s)) + for _, s := range w.Frameworks { + w.cImports.WriteString(fmt.Sprintf("#import <%s/%s.h>\n", s, s)) } - ldflags = "-framework " + strings.Join(w.Frameworks," -framework ") + ldflags = "-framework " + strings.Join(w.Frameworks, " -framework ") } if w.Frameworkdirs != nil && len(w.Frameworkdirs) > 0 { - s := strings.Join(w.Frameworkdirs," -F") + s := strings.Join(w.Frameworkdirs, " -F") w.cgoFlags.WriteString(" -F" + s) ldflags = ldflags + " -F" + s } @@ -1810,7 +1929,7 @@ void* w.cgoFlags.WriteString(` #cgo LDFLAGS: ` + ldflags) } - for _,s := range w.Pragmas { + for _, s := range w.Pragmas { w.cgoFlags.WriteString("\n#pragma " + s + "\n") } @@ -1818,14 +1937,18 @@ void* of.WriteString(w.cImports.String() + "\n") of.WriteString(w.cCode.String()) - of.WriteString(` + imports := []string{} + for k := range w.goImports { + imports = append(imports,"\t\"" + k + "\"") + } + of.WriteString(fmt.Sprintf(` */ import "C" import ( - "unsafe" +%s ) -`) +`,strings.Join(imports,"\n"))) of.WriteString(w.goTypes.String()) of.WriteString(w.goConst.String()) of.WriteString(w.goHelpers.String()) @@ -1848,9 +1971,9 @@ import ( ef.Close() } else { ef.Close() - err := os.Remove(path.Join(w.Package,"exports.go")) + err := os.Remove(path.Join(w.Package, "exports.go")) if err != nil { - fmt.Printf("Error removing 'exports.go'. %s\n",err) + fmt.Printf("Error removing 'exports.go'. %s\n", err) os.Exit(-1) } }