mirror of
https://github.com/mappu/miqt.git
synced 2024-12-23 01:18:37 +00:00
genbindings: centralise ErrToComplex exceptions, add QPolygon
This commit is contained in:
parent
e287a383fe
commit
aeb667d780
@ -386,9 +386,8 @@ func parseTypeString(typeString string) (CppParameter, []CppParameter, error) {
|
|||||||
if returnType.IntType() && returnType.ByRef {
|
if returnType.IntType() && returnType.ByRef {
|
||||||
return CppParameter{}, nil, ErrTooComplex // e.g. QSize::rheight()
|
return CppParameter{}, nil, ErrTooComplex // e.g. QSize::rheight()
|
||||||
}
|
}
|
||||||
|
if err := CheckComplexity(returnType); err != nil {
|
||||||
if returnType.QMapOf() {
|
return CppParameter{}, nil, err
|
||||||
return CppParameter{}, nil, ErrTooComplex // e.g. QVariant constructor
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inner := typeString[opos+1 : epos]
|
inner := typeString[opos+1 : epos]
|
||||||
@ -406,23 +405,8 @@ func parseTypeString(typeString string) (CppParameter, []CppParameter, error) {
|
|||||||
|
|
||||||
insert := parseSingleTypeString(p)
|
insert := parseSingleTypeString(p)
|
||||||
|
|
||||||
if insert.QMapOf() {
|
if err := CheckComplexity(insert); err != nil {
|
||||||
return CppParameter{}, nil, ErrTooComplex // Example???
|
return CppParameter{}, nil, err
|
||||||
}
|
|
||||||
if insert.ParameterType == "QList<QVariant>" {
|
|
||||||
return CppParameter{}, nil, ErrTooComplex // e.g. QVariant constructor - this has a deleted copy-constructor so we can't get it over the CABI boundary by value
|
|
||||||
}
|
|
||||||
if insert.ParameterType == "void **" {
|
|
||||||
return CppParameter{}, nil, ErrTooComplex // e.g. qobjectdefs.h QMetaObject->Activate()
|
|
||||||
}
|
|
||||||
if insert.ParameterType == "void" && insert.Pointer {
|
|
||||||
return CppParameter{}, nil, ErrTooComplex // e.g. qobjectdefs.h QMetaObject->InvokeOnGadget()
|
|
||||||
}
|
|
||||||
if insert.ParameterType == "char *&" {
|
|
||||||
return CppParameter{}, nil, ErrTooComplex // e.g. QDataStream.operator<<()
|
|
||||||
}
|
|
||||||
if insert.ParameterType == "qfloat16" {
|
|
||||||
return CppParameter{}, nil, ErrTooComplex // e.g. QDataStream - there is no such half-float type in C or Go
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if insert.ParameterType != "" {
|
if insert.ParameterType != "" {
|
||||||
|
29
cmd/genbindings/exceptions.go
Normal file
29
cmd/genbindings/exceptions.go
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
func CheckComplexity(p CppParameter) error {
|
||||||
|
|
||||||
|
if p.QMapOf() {
|
||||||
|
return ErrTooComplex // Example???
|
||||||
|
}
|
||||||
|
if p.ParameterType == "QList<QVariant>" {
|
||||||
|
return ErrTooComplex // e.g. QVariant constructor - this has a deleted copy-constructor so we can't get it over the CABI boundary by value
|
||||||
|
}
|
||||||
|
if p.ParameterType == "QPolygon" || p.ParameterType == "QPolygonF" {
|
||||||
|
return ErrTooComplex // QPolygon extends a template type
|
||||||
|
}
|
||||||
|
if p.ParameterType == "void **" {
|
||||||
|
return ErrTooComplex // e.g. qobjectdefs.h QMetaObject->Activate()
|
||||||
|
}
|
||||||
|
if p.ParameterType == "void" && p.Pointer {
|
||||||
|
return ErrTooComplex // e.g. qobjectdefs.h QMetaObject->InvokeOnGadget()
|
||||||
|
}
|
||||||
|
if p.ParameterType == "char *&" {
|
||||||
|
return ErrTooComplex // e.g. QDataStream.operator<<()
|
||||||
|
}
|
||||||
|
if p.ParameterType == "qfloat16" {
|
||||||
|
return ErrTooComplex // e.g. QDataStream - there is no such half-float type in C or Go
|
||||||
|
}
|
||||||
|
|
||||||
|
// Should be OK
|
||||||
|
return nil
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user