From a81d2c2db581296c794c282f99b7545494ae7cf2 Mon Sep 17 00:00:00 2001 From: Stefan Salewski Date: Sun, 17 Sep 2017 20:45:00 +0200 Subject: [PATCH] added support for 75 interface signals --- tests/gen.nim | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/tests/gen.nim b/tests/gen.nim index 36d4026..cf1abc7 100644 --- a/tests/gen.nim +++ b/tests/gen.nim @@ -822,6 +822,58 @@ proc writeInterface(info: GIInterfaceInfo) = #output.writeLine(" ", mangleName(gBaseInfoGetName(info)) & "00" & EM & " {.pure.} = object") #output.writeLine(" ", mangleName(gBaseInfoGetName(info)) & EM & " = ref object") #output.writeLine(" impl*: ptr " & mangleName(gBaseInfoGetName(info)) & "00") + + ################################ + + let numsig = info.gInterfaceInfoGetNSignals + if numsig > 0: output.writeLine("") + for j in 0 .. 0 or gTypeInfoGetTag(zzzu) != GITypeTag.VOID: + var memo = "" + memo.add(gCallableInfoGetNArgs(signalInfo)) + memo.add('|') + var plist, arglist: string + var replist: TableRef[string, string] + (plist, arglist, replist) = genP(signalInfo, true, info) + memo.add(plist) + memo.add('|') + (plist, arglist, replist) = genP(signalInfo, false, info) + memo.add(plist) + memo = memo.replace("\n ", "") + supmod.writeLine(" \"" & ($gBaseInfoGetName(signalInfo)).replace("-", "_") & "|" & $gBaseInfoGetName(info) & "|" & memo & "\",") + if gCallableInfoGetNArgs(signalInfo) > 0: + var plist, arglist: string + var replist: TableRef[string, string] + (plist, arglist, replist) = genP(signalInfo, false, nil) + echo plist + echo arglist + if replist.len > 0: + for k, v in replist: + stdout.write(k & "--" & v & " ") + stdout.writeLine("") + echo "PPP ", gBaseInfoGetName(signalInfo), gCallableInfoGetNArgs(signalInfo) + h = h.replace(")", "; xdata: pointer)") + else: + h = h.replace(")", "xdata: pointer)") + var xxx = mangleName(gBaseInfoGetName(info)) + output.write("proc " & mangleName("sc_" & $gBaseInfoGetName(signalInfo)) & EM & "(self: " & xxx & "; ") + if gCallableInfoGetNArgs(signalInfo) > 0 or gTypeInfoGetTag(zzzu) != GITypeTag.VOID: + output.writeLine(" p: proc (self: ptr " & xxx & "00; " & h & " {.cdecl.}, xdata: pointer = nil): culong =") + else: + output.writeLine(" p: proc (self: ptr gobject.Object00; " & h & " {.cdecl.}, xdata: pointer = nil): culong =") + output.write(" g_signal_connect_data(self.impl, \"") + output.write($gBaseInfoGetName(signalInfo)) + output.writeLine("\", cast[GCallback](p), xdata, nil, cast[ConnectFlags](0))") + + ################################ + let nMethods = gInterfaceInfoGetNMethods(info) for j in 0 ..