mirror of
https://github.com/mappu/miqt.git
synced 2024-12-22 17:08:38 +00:00
44 lines
1.1 KiB
Go
44 lines
1.1 KiB
Go
package main
|
|
|
|
// takeChildren recursively takes the children of the class.
|
|
func takeChildren(c *CppClass) []CppClass {
|
|
if len(c.ChildClassdefs) == 0 {
|
|
return []CppClass{}
|
|
}
|
|
|
|
var ret []CppClass
|
|
for _, child := range c.ChildClassdefs {
|
|
ret = append(ret, takeChildren(&child)...)
|
|
|
|
child.ChildClassdefs = nil
|
|
ret = append(ret, child)
|
|
}
|
|
c.ChildClassdefs = nil
|
|
|
|
return ret
|
|
}
|
|
|
|
// astTransformChildClasses expands all classes with child class definitions
|
|
// into new top-level entries within the header.
|
|
func astTransformChildClasses(parsed *CppParsedHeader) {
|
|
var taken []CppClass
|
|
|
|
for i, c := range parsed.Classes {
|
|
|
|
nestedClasses := takeChildren(&parsed.Classes[i])
|
|
|
|
taken = append(taken, nestedClasses...)
|
|
|
|
// Also lift all child typedefs and enums
|
|
parsed.Typedefs = append(parsed.Typedefs, c.ChildTypedefs...)
|
|
parsed.Enums = append(parsed.Enums, c.ChildEnums...)
|
|
for _, nc := range nestedClasses {
|
|
parsed.Typedefs = append(parsed.Typedefs, nc.ChildTypedefs...)
|
|
parsed.Enums = append(parsed.Enums, nc.ChildEnums...)
|
|
}
|
|
}
|
|
|
|
parsed.Classes = append(parsed.Classes, taken...)
|
|
|
|
}
|