2016-05-21 23:50:57 +03:00
|
|
|
package parser
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"strings"
|
|
|
|
)
|
|
|
|
|
|
|
|
type Variable struct {
|
2016-11-01 21:52:59 +03:00
|
|
|
Name string `xml:"name,attr"`
|
|
|
|
Fullname string `xml:"fullname,attr"`
|
|
|
|
Href string `xml:"href,attr"`
|
|
|
|
Status string `xml:"status,attr"`
|
|
|
|
Access string `xml:"access,attr"`
|
|
|
|
Filepath string `xml:"filepath,attr"`
|
|
|
|
Static bool `xml:"static,attr"`
|
|
|
|
Output string `xml:"type,attr"`
|
|
|
|
Brief string `xml:"brief,attr"`
|
|
|
|
Getter []*getter `xml:"getter"`
|
|
|
|
Setter []*setter `xml:"setter"`
|
2016-05-21 23:50:57 +03:00
|
|
|
}
|
2016-11-01 21:52:59 +03:00
|
|
|
type getter struct{}
|
|
|
|
type setter struct{}
|
2016-05-21 23:50:57 +03:00
|
|
|
|
|
|
|
func (v *Variable) Class() string { return strings.Split(v.Fullname, "::")[0] }
|
|
|
|
|
2016-11-01 21:52:59 +03:00
|
|
|
func (v *Variable) variableToFunction(meta string) *Function {
|
2016-05-21 23:50:57 +03:00
|
|
|
if meta == GETTER {
|
|
|
|
return &Function{
|
|
|
|
Name: v.Name,
|
|
|
|
Fullname: v.Fullname,
|
|
|
|
Href: v.Href,
|
|
|
|
Status: v.Status,
|
|
|
|
Access: v.Access,
|
|
|
|
Filepath: v.Filepath,
|
|
|
|
Static: v.Static,
|
|
|
|
Output: v.Output,
|
|
|
|
Meta: meta,
|
2016-11-01 21:52:59 +03:00
|
|
|
Brief: v.Brief,
|
2016-05-21 23:50:57 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
return &Function{
|
|
|
|
Name: fmt.Sprintf("set%v", strings.Title(v.Name)),
|
|
|
|
Fullname: fmt.Sprintf("%v::set%v", v.Class(), strings.Title(v.Name)),
|
|
|
|
Href: v.Href,
|
|
|
|
Status: v.Status,
|
|
|
|
Access: v.Access,
|
|
|
|
Filepath: v.Filepath,
|
|
|
|
Static: v.Static,
|
|
|
|
Output: "void",
|
|
|
|
Meta: meta,
|
2016-10-22 01:50:26 +03:00
|
|
|
Parameters: []*Parameter{{Value: v.Output}},
|
2016-05-21 23:50:57 +03:00
|
|
|
TmpName: v.Name,
|
2016-11-01 21:52:59 +03:00
|
|
|
Brief: v.Brief,
|
2016-05-21 23:50:57 +03:00
|
|
|
}
|
|
|
|
}
|
2016-11-01 21:52:59 +03:00
|
|
|
|
|
|
|
func (v *Variable) propertyToFunctions(c *Class) []*Function {
|
|
|
|
var funcs []*Function
|
|
|
|
|
|
|
|
if v.Fullname == "QTextBrowser::modified" {
|
|
|
|
return funcs
|
|
|
|
}
|
|
|
|
|
2016-11-09 21:31:25 +03:00
|
|
|
if !(c.HasFunctionWithName(v.Name) || c.HasFunctionWithName(fmt.Sprintf("is%v", strings.Title(v.Name))) || c.HasFunctionWithName(fmt.Sprintf("has%v", strings.Title(v.Name)))) && len(v.Getter) == 0 {
|
2016-11-01 21:52:59 +03:00
|
|
|
|
|
|
|
var tmpV = *v
|
|
|
|
|
|
|
|
switch tmpV.Fullname {
|
|
|
|
case "QGraphicsObject::z":
|
|
|
|
{
|
|
|
|
tmpV.Name = "zValue"
|
|
|
|
tmpV.Fullname = fmt.Sprintf("%v::%v", tmpV.Class(), tmpV.Name)
|
|
|
|
}
|
|
|
|
|
|
|
|
case "QGraphicsObject::effect":
|
|
|
|
{
|
|
|
|
tmpV.Name = "graphicsEffect"
|
|
|
|
tmpV.Fullname = fmt.Sprintf("%v::%v", tmpV.Class(), tmpV.Name)
|
|
|
|
}
|
|
|
|
|
|
|
|
default:
|
|
|
|
{
|
|
|
|
if tmpV.Output == "bool" {
|
|
|
|
tmpV.Name = fmt.Sprintf("is%v", strings.Title(tmpV.Name))
|
|
|
|
tmpV.Fullname = fmt.Sprintf("%v::%v", tmpV.Class(), tmpV.Name)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
funcs = append(funcs, &Function{
|
|
|
|
Name: tmpV.Name,
|
|
|
|
Fullname: tmpV.Fullname,
|
|
|
|
Href: tmpV.Href,
|
|
|
|
Status: tmpV.Status,
|
|
|
|
Access: tmpV.Access,
|
|
|
|
Filepath: tmpV.Filepath,
|
|
|
|
Static: tmpV.Static,
|
|
|
|
Output: tmpV.Output,
|
|
|
|
Meta: PLAIN,
|
|
|
|
Brief: tmpV.Brief,
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2016-11-09 21:31:25 +03:00
|
|
|
if !c.HasFunctionWithName(fmt.Sprintf("set%v", strings.Title(v.Name))) && len(v.Getter) == 0 && len(v.Setter) == 0 {
|
2016-11-01 21:52:59 +03:00
|
|
|
|
|
|
|
switch v.Fullname {
|
|
|
|
case "QGraphicsObject::z":
|
|
|
|
{
|
|
|
|
v.Name = "zValue"
|
|
|
|
v.Fullname = fmt.Sprintf("%v::%v", v.Class(), v.Name)
|
|
|
|
}
|
|
|
|
|
|
|
|
case "QGraphicsObject::effect":
|
|
|
|
{
|
|
|
|
v.Name = "graphicsEffect"
|
|
|
|
v.Fullname = fmt.Sprintf("%v::%v", v.Class(), v.Name)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
funcs = append(funcs,
|
|
|
|
&Function{
|
|
|
|
Name: fmt.Sprintf("set%v", strings.Title(v.Name)),
|
|
|
|
Fullname: fmt.Sprintf("%v::set%v", v.Class(), strings.Title(v.Name)),
|
|
|
|
Href: v.Href,
|
|
|
|
Status: v.Status,
|
|
|
|
Access: v.Access,
|
|
|
|
Filepath: v.Filepath,
|
|
|
|
Static: v.Static,
|
|
|
|
Output: "void",
|
|
|
|
Meta: PLAIN,
|
|
|
|
Parameters: []*Parameter{{Value: v.Output}},
|
|
|
|
Brief: v.Brief,
|
|
|
|
})
|
|
|
|
|
|
|
|
for _, bc := range c.GetAllBases() {
|
|
|
|
for _, bcf := range ClassMap[bc].Functions {
|
|
|
|
if bcf.Name == fmt.Sprintf("set%v", strings.Title(v.Name)) && bcf.Overload {
|
|
|
|
funcs = append(funcs,
|
|
|
|
&Function{
|
|
|
|
Name: fmt.Sprintf("set%v", strings.Title(v.Name)),
|
|
|
|
Fullname: fmt.Sprintf("%v::set%v", v.Class(), strings.Title(v.Name)),
|
|
|
|
Href: bcf.Href,
|
|
|
|
Status: bcf.Status,
|
|
|
|
Access: bcf.Access,
|
|
|
|
Filepath: bcf.Filepath,
|
|
|
|
Static: bcf.Static,
|
|
|
|
Output: "void",
|
|
|
|
Meta: PLAIN,
|
|
|
|
Parameters: bcf.Parameters,
|
|
|
|
Brief: bcf.Brief,
|
|
|
|
Overload: true,
|
|
|
|
OverloadNumber: bcf.OverloadNumber,
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return funcs
|
|
|
|
}
|