mirror of
https://github.com/mappu/miqt.git
synced 2025-05-30 23:00:26 +00:00
emitcabi.go: Add projection of private signals
This commit is contained in:
parent
0e6905c39e
commit
2019f402a0
@ -889,6 +889,10 @@ extern "C" {
|
||||
}
|
||||
}
|
||||
|
||||
for _, m := range c.PrivateSignals {
|
||||
ret.WriteString(fmt.Sprintf("%s %s(%s* self, intptr_t slot);\n", m.ReturnType.RenderTypeCabi(), cabiConnectName(c, m), className))
|
||||
}
|
||||
|
||||
// delete
|
||||
if c.CanDelete {
|
||||
ret.WriteString(fmt.Sprintf("void %s(%s* self);\n", cabiDeleteName(c), className))
|
||||
@ -970,7 +974,9 @@ extern "C" {
|
||||
`)
|
||||
|
||||
for _, c := range src.Classes {
|
||||
for _, m := range c.Methods {
|
||||
methodsAndPrivateSignals := append(c.Methods, c.PrivateSignals...)
|
||||
|
||||
for _, m := range methodsAndPrivateSignals {
|
||||
if m.IsSignal {
|
||||
callback := "void " + cabiCallbackName(c, m) + "(intptr_t"
|
||||
|
||||
@ -1446,6 +1452,32 @@ extern "C" {
|
||||
}
|
||||
}
|
||||
|
||||
for _, m := range c.PrivateSignals {
|
||||
exactSignal := `&` + c.ClassName + `::` + m.CppCallTarget()
|
||||
|
||||
paramArgs := []string{"slot"}
|
||||
paramArgDefs := []string{"intptr_t cb"}
|
||||
|
||||
var signalCode string
|
||||
|
||||
for i, p := range m.Parameters {
|
||||
signalCode += emitAssignCppToCabi(fmt.Sprintf("\t\t%s sigval%d = ", p.RenderTypeCabi(), i+1), p, p.cParameterName())
|
||||
paramArgs = append(paramArgs, fmt.Sprintf("sigval%d", i+1))
|
||||
paramArgDefs = append(paramArgDefs, p.RenderTypeCabi()+" "+p.cParameterName())
|
||||
}
|
||||
|
||||
signalCode += "\t\t" + cabiCallbackName(c, m) + "(" + strings.Join(paramArgs, `, `) + ");\n"
|
||||
|
||||
ret.WriteString(
|
||||
`void ` + cabiConnectName(c, m) + `(` + methodPrefixName + `* self, intptr_t slot) {` + "\n" +
|
||||
"\t" + cppClassName + `::connect(self, ` + exactSignal + `, self, [=](` + emitParametersCpp(m) + `) {` + "\n" +
|
||||
signalCode +
|
||||
"\t});\n" +
|
||||
"}\n" +
|
||||
"\n",
|
||||
)
|
||||
}
|
||||
|
||||
// Delete
|
||||
// If we subclassed, our class destructor is always virtual. Therefore
|
||||
// we can delete from the self ptr without any dynamic_cast<>
|
||||
|
Loading…
x
Reference in New Issue
Block a user