small fix for proc name conflict
This commit is contained in:
parent
0f16a23adc
commit
cfd8ca4c9f
1 changed files with 150 additions and 25 deletions
175
tests/gen.nim
175
tests/gen.nim
|
|
@ -1,6 +1,6 @@
|
||||||
# High level gobject-introspection based GTK4/GTK3 bindings for the Nim programming language
|
# High level gobject-introspection based GTK4/GTK3 bindings for the Nim programming language
|
||||||
# nimpretty --maxLineLen:130 gen.nim
|
# nimpretty --maxLineLen:130 gen.nim
|
||||||
# v 0.9.4 2021-SEP-16
|
# v 0.9.5 2021-SEP-29
|
||||||
# (c) S. Salewski 2018, 2019, 2020, 2021
|
# (c) S. Salewski 2018, 2019, 2020, 2021
|
||||||
|
|
||||||
# usefull for finding death code:
|
# usefull for finding death code:
|
||||||
|
|
@ -43,6 +43,8 @@
|
||||||
|
|
||||||
# {.warning[CStringConv]: off.} # does not work with older compilers
|
# {.warning[CStringConv]: off.} # does not work with older compilers
|
||||||
|
|
||||||
|
# isRegisteredTypeInfo(info) was never used before v0.9.5, but may be useful!
|
||||||
|
|
||||||
from os import `/`, paramCount
|
from os import `/`, paramCount
|
||||||
import gir, gobject, glib
|
import gir, gobject, glib
|
||||||
import strutils
|
import strutils
|
||||||
|
|
@ -357,6 +359,9 @@ fixedProcNames["gst_gl_buffer_init_once"] = "bufferInitOnce"
|
||||||
fixedProcNames["gst_gl_memory_init_once"] = "memoryInitOnce"
|
fixedProcNames["gst_gl_memory_init_once"] = "memoryInitOnce"
|
||||||
fixedProcNames["gst_gl_memory_pbo_init_once"] = "memoryPboInitOnce"
|
fixedProcNames["gst_gl_memory_pbo_init_once"] = "memoryPboInitOnce"
|
||||||
|
|
||||||
|
fixedProcNames["g_memory_monitor_dup_default"] = "dupDefaultMemoryMonitor"
|
||||||
|
fixedProcNames["g_power_profile_monitor_dup_default"] = "dupDefaultPowerProfileMonitor"
|
||||||
|
|
||||||
defaultParameters["gtk_window_new"] = "`type` WindowType WindowType.toplevel"
|
defaultParameters["gtk_window_new"] = "`type` WindowType WindowType.toplevel"
|
||||||
defaultParameters["gtk_application_new"] = "flags gio.ApplicationFlags {}"
|
defaultParameters["gtk_application_new"] = "flags gio.ApplicationFlags {}"
|
||||||
defaultParameters["gtk_builder_new_from_string"] = "length int64 -1"
|
defaultParameters["gtk_builder_new_from_string"] = "length int64 -1"
|
||||||
|
|
@ -569,8 +574,36 @@ gstrtsp.RTSPTimeRange
|
||||||
gstrtsp.RTSPTime
|
gstrtsp.RTSPTime
|
||||||
gstrtsp.RTSPTime2
|
gstrtsp.RTSPTime2
|
||||||
gtk.CssLocation
|
gtk.CssLocation
|
||||||
|
gstvideo.VideoFrame
|
||||||
|
gstvideo.VideoMeta
|
||||||
|
gstvideo.VideoFormatInfo
|
||||||
|
gstvideo.VideoMasteringDisplayInfo
|
||||||
|
gstvideo.VideoCaptionMeta
|
||||||
|
gstvideo.VideoCropMeta
|
||||||
|
gstvideo.VideoTimeCodeConfig
|
||||||
|
gstvideo.VideoContentLightLevel
|
||||||
|
gstvideo.VideoAncillary
|
||||||
|
gstvideo.VideoColorimetry
|
||||||
|
gstvideo.VideoMetaTransform
|
||||||
|
gstvideo.VideoResampler
|
||||||
|
gstsdp.MIKEYEncryptInfo
|
||||||
|
gstsdp.MIKEYPayloadKEMAC
|
||||||
|
gstsdp.SDPAttribute
|
||||||
|
gstsdp.MIKEYPayloadSP
|
||||||
|
gstsdp.MIKEYPayloadRAND
|
||||||
|
gstsdp.MIKEYPayloadKeyData
|
||||||
|
gstsdp.MIKEYPayloadPKE
|
||||||
|
gstrtp.RTCPPacket
|
||||||
|
gstrtp.RTCPBuffer
|
||||||
|
gstrtp.RTPBuffer
|
||||||
|
gstcheck.StreamConsistency
|
||||||
|
gstcheck.HarnessThread
|
||||||
|
gstcheck.CheckABIStruct
|
||||||
|
gstcheck.Harness
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const autoCallerAlloc = """
|
const autoCallerAlloc = """
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
@ -701,7 +734,82 @@ nice.InputMessage
|
||||||
nice.OutputMessage
|
nice.OutputMessage
|
||||||
gio.InputMessage
|
gio.InputMessage
|
||||||
gio.OutputMessage
|
gio.OutputMessage
|
||||||
|
gstvideo.VideoTimeCodeMeta
|
||||||
|
gstvideo.VideoGLTextureUploadMeta
|
||||||
|
gstvideo.VideoAFDMeta
|
||||||
|
gstvideo.VideoOverlayCompositionMeta
|
||||||
|
gstvideo.VideoRegionOfInterestMeta
|
||||||
|
gstvideo.VideoAffineTransformationMeta
|
||||||
|
gstvideo.VideoColorPrimariesInfo
|
||||||
|
gstmpegts.T2DeliverySystemCellExtension
|
||||||
|
gstmpegts.SatelliteDeliverySystemDescriptor
|
||||||
|
gstmpegts.AtscEITEvent
|
||||||
|
gstmpegts.AtscStringSegment
|
||||||
|
gstmpegts.AtscETT
|
||||||
|
gstmpegts.BAT
|
||||||
|
gstmpegts.EIT
|
||||||
|
gstmpegts.DvbMultilingualNetworkNameItem
|
||||||
|
gstmpegts.ISO639LanguageDescriptor
|
||||||
|
gstmpegts.LogicalChannelDescriptor
|
||||||
|
gstmpegts.BATStream
|
||||||
|
gstmpegts.AtscVCT
|
||||||
|
gstmpegts.DVBLinkageEvent
|
||||||
|
gstmpegts.T2DeliverySystemCell
|
||||||
|
gstmpegts.TOT
|
||||||
|
gstmpegts.ExtendedEventItem
|
||||||
|
gstmpegts.ComponentDescriptor
|
||||||
|
gstmpegts.AtscMultString
|
||||||
|
gstmpegts.DVBLinkageMobileHandOver
|
||||||
|
gstmpegts.TerrestrialDeliverySystemDescriptor
|
||||||
|
gstsdp.SDPBandwidth
|
||||||
|
gstsdp.SDPAttribute
|
||||||
|
gstsdp.SDPConnection
|
||||||
|
gstsdp.MIKEYPayloadSPParam
|
||||||
|
gstsdp.SDPZone
|
||||||
|
gstsdp.SDPTime
|
||||||
|
gstsdp.MIKEYMapSRTP
|
||||||
|
gstsdp.SDPOrigin
|
||||||
|
gstsdp.SDPKey
|
||||||
|
gstrtp.RTPPayloadInfo
|
||||||
|
gstrtp.RTPSourceMeta
|
||||||
|
soup.MessageHeadersIter
|
||||||
|
soup.Range
|
||||||
|
soup.Connection
|
||||||
|
soup.MessageQueueItem
|
||||||
|
soup.MessageQueue
|
||||||
|
gstgl.GLMemory
|
||||||
|
gstgl.GLFuncs
|
||||||
|
gstgl.GLRenderbuffer
|
||||||
|
gstgl.GLSyncMeta
|
||||||
|
gstgl.GLBuffer
|
||||||
|
gstgl.GLMemoryPBO
|
||||||
|
gstsdp.MIKEYDecryptInfo
|
||||||
|
gstsdp.MIKEYPayloadT
|
||||||
|
javascriptcore.ClassVTable
|
||||||
|
gstaudio.AudioRingBufferSpec
|
||||||
|
gstaudio.AudioDownmixMeta
|
||||||
|
gstaudio.AudioCdSrcTrack
|
||||||
|
gstaudio.AudioClippingMeta
|
||||||
|
gstaudio.AudioMeta
|
||||||
|
gstaudio.AudioBuffer
|
||||||
|
gstaudio.AudioSinkClassExtension
|
||||||
|
gstaudio.AudioFormatInfo
|
||||||
|
gdkpixbuf.PixbufModulePattern
|
||||||
|
gdkpixbuf.PixbufModule
|
||||||
|
glib.TreeNode
|
||||||
|
glib.UriParamsIter
|
||||||
|
gstvideo.VideoBarMeta
|
||||||
|
gstvideo.VideoMasteringDisplayInfoCoordinates
|
||||||
|
gstnet.NetControlMessageMeta
|
||||||
|
gstnet.NetAddressMeta
|
||||||
|
gstbase.CollectData
|
||||||
|
gstrtsp.RTSPWatchFuncs
|
||||||
|
gstcheck.CheckLogFilter
|
||||||
|
gtk.PrintBackend
|
||||||
|
gsk.ParseLocation
|
||||||
""""
|
""""
|
||||||
|
# some structs like glib.TreeNode are hard, as some functions returns pointers to that struct, and still we need field access!
|
||||||
|
# same for gtk.PrintBackend
|
||||||
|
|
||||||
var callerAlloc = (manCallerAlloc & autoCallerAlloc).split.toHashSet
|
var callerAlloc = (manCallerAlloc & autoCallerAlloc).split.toHashSet
|
||||||
#var callerAlloc = (autoCallerAlloc).split.toHashSet
|
#var callerAlloc = (autoCallerAlloc).split.toHashSet
|
||||||
|
|
@ -1808,6 +1916,8 @@ proc writeMethod(info: GIBaseInfo; minfo: GIFunctionInfo) =
|
||||||
if sym == "nice_agent_get_selected_pair": return # was very wrong, fixed manually
|
if sym == "nice_agent_get_selected_pair": return # was very wrong, fixed manually
|
||||||
if sym == "g_hash_table_destroy": return
|
if sym == "g_hash_table_destroy": return
|
||||||
|
|
||||||
|
if sym == "g_variant_ref_sink": return # we need this early, so add manually early
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|
||||||
for tryOut2Ret in [false, true]:
|
for tryOut2Ret in [false, true]:
|
||||||
|
|
@ -2016,7 +2126,8 @@ proc writeMethod(info: GIBaseInfo; minfo: GIFunctionInfo) =
|
||||||
### methodBuffer.writeLine(" result.ignoreFinalizer = true") # as we have always to attach one with ARC.
|
### methodBuffer.writeLine(" result.ignoreFinalizer = true") # as we have always to attach one with ARC.
|
||||||
else: assert false
|
else: assert false
|
||||||
if ((gFunctionInfoGetFlags(mInfo).int and GIFunctionInfoFlags.IS_CONSTRUCTOR.int) != 0 and gBaseInfoGetName(info) == "Variant"):
|
if ((gFunctionInfoGetFlags(mInfo).int and GIFunctionInfoFlags.IS_CONSTRUCTOR.int) != 0 and gBaseInfoGetName(info) == "Variant"):
|
||||||
methodBuffer.writeLine(" result.ignoreFinalizer = true")
|
# methodBuffer.writeLine(" result.ignoreFinalizer = true") # before v0.9.5
|
||||||
|
methodBuffer.writeLine(" discard g_variant_ref_sink(result.impl)")
|
||||||
if (gFunctionInfoGetFlags(mInfo).int and GIFunctionInfoFlags.IS_CONSTRUCTOR.int) == 0:
|
if (gFunctionInfoGetFlags(mInfo).int and GIFunctionInfoFlags.IS_CONSTRUCTOR.int) == 0:
|
||||||
break
|
break
|
||||||
elif ngrRet.res == glist:
|
elif ngrRet.res == glist:
|
||||||
|
|
@ -2559,6 +2670,11 @@ proc writeStruct(info: GIStructInfo) =
|
||||||
output.writeLine(KeymapKeyProx)
|
output.writeLine(KeymapKeyProx)
|
||||||
if mangleName(gBaseInfoGetName(info)) == "PageRange":
|
if mangleName(gBaseInfoGetName(info)) == "PageRange":
|
||||||
output.writeLine(PageRangeProx)
|
output.writeLine(PageRangeProx)
|
||||||
|
|
||||||
|
if gBaseInfoGetName(info) == "Variant" and moduleNamespace == "glib": # make it available early
|
||||||
|
output.writeLine("\nproc g_variant_ref_sink(self: ptr Variant00): ptr Variant00 {.importc, libprag.}")
|
||||||
|
|
||||||
|
|
||||||
for i, mInfo in mseq:
|
for i, mInfo in mseq:
|
||||||
writeMethod(info, minfo)
|
writeMethod(info, minfo)
|
||||||
if i == 0:
|
if i == 0:
|
||||||
|
|
@ -3809,6 +3925,8 @@ proc cstringArrayToSeq*(s: ptr cstring): seq[string] =
|
||||||
s.insert([h])
|
s.insert([h])
|
||||||
break
|
break
|
||||||
|
|
||||||
|
# NOTE: We may? remove all structs from xcallerAlloc when that struct ever is returned by a function! # v0.9.5
|
||||||
|
# And we may remove all structs with a GType!
|
||||||
# https://discourse.gnome.org/t/what-is-the-difference-between-gmutex-and-gchecksum/4542
|
# https://discourse.gnome.org/t/what-is-the-difference-between-gmutex-and-gchecksum/4542
|
||||||
if namespace notin ["HarfBuzz", "cairo"]: # auto-detecting the "light" entities is too hard, but here we get some candidates
|
if namespace notin ["HarfBuzz", "cairo"]: # auto-detecting the "light" entities is too hard, but here we get some candidates
|
||||||
for info in s:
|
for info in s:
|
||||||
|
|
@ -3818,17 +3936,35 @@ proc cstringArrayToSeq*(s: ptr cstring): seq[string] =
|
||||||
let n = gBaseInfoGetName(info)
|
let n = gBaseInfoGetName(info)
|
||||||
if n[0] != '_' and not n.endsWith("Private") and not (namespace == "Gdk" and n.startsWith("Event")) and not (namespace ==
|
if n[0] != '_' and not n.endsWith("Private") and not (namespace == "Gdk" and n.startsWith("Event")) and not (namespace ==
|
||||||
"Pango" and n.startsWith("Attribute")):
|
"Pango" and n.startsWith("Attribute")):
|
||||||
if gBaseInfoGetType(info) == GIInfoType.STRUCT:
|
|
||||||
# if not ((gStructInfoIsGtypeStruct(info) and n != "ObjectClass")): # v0.9.4 with Debian Buster crash
|
if not isRegisteredTypeInfo(info) or gRegisteredTypeInfoGetGType(info) == G_TYPE_NONE: # v0.9.5
|
||||||
# if (not gStructInfoIsGtypeStruct(info) or (n == "ObjectClass")): # equivalent to above
|
|
||||||
if (not gStructInfoIsGtypeStruct(info) and (n != "ObjectClass")): # this may work -- the same as suggested by Mr. 1jss
|
if gBaseInfoGetType(info) == GIInfoType.STRUCT:
|
||||||
|
# if not ((gStructInfoIsGtypeStruct(info) and n != "ObjectClass")): # v0.9.4 with Debian Buster crash
|
||||||
|
# if (not gStructInfoIsGtypeStruct(info) or (n == "ObjectClass")): # equivalent to above
|
||||||
|
if (not gStructInfoIsGtypeStruct(info) and (n != "ObjectClass")): # this may work -- the same as suggested by Mr. 1jss
|
||||||
|
var lightObj = true
|
||||||
|
for n in "free unref get_qdata".split:
|
||||||
|
if gStructInfoFindMethod(info, n) != nil: # crash for legacy Debian Buster
|
||||||
|
lightObj = false
|
||||||
|
if lightObj:
|
||||||
|
for j in 0.cint ..< gStructInfoGetNMethods(info):
|
||||||
|
let minfo = gStructInfoGetMethod(info, j)
|
||||||
|
if (gFunctionInfoGetFlags(mInfo).int and GIFunctionInfoFlags.IS_CONSTRUCTOR.int) != 0:
|
||||||
|
lightObj = false
|
||||||
|
if lightObj:
|
||||||
|
let el = moduleNamespace & '.' & $n
|
||||||
|
if not manCallerAlloc.contains(el) and not noCallerAlloc.contains(el):
|
||||||
|
xcallerAlloc.incl(el)
|
||||||
|
|
||||||
|
if gBaseInfoGetType(info) == GIInfoType.UNION:
|
||||||
var lightObj = true
|
var lightObj = true
|
||||||
for n in "free unref get_qdata".split:
|
for n in "free unref get_qdata".split:
|
||||||
if gStructInfoFindMethod(info, n) != nil: # crash for legacy Debian Buster
|
if gUnionInfoFindMethod(info, n) != nil:
|
||||||
lightObj = false
|
lightObj = false
|
||||||
if lightObj:
|
if lightObj:
|
||||||
for j in 0.cint ..< gStructInfoGetNMethods(info):
|
for j in 0.cint ..< gUnionInfoGetNMethods(info):
|
||||||
let minfo = gStructInfoGetMethod(info, j)
|
let minfo = gUnionInfoGetMethod(info, j)
|
||||||
if (gFunctionInfoGetFlags(mInfo).int and GIFunctionInfoFlags.IS_CONSTRUCTOR.int) != 0:
|
if (gFunctionInfoGetFlags(mInfo).int and GIFunctionInfoFlags.IS_CONSTRUCTOR.int) != 0:
|
||||||
lightObj = false
|
lightObj = false
|
||||||
if lightObj:
|
if lightObj:
|
||||||
|
|
@ -3836,21 +3972,6 @@ proc cstringArrayToSeq*(s: ptr cstring): seq[string] =
|
||||||
if not manCallerAlloc.contains(el) and not noCallerAlloc.contains(el):
|
if not manCallerAlloc.contains(el) and not noCallerAlloc.contains(el):
|
||||||
xcallerAlloc.incl(el)
|
xcallerAlloc.incl(el)
|
||||||
|
|
||||||
if gBaseInfoGetType(info) == GIInfoType.UNION:
|
|
||||||
var lightObj = true
|
|
||||||
for n in "free unref get_qdata".split:
|
|
||||||
if gUnionInfoFindMethod(info, n) != nil:
|
|
||||||
lightObj = false
|
|
||||||
if lightObj:
|
|
||||||
for j in 0.cint ..< gUnionInfoGetNMethods(info):
|
|
||||||
let minfo = gUnionInfoGetMethod(info, j)
|
|
||||||
if (gFunctionInfoGetFlags(mInfo).int and GIFunctionInfoFlags.IS_CONSTRUCTOR.int) != 0:
|
|
||||||
lightObj = false
|
|
||||||
if lightObj:
|
|
||||||
let el = moduleNamespace & '.' & $n
|
|
||||||
if not manCallerAlloc.contains(el) and not noCallerAlloc.contains(el):
|
|
||||||
xcallerAlloc.incl(el)
|
|
||||||
|
|
||||||
for info in s:
|
for info in s:
|
||||||
if gBaseInfoGetType(info) == GIInfoType.OBJECT:
|
if gBaseInfoGetType(info) == GIInfoType.OBJECT:
|
||||||
let ninterfaces = info.gObjectInfoGetNInterfaces
|
let ninterfaces = info.gObjectInfoGetNInterfaces
|
||||||
|
|
@ -4334,12 +4455,16 @@ launch()
|
||||||
# if not callerAlloc.contains(el):
|
# if not callerAlloc.contains(el):
|
||||||
# echo "maybe add: ", el
|
# echo "maybe add: ", el
|
||||||
|
|
||||||
|
#for el in xcallerAlloc:
|
||||||
|
# if not callerAlloc.contains(el):
|
||||||
|
# echo "maybe add: ", el
|
||||||
|
|
||||||
#echo "---"
|
#echo "---"
|
||||||
#for el in oldcallerAlloc:
|
#for el in oldcallerAlloc:
|
||||||
# if not xcallerAlloc.contains(el):
|
# if not xcallerAlloc.contains(el):
|
||||||
# echo el
|
# echo el
|
||||||
|
|
||||||
# 4342 lines
|
# 4467 lines
|
||||||
# gtk_icon_view_get_tooltip_context bug Candidate
|
# gtk_icon_view_get_tooltip_context bug Candidate
|
||||||
# gtk_tree_view_get_cursor bug
|
# gtk_tree_view_get_cursor bug
|
||||||
#
|
#
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue