Skip to content

Conversation

ousnius
Copy link
Contributor

@ousnius ousnius commented Sep 24, 2025

transfer-container is usually used with GLib.List and GLib.SList as return values.
The ownership of the returned container is transferred, but the ownership of the elements in the container is not.

API examples:

  • gdk_pixbuf_get_formats
  • gtk_textiter_get_tags

Added a test that returns a container with two static elements that are owned by native code.

  • I agree that my contribution may be licensed either under MIT or any version of LGPL license.

@badcel
Copy link
Member

badcel commented Sep 26, 2025

The generated xml looks like this:

<function name="returns_transfer_container"
                c:identifier="girtest_untyped_record_tester_returns_transfer_container"
                introspectable="0">
        <source-position filename="girtest-untyped-record-tester.h" line="40"/>
        <return-value>
          <type name="UntypedRecordContainerTester"
                c:type="GirTestUntypedRecordContainerTester*"/>
        </return-value>
      </function>

Transfer container is not specified in the xml.

If you want to see if scenarios similar to gdk_pixbuf_get_formats are working, I would suggest creating a test that is as close as possible to it. Otherwise we risk testing something that is not relevant.

As GdkPixbufFormat is a typed record I would suggest:

  • Create a static method in GirTestTypedRecordTester which returns a SList of GirTestTypedRecordTester
  • Ensure transfer container is set like in gdk_pixbuf_get_formats :
<return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="gdk-pixbuf/gdk-pixbuf-io.c"
               line="3432">A list of
  support image formats.</doc>
          <type name="GLib.SList" c:type="GSList*">
            <type name="PixbufFormat"/>
          </type>
        </return-value>
  • Put 2 static elements inside it from the C side of GirTestTypedRecordTester.

…lues

"transfer-container" is usually used with GLib.List and GLib.SList as return values.

The ownership of the returned container is transferred, but the ownership of the elements in the container is not.

Example: gdk_pixbuf_get_formats
@ousnius ousnius force-pushed the return-untyped-record-container branch from 4e36f15 to 3cbe3a2 Compare September 26, 2025 14:35
@ousnius ousnius marked this pull request as ready for review September 26, 2025 14:35
@badcel
Copy link
Member

badcel commented Sep 26, 2025

These untyped records exist:

Adw::AboutDialogClass
Adw::AboutWindowClass
Adw::ActionRowClass
Adw::AlertDialogClass
Adw::ApplicationClass
Adw::ApplicationWindowClass
Adw::AvatarClass
Adw::BannerClass
Adw::BinClass
Adw::BottomSheetClass
Adw::BreakpointBinClass
Adw::BreakpointClass
Adw::ButtonContentClass
Adw::ButtonRowClass
Adw::CarouselClass
Adw::CarouselIndicatorDotsClass
Adw::CarouselIndicatorLinesClass
Adw::ClampClass
Adw::ClampLayoutClass
Adw::ClampScrollableClass
Adw::ComboRowClass
Adw::DialogClass
Adw::EntryRowClass
Adw::EnumListItemClass
Adw::EnumListModelClass
Adw::ExpanderRowClass
Adw::FlapClass
Adw::HeaderBarClass
Adw::InlineViewSwitcherClass
Adw::LayoutClass
Adw::LayoutSlotClass
Adw::LeafletClass
Adw::LeafletPageClass
Adw::MessageDialogClass
Adw::MultiLayoutViewClass
Adw::NavigationPageClass
Adw::NavigationSplitViewClass
Adw::NavigationViewClass
Adw::OverlaySplitViewClass
Adw::PasswordEntryRowClass
Adw::PreferencesDialogClass
Adw::PreferencesGroupClass
Adw::PreferencesPageClass
Adw::PreferencesRowClass
Adw::PreferencesWindowClass
Adw::SpinnerClass
Adw::SpinnerPaintableClass
Adw::SpinRowClass
Adw::SplitButtonClass
Adw::SqueezerClass
Adw::SqueezerPageClass
Adw::StatusPageClass
Adw::StyleManagerClass
Adw::SwipeableInterface
Adw::SwipeTrackerClass
Adw::SwitchRowClass
Adw::TabBarClass
Adw::TabButtonClass
Adw::TabOverviewClass
Adw::TabPageClass
Adw::TabViewClass
Adw::ToastClass
Adw::ToastOverlayClass
Adw::ToggleClass
Adw::ToggleGroupClass
Adw::ToolbarViewClass
Adw::ViewStackClass
Adw::ViewStackPageClass
Adw::ViewStackPagesClass
Adw::ViewSwitcherBarClass
Adw::ViewSwitcherClass
Adw::ViewSwitcherTitleClass
Adw::WindowClass
Adw::WindowTitleClass
Adw::WrapBoxClass
Adw::WrapLayoutClass
freetype2::Bitmap
freetype2::Face
freetype2::Library
Gdk::ContentProviderClass
Gdk::KeymapKey
Gdk::PaintableInterface
Gdk::TimeCoord
GdkPixbuf::PixbufAnimationClass
GdkPixbuf::PixbufAnimationIterClass
GdkPixbuf::PixbufLoaderClass
GdkPixbuf::PixbufModule
GdkPixbuf::PixbufModulePattern
Gio::ActionEntry
Gio::ActionGroupInterface
Gio::ActionInterface
Gio::ActionMapInterface
Gio::AppInfoIface
Gio::AppLaunchContextClass
Gio::ApplicationClass
Gio::ApplicationCommandLineClass
Gio::AsyncInitableIface
Gio::AsyncResultIface
Gio::BufferedInputStreamClass
Gio::BufferedOutputStreamClass
Gio::CancellableClass
Gio::CharsetConverterClass
Gio::ConverterIface
Gio::ConverterInputStreamClass
Gio::ConverterOutputStreamClass
Gio::DatagramBasedInterface
Gio::DataInputStreamClass
Gio::DataOutputStreamClass
Gio::DBusErrorEntry
Gio::DBusInterfaceIface
Gio::DBusInterfaceSkeletonClass
Gio::DBusInterfaceVTable
Gio::DBusObjectIface
Gio::DBusObjectManagerClientClass
Gio::DBusObjectManagerIface
Gio::DBusObjectManagerServerClass
Gio::DBusObjectProxyClass
Gio::DBusObjectSkeletonClass
Gio::DBusProxyClass
Gio::DBusSubtreeVTable
Gio::DebugControllerDBusClass
Gio::DebugControllerInterface
Gio::DesktopAppInfoClass
Gio::DesktopAppInfoLookupIface
Gio::DriveIface
Gio::DtlsClientConnectionInterface
Gio::DtlsConnectionInterface
Gio::DtlsServerConnectionInterface
Gio::EmblemedIconClass
Gio::FileAttributeInfo
Gio::FileDescriptorBasedIface
Gio::FileEnumeratorClass
Gio::FileIface
Gio::FileInputStreamClass
Gio::FileIOStreamClass
Gio::FileMonitorClass
Gio::FilenameCompleterClass
Gio::FileOutputStreamClass
Gio::FilterInputStreamClass
Gio::FilterOutputStreamClass
Gio::IconIface
Gio::InetAddressClass
Gio::InetAddressMaskClass
Gio::InetSocketAddressClass
Gio::InitableIface
Gio::InputMessage
Gio::InputStreamClass
Gio::InputVector
Gio::IOStreamClass
Gio::ListModelInterface
Gio::ListStoreClass
Gio::LoadableIconIface
Gio::MemoryInputStreamClass
Gio::MemoryMonitorInterface
Gio::MemoryOutputStreamClass
Gio::MenuAttributeIterClass
Gio::MenuLinkIterClass
Gio::MenuModelClass
Gio::MountIface
Gio::MountOperationClass
Gio::NativeSocketAddressClass
Gio::NativeVolumeMonitorClass
Gio::NetworkAddressClass
Gio::NetworkMonitorInterface
Gio::NetworkServiceClass
Gio::OsxAppInfoClass
Gio::OutputMessage
Gio::OutputStreamClass
Gio::OutputVector
Gio::PermissionClass
Gio::PollableInputStreamInterface
Gio::PollableOutputStreamInterface
Gio::PowerProfileMonitorInterface
Gio::ProxyAddressClass
Gio::ProxyAddressEnumeratorClass
Gio::ProxyInterface
Gio::ProxyResolverInterface
Gio::RemoteActionGroupInterface
Gio::ResolverClass
Gio::SeekableIface
Gio::SettingsBackendClass
Gio::SettingsClass
Gio::SimpleActionGroupClass
Gio::SimpleProxyResolverClass
Gio::SocketAddressClass
Gio::SocketAddressEnumeratorClass
Gio::SocketClass
Gio::SocketClientClass
Gio::SocketConnectableIface
Gio::SocketConnectionClass
Gio::SocketControlMessageClass
Gio::SocketListenerClass
Gio::SocketServiceClass
Gio::StaticResource
Gio::TcpConnectionClass
Gio::TcpWrapperConnectionClass
Gio::ThreadedResolverClass
Gio::ThreadedSocketServiceClass
Gio::TlsBackendInterface
Gio::TlsCertificateClass
Gio::TlsClientConnectionInterface
Gio::TlsConnectionClass
Gio::TlsDatabaseClass
Gio::TlsFileDatabaseInterface
Gio::TlsInteractionClass
Gio::TlsPasswordClass
Gio::TlsServerConnectionInterface
Gio::UnixConnectionClass
Gio::UnixCredentialsMessageClass
Gio::UnixFDListClass
Gio::UnixFDMessageClass
Gio::UnixInputStreamClass
Gio::UnixOutputStreamClass
Gio::UnixSocketAddressClass
Gio::VfsClass
Gio::VolumeIface
Gio::VolumeMonitorClass
Gio::Win32InputStreamClass
Gio::Win32OutputStreamClass
Gio::ZlibCompressorClass
Gio::ZlibDecompressorClass
GirTest::_MethodHidingSubclassClass
GirTest::AliasTesterClass
GirTest::BitfieldTesterClass
GirTest::ByteArrayTesterClass
GirTest::BytesTesterClass
GirTest::CallbackTesterClass
GirTest::ClassTesterClass
GirTest::CLongRecordTester
GirTest::CULongRecordTester
GirTest::EnumTesterClass
GirTest::ErrorTesterClass
GirTest::ExecutorImplClass
GirTest::ExecutorInterface
GirTest::IntegerArrayTesterClass
GirTest::InterfaceSignalTesterClass
GirTest::LongRecordTester
GirTest::MethodHidingBaseClass
GirTest::MethodHidingSubclassClass
GirTest::PlatformStringArrayNullTerminatedTesterClass
GirTest::PrimitiveValueTypeTesterClass
GirTest::PropertyTesterClass
GirTest::RenameToTesterClass
GirTest::ReturningSignalTesterClass
GirTest::SignalerInterface
GirTest::SignalTesterClass
GirTest::StringArrayTesterClass
GirTest::StringTesterClass
GirTest::ULongRecordTester
GirTest::UntypedRecordContainerTester
GirTest::UntypedRecordTester
GirTest::Utf8StringArrayNullTerminatedTesterClass
GLib::Completion
GLib::Cond
GLib::DebugKey
GLib::HashTableIter
GLib::Hook
GLib::HookList
GLib::IConv
GLib::IOFuncs
GLib::List
GLib::LogField
GLib::MarkupParser
GLib::MemVTable
GLib::Node
GLib::Once
GLib::OptionEntry
GLib::PathBuf
GLib::Private
GLib::Queue
GLib::RecMutex
GLib::RWLock
GLib::Scanner
GLib::ScannerConfig
GLib::SList
GLib::SourceCallbackFuncs
GLib::SourceFuncs
GLib::StaticMutex
GLib::StaticPrivate
GLib::StaticRecMutex
GLib::StaticRWLock
GLib::TestConfig
GLib::TestLogBuffer
GLib::TestLogMsg
GLib::ThreadFunctions
GLib::ThreadPool
GLib::TimeVal
GLib::TrashStack
GLib::Tuples
GLib::UnixPipe
GLib::UriParamsIter
GLib::VariantIter
GObject::CClosure
GObject::ClosureNotifyData
GObject::EnumClass
GObject::EnumValue
GObject::FlagsClass
GObject::FlagsValue
GObject::InitiallyUnownedClass
GObject::InterfaceInfo
GObject::ObjectClass
GObject::ObjectConstructParam
GObject::Parameter
GObject::ParamSpecClass
GObject::ParamSpecTypeInfo
GObject::SignalInvocationHint
GObject::SignalQuery
GObject::TypeClass
GObject::TypeFundamentalInfo
GObject::TypeInfo
GObject::TypeInstance
GObject::TypeInterface
GObject::TypeModuleClass
GObject::TypePluginClass
GObject::TypeQuery
GObject::TypeValueTable
GObject::WeakRef
Graphene::Simd4F
Graphene::Simd4X4F
Gsk::ColorStop
Gsk::GLShaderClass
Gsk::ParseLocation
Gsk::RoundedRect
Gsk::Shadow
Gst::AllocatorClass
Gst::BinClass
Gst::BufferPoolAcquireParams
Gst::BufferPoolClass
Gst::BusClass
Gst::ByteArrayInterface
Gst::ChildProxyInterface
Gst::ClockClass
Gst::ClockEntry
Gst::ControlBindingClass
Gst::ControlSourceClass
Gst::CustomMeta
Gst::DebugCategory
Gst::DeviceClass
Gst::DeviceMonitorClass
Gst::DeviceProviderClass
Gst::ElementClass
Gst::FormatDefinition
Gst::GhostPadClass
Gst::MapInfo
Gst::Meta
Gst::MetaInfo
Gst::MetaTransformCopy
Gst::ObjectClass
Gst::PadClass
Gst::PadProbeInfo
Gst::PadTemplateClass
Gst::ParamSpecArray
Gst::ParamSpecFraction
Gst::ParentBufferMeta
Gst::PipelineClass
Gst::PluginDesc
Gst::PollFD
Gst::PresetInterface
Gst::ProtectionMeta
Gst::ProxyPadClass
Gst::ReferenceTimestampMeta
Gst::RegistryClass
Gst::SharedTaskPoolClass
Gst::StreamClass
Gst::StreamCollectionClass
Gst::SystemClockClass
Gst::TagSetterInterface
Gst::TaskClass
Gst::TaskPoolClass
Gst::TimedValue
Gst::TocSetterInterface
Gst::TracerClass
Gst::URIHandlerInterface
Gst::ValueTable
GstApp::AppSinkCallbacks
GstApp::AppSinkClass
GstApp::AppSrcCallbacks
GstApp::AppSrcClass
GstAudio::AudioAggregatorClass
GstAudio::AudioAggregatorConvertPadClass
GstAudio::AudioAggregatorPadClass
GstAudio::AudioBaseSinkClass
GstAudio::AudioBaseSrcClass
GstAudio::AudioBuffer
GstAudio::AudioCdSrcClass
GstAudio::AudioCdSrcTrack
GstAudio::AudioClippingMeta
GstAudio::AudioClockClass
GstAudio::AudioDecoderClass
GstAudio::AudioDownmixMeta
GstAudio::AudioEncoderClass
GstAudio::AudioFilterClass
GstAudio::AudioLevelMeta
GstAudio::AudioMeta
GstAudio::AudioRingBufferClass
GstAudio::AudioRingBufferSpec
GstAudio::AudioSinkClass
GstAudio::AudioSinkClassExtension
GstAudio::AudioSrcClass
GstAudio::DsdPlaneOffsetMeta
GstAudio::StreamVolumeInterface
GstBase::AggregatorClass
GstBase::AggregatorPadClass
GstBase::BaseParseClass
GstBase::BaseSinkClass
GstBase::BaseSrcClass
GstBase::BaseTransformClass
GstBase::BitReader
GstBase::BitWriter
GstBase::ByteReader
GstBase::ByteWriter
GstBase::CollectData
GstBase::CollectPadsClass
GstBase::DataQueueClass
GstBase::DataQueueItem
GstBase::DataQueueSize
GstBase::PushSrcClass
GstPbutils::AudioVisualizerClass
GstPbutils::DiscovererClass
GstVideo::AncillaryMeta
GstVideo::ColorBalanceChannelClass
GstVideo::ColorBalanceInterface
GstVideo::NavigationInterface
GstVideo::VideoAFDMeta
GstVideo::VideoAffineTransformationMeta
GstVideo::VideoAggregatorClass
GstVideo::VideoAggregatorConvertPadClass
GstVideo::VideoAggregatorPadClass
GstVideo::VideoAggregatorParallelConvertPadClass
GstVideo::VideoAlignment
GstVideo::VideoAncillary
GstVideo::VideoBarMeta
GstVideo::VideoBufferPoolClass
GstVideo::VideoCaptionMeta
GstVideo::VideoCodecAlphaMeta
GstVideo::VideoColorimetry
GstVideo::VideoColorPrimariesInfo
GstVideo::VideoContentLightLevel
GstVideo::VideoCropMeta
GstVideo::VideoDecoderClass
GstVideo::VideoDirectionInterface
GstVideo::VideoEncoderClass
GstVideo::VideoFilterClass
GstVideo::VideoFormatInfo
GstVideo::VideoFrame
GstVideo::VideoGLTextureUploadMeta
GstVideo::VideoMasteringDisplayInfo
GstVideo::VideoMasteringDisplayInfoCoordinates
GstVideo::VideoMeta
GstVideo::VideoMetaTransform
GstVideo::VideoOrientationInterface
GstVideo::VideoOverlayCompositionMeta
GstVideo::VideoOverlayInterface
GstVideo::VideoRectangle
GstVideo::VideoRegionOfInterestMeta
GstVideo::VideoResampler
GstVideo::VideoSEIUserDataUnregisteredMeta
GstVideo::VideoSinkClass
GstVideo::VideoTileInfo
GstVideo::VideoTimeCodeConfig
GstVideo::VideoTimeCodeMeta
Gtk::AccessibleInterface
Gtk::AccessibleRangeInterface
Gtk::AccessibleTextInterface
Gtk::AccessibleTextRange
Gtk::ActionableInterface
Gtk::AdjustmentClass
Gtk::AlertDialogClass
Gtk::ApplicationClass
Gtk::ApplicationWindowClass
Gtk::BinLayoutClass
Gtk::BookmarkListClass
Gtk::BoolFilterClass
Gtk::BoxClass
Gtk::BoxLayoutClass
Gtk::BuildableIface
Gtk::BuildableParser
Gtk::BuilderCScopeClass
Gtk::BuilderScopeInterface
Gtk::ButtonClass
Gtk::CellAreaClass
Gtk::CellAreaContextClass
Gtk::CellEditableIface
Gtk::CellLayoutIface
Gtk::CellRendererClass
Gtk::CellRendererTextClass
Gtk::CenterLayoutClass
Gtk::CheckButtonClass
Gtk::ColorChooserInterface
Gtk::ColorDialogButtonClass
Gtk::ColorDialogClass
Gtk::ColumnViewSorterClass
Gtk::ComboBoxClass
Gtk::ConstraintClass
Gtk::ConstraintGuideClass
Gtk::ConstraintLayoutChildClass
Gtk::ConstraintLayoutClass
Gtk::CssLocation
Gtk::CustomFilterClass
Gtk::CustomLayoutClass
Gtk::CustomSorterClass
Gtk::DialogClass
Gtk::DirectoryListClass
Gtk::DragIconClass
Gtk::DrawingAreaClass
Gtk::DropDownClass
Gtk::EditableInterface
Gtk::EditableLabelClass
Gtk::EntryBufferClass
Gtk::EntryClass
Gtk::FileChooserNativeClass
Gtk::FileDialogClass
Gtk::FileLauncherClass
Gtk::FilterClass
Gtk::FilterListModelClass
Gtk::FixedClass
Gtk::FixedLayoutChildClass
Gtk::FixedLayoutClass
Gtk::FlattenListModelClass
Gtk::FlowBoxChildClass
Gtk::FontChooserIface
Gtk::FontDialogButtonClass
Gtk::FontDialogClass
Gtk::FrameClass
Gtk::GLAreaClass
Gtk::GraphicsOffloadClass
Gtk::GridClass
Gtk::GridLayoutChildClass
Gtk::GridLayoutClass
Gtk::IMContextClass
Gtk::IMContextSimpleClass
Gtk::IMMulticontextClass
Gtk::InscriptionClass
Gtk::LayoutChildClass
Gtk::LayoutManagerClass
Gtk::ListBoxRowClass
Gtk::ListStoreClass
Gtk::MapListModelClass
Gtk::MediaControlsClass
Gtk::MediaFileClass
Gtk::MediaStreamClass
Gtk::MountOperationClass
Gtk::MultiSelectionClass
Gtk::MultiSorterClass
Gtk::NativeDialogClass
Gtk::NoSelectionClass
Gtk::NumericSorterClass
Gtk::OrientableIface
Gtk::OverlayLayoutChildClass
Gtk::OverlayLayoutClass
Gtk::PadActionEntry
Gtk::PageRange
Gtk::PasswordEntryBufferClass
Gtk::PictureClass
Gtk::PopoverClass
Gtk::PrintDialogClass
Gtk::PrintOperationClass
Gtk::PrintOperationPreviewIface
Gtk::RangeClass
Gtk::RecentData
Gtk::RecentManagerClass
Gtk::RequestedSize
Gtk::ScaleButtonClass
Gtk::ScaleClass
Gtk::ScrollableInterface
Gtk::SectionModelInterface
Gtk::SelectionFilterModelClass
Gtk::SelectionModelInterface
Gtk::ShortcutClass
Gtk::ShortcutManagerInterface
Gtk::SingleSelectionClass
Gtk::SliceListModelClass
Gtk::SorterClass
Gtk::SortListModelClass
Gtk::StringFilterClass
Gtk::StringListClass
Gtk::StringObjectClass
Gtk::StringSorterClass
Gtk::StyleContextClass
Gtk::SymbolicPaintableInterface
Gtk::TextBufferClass
Gtk::TextChildAnchorClass
Gtk::TextMarkClass
Gtk::TextTagClass
Gtk::TextViewClass
Gtk::ToggleButtonClass
Gtk::TreeDragDestIface
Gtk::TreeDragSourceIface
Gtk::TreeExpanderClass
Gtk::TreeListModelClass
Gtk::TreeListRowClass
Gtk::TreeListRowSorterClass
Gtk::TreeModelFilterClass
Gtk::TreeModelIface
Gtk::TreeModelSortClass
Gtk::TreeSortableIface
Gtk::TreeStoreClass
Gtk::TreeViewClass
Gtk::UriLauncherClass
Gtk::VideoClass
Gtk::WidgetClass
Gtk::WidgetPaintableClass
Gtk::WindowClass
Gtk::WindowControlsClass
Gtk::WindowGroupClass
Gtk::WindowHandleClass
GtkSource::BufferClass
GtkSource::CompletionCellClass
GtkSource::CompletionClass
GtkSource::CompletionContextClass
GtkSource::CompletionProposalInterface
GtkSource::CompletionProviderInterface
GtkSource::CompletionSnippetsClass
GtkSource::CompletionWordsClass
GtkSource::FileClass
GtkSource::FileLoaderClass
GtkSource::FileSaverClass
GtkSource::GutterClass
GtkSource::GutterLinesClass
GtkSource::GutterRendererClass
GtkSource::GutterRendererPixbufClass
GtkSource::GutterRendererTextClass
GtkSource::HoverClass
GtkSource::HoverContextClass
GtkSource::HoverDisplayClass
GtkSource::HoverProviderInterface
GtkSource::IndenterInterface
GtkSource::LanguageClass
GtkSource::LanguageManagerClass
GtkSource::MapClass
GtkSource::MarkAttributesClass
GtkSource::MarkClass
GtkSource::PrintCompositorClass
GtkSource::RegionClass
GtkSource::RegionIter
GtkSource::SearchContextClass
GtkSource::SearchSettingsClass
GtkSource::SnippetChunkClass
GtkSource::SnippetClass
GtkSource::SnippetContextClass
GtkSource::SnippetManagerClass
GtkSource::SpaceDrawerClass
GtkSource::StyleClass
GtkSource::StyleSchemeChooserButtonClass
GtkSource::StyleSchemeChooserInterface
GtkSource::StyleSchemeChooserWidgetClass
GtkSource::StyleSchemeClass
GtkSource::StyleSchemeManagerClass
GtkSource::StyleSchemePreviewClass
GtkSource::TagClass
GtkSource::ViewClass
GtkSource::VimIMContextClass
HarfBuzz::aat_layout_feature_selector_info_t
HarfBuzz::font_extents_t
HarfBuzz::glyph_extents_t
HarfBuzz::language_t
HarfBuzz::ot_color_layer_t
HarfBuzz::ot_math_kern_entry_t
HarfBuzz::ot_name_entry_t
HarfBuzz::ot_var_axis_t
HarfBuzz::variation_t
JavaScriptCore::ClassClass
JavaScriptCore::ClassVTable
JavaScriptCore::ContextClass
JavaScriptCore::ExceptionClass
JavaScriptCore::ValueClass
JavaScriptCore::VirtualMachineClass
JavaScriptCore::WeakValueClass
Pango::Analysis
Pango::AttrClass
Pango::AttrColor
Pango::AttrFloat
Pango::AttrFontDesc
Pango::AttrFontFeatures
Pango::AttrInt
Pango::AttrLanguage
Pango::AttrShape
Pango::AttrSize
Pango::AttrString
Pango::FontClass
Pango::FontFaceClass
Pango::FontFamilyClass
Pango::FontMapClass
Pango::FontsetClass
Pango::GlyphGeometry
Pango::GlyphInfo
Pango::GlyphVisAttr
Pango::LogAttr
Pango::Rectangle
Pango::RendererClass
Rsvg::DimensionData
Rsvg::HandleClass
Rsvg::Length
Rsvg::PositionData
Rsvg::Rectangle
Secret::BackendInterface
Secret::CollectionClass
Secret::ItemClass
Secret::PromptClass
Secret::RetrievableInterface
Secret::ServiceClass
Soup::AuthClass
Soup::AuthDomainBasicClass
Soup::AuthDomainClass
Soup::AuthDomainDigestClass
Soup::AuthManagerClass
Soup::CacheClass
Soup::ContentDecoderClass
Soup::ContentSnifferClass
Soup::CookieJarClass
Soup::CookieJarDBClass
Soup::CookieJarTextClass
Soup::HSTSEnforcerClass
Soup::HSTSEnforcerDBClass
Soup::LoggerClass
Soup::MessageClass
Soup::MessageHeadersIter
Soup::MultipartInputStreamClass
Soup::Range
Soup::ServerClass
Soup::ServerMessageClass
Soup::SessionClass
Soup::WebsocketConnectionClass
Soup::WebsocketExtensionClass
Soup::WebsocketExtensionDeflateClass
Soup::WebsocketExtensionManagerClass
WebKit::AuthenticationRequestClass
WebKit::AutomationSessionClass
WebKit::BackForwardListClass
WebKit::BackForwardListItemClass
WebKit::ClipboardPermissionRequestClass
WebKit::ColorChooserRequestClass
WebKit::ContextMenuClass
WebKit::ContextMenuItemClass
WebKit::CookieManagerClass
WebKit::DeviceInfoPermissionRequestClass
WebKit::DownloadClass
WebKit::EditorStateClass
WebKit::FaviconDatabaseClass
WebKit::FileChooserRequestClass
WebKit::FindControllerClass
WebKit::FormSubmissionRequestClass
WebKit::GeolocationManagerClass
WebKit::GeolocationPermissionRequestClass
WebKit::HitTestResultClass
WebKit::InputMethodContextClass
WebKit::MediaKeySystemPermissionRequestClass
WebKit::NavigationPolicyDecisionClass
WebKit::NetworkSessionClass
WebKit::NotificationClass
WebKit::NotificationPermissionRequestClass
WebKit::OptionMenuClass
WebKit::PermissionRequestInterface
WebKit::PointerLockPermissionRequestClass
WebKit::PolicyDecisionClass
WebKit::PrintOperationClass
WebKit::ResponsePolicyDecisionClass
WebKit::SecurityManagerClass
WebKit::SettingsClass
WebKit::URIRequestClass
WebKit::URIResponseClass
WebKit::URISchemeRequestClass
WebKit::URISchemeResponseClass
WebKit::UserContentFilterStoreClass
WebKit::UserContentManagerClass
WebKit::UserMediaPermissionRequestClass
WebKit::UserMessageClass
WebKit::WebContextClass
WebKit::WebInspectorClass
WebKit::WebResourceClass
WebKit::WebsiteDataAccessPermissionRequestClass
WebKit::WebsiteDataManagerClass
WebKit::WebsitePoliciesClass
WebKit::WebViewBaseClass
WebKit::WebViewClass
WebKit::WindowPropertiesClass
WebKitWebProcessExtension::ContextMenuClass
WebKitWebProcessExtension::ContextMenuItemClass
WebKitWebProcessExtension::FrameClass
WebKitWebProcessExtension::HitTestResultClass
WebKitWebProcessExtension::ScriptWorldClass
WebKitWebProcessExtension::URIRequestClass
WebKitWebProcessExtension::URIResponseClass
WebKitWebProcessExtension::UserMessageClass
WebKitWebProcessExtension::WebEditorClass
WebKitWebProcessExtension::WebFormManagerClass
WebKitWebProcessExtension::WebHitTestResultClass
WebKitWebProcessExtension::WebPageClass
WebKitWebProcessExtension::WebProcessExtensionClass

@badcel
Copy link
Member

badcel commented Sep 27, 2025

  • Verify: is creating a copy of an untyped record correct if transfer is none? Can the content of the pointer be considered as global? As we don't know how to copy the type without the type system.
  • Consider creating some factory for untyped record handles that allows to plug custom implementations into the system. This allows to extend the generated code without special casing certain classes. This could be helpful if someone for example wants to implement a custom list type that is not in GLib.

@ousnius ousnius marked this pull request as draft September 28, 2025 10:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants