[options] girs_dir = "gir-files" library = "Gst" version = "1.0" min_cfg_version = "1.8" target_path = "gstreamer" work_mode = "normal" concurrency = "send+sync" generate_safety_asserts = true single_version_file = true generate_display_trait = false external_libraries = [ "GLib", "GObject", ] generate = [ "Gst.ClockTimeDiff", "Gst.State", "Gst.StateChange", "Gst.SeekFlags", "Gst.SeekType", "Gst.PadDirection", "Gst.PadPresence", "Gst.URIHandler", "Gst.URIType", "Gst.ElementFactoryListType", "Gst.BufferingMode", "Gst.CoreError", "Gst.ResourceError", "Gst.LibraryError", "Gst.StreamError", "Gst.PluginError", "Gst.ParseError", "Gst.URIError", "Gst.StructureChangeType", "Gst.StreamStatusType", "Gst.StreamType", "Gst.StreamFlags", "Gst.ProgressType", "Gst.BusSyncReply", "Gst.TagFlag", "Gst.TagMergeMode", "Gst.PadProbeType", "Gst.PadProbeReturn", "Gst.CapsIntersectMode", "Gst.BufferCopyFlags", "Gst.PadMode", "Gst.SchedulingFlags", "Gst.ChildProxy", "Gst.TagSetter", "Gst.QOSType", "Gst.TocSetter", "Gst.ClockType", "Gst.ElementFlags", "Gst.ObjectFlags", "Gst.PadFlags", "Gst.BinFlags", "Gst.PipelineFlags", "Gst.PluginFlags", "Gst.MemoryFlags", "Gst.Allocator", "Gst.PadLinkCheck", "Gst.DebugLevel", "Gst.DebugColorFlags", "Gst.StackTraceFlags", "Gst.DebugGraphDetails", "Gst.ParseFlags", "Gst.TaskState", "Gst.PluginDependencyFlags", "Gst.BufferPoolAcquireFlags", "Gst.PromiseResult", "Gst.ClockEntryType", "Gst.ClockFlags", ] manual = [ "GLib.Error", "GLib.Source", "GLib.DateTime", "GObject.Object", "Gst.Segment", "Gst.StaticCaps", "Gst.StaticPadTemplate", ] [[object]] name = "Gst.ClockTime" status = "manual" conversion_type = "scalar" [[object]] name = "Gst.Bin" status = "generate" trait_name = "GstBinExt" [[object.signal]] name = "do-latency" # Use Result<(), glib::BoolError> ignore = true [[object.function]] name = "add" [object.function.return] bool_return_is_error = "Failed to add element" [[object.function]] name = "remove" [object.function.return] bool_return_is_error = "Failed to remove element" [[object.function]] name = "recalculate_latency" [object.function.return] bool_return_is_error = "Failed to recalculate latency" [[object.function]] name = "sync_children_states" [object.function.return] bool_return_is_error = "Failed to sync children states" [[object]] name = "Gst.Bus" status = "generate" final_type = true [[object.function]] name = "set_sync_handler" # Into> makes this hard to use ignore = true [[object.function]] name = "add_signal_watch_full" # Priority ignore = true [[object.function]] name = "timed_pop_filtered" # Uses enum as flags ignore = true [[object.function]] name = "pop_filtered" # Uses enum as flags ignore = true [[object.function]] name = "poll" # Uses enum as flags ignore = true [[object.function]] name = "create_watch" # More convenient manual implementation ignore = true [[object.function]] name = "add_watch" # More specific trait bounds possible for the closure ignore = true [[object.function]] name = "add_watch_full" # More specific trait bounds possible for the closure ignore = true [[object.function]] name = "remove_watch" [object.function.return] bool_return_is_error = "Bus has no event source" [[object.signal]] name = "message" concurrency = "send" [[object.function]] name = "post" [object.function.return] bool_return_is_error = "Failed to post message" [[object]] name = "Gst.BufferFlags" status = "generate" [[object.derive]] name = "Serialize, Deserialize" cfg_condition = "feature = \"ser_de\"" [[object]] name = "Gst.Format" status = "generate" [[object.derive]] name = "Serialize, Deserialize" cfg_condition = "feature = \"ser_de\"" [[object.derive]] name = "Debug, PartialEq, Eq, PartialOrd, Ord, Hash" [[object]] name = "Gst.SegmentFlags" status = "generate" [[object.derive]] name = "Serialize, Deserialize" cfg_condition = "feature = \"ser_de\"" [[object]] name = "Gst.TocScope" status = "generate" [[object.derive]] name = "Serialize, Deserialize" cfg_condition = "feature = \"ser_de\"" [[object.derive]] name = "Debug, PartialEq, Eq, PartialOrd, Ord, Hash" [[object]] name = "Gst.TocEntryType" status = "generate" [[object.derive]] name = "Serialize, Deserialize" cfg_condition = "feature = \"ser_de\"" [[object.derive]] name = "Debug, PartialEq, Eq, PartialOrd, Ord, Hash" [[object]] name = "Gst.TocLoopType" status = "generate" [[object.derive]] name = "Serialize, Deserialize" cfg_condition = "feature = \"ser_de\"" [[object.derive]] name = "Debug, PartialEq, Eq, PartialOrd, Ord, Hash" [[object]] name = "Gst.Rank" status = "generate" [[object.derive]] name = "Debug" [[object]] name = "Gst.TypeFindProbability" status = "generate" [[object.derive]] name = "Debug" [[object]] name = "Gst.EventType" status = "generate" [[object.derive]] name = "Debug, PartialEq, Eq, Hash" [[object]] name = "Gst.Structure" status = "manual" ref_mode = "ref-mut" [[object]] name = "Gst.ParseContext" status = "manual" ref_mode = "ref-mut" [[object]] name = "Gst.Caps" status = "manual" ref_mode = "ref" [[object]] name = "Gst.Buffer" status = "manual" ref_mode = "ref" [[object]] name = "Gst.BufferList" status = "manual" ref_mode = "ref" [[object]] name = "Gst.Sample" status = "manual" ref_mode = "ref" [[object]] name = "Gst.Message" status = "manual" ref_mode = "ref" [[object]] name = "Gst.Event" status = "manual" ref_mode = "ref" [[object]] name = "Gst.TagList" status = "manual" ref_mode = "ref" [[object]] name = "Gst.TagScope" status = "generate" [[object.derive]] name = "Serialize, Deserialize" cfg_condition = "feature = \"ser_de\"" [[object.derive]] name = "Debug, PartialEq, Eq, PartialOrd, Ord, Hash" [[object]] name = "Gst.Query" status = "manual" ref_mode = "ref" [[object]] name = "Gst.Context" status = "manual" ref_mode = "ref" [[object]] name = "Gst.Toc" status = "manual" ref_mode = "ref" [[object]] name = "Gst.TocEntry" status = "manual" ref_mode = "ref" [[object]] name = "Gst.Pipeline" status = "generate" [[object]] name = "Gst.Promise" status = "manual" ref_mode = "ref" [[object]] name = "Gst.Clock" status = "generate" [[object.function]] name = "set_master" [object.function.return] bool_return_is_error = "Failed to set master clock" [[object.function]] name = "wait_for_sync" [object.function.return] bool_return_is_error = "Timed out waiting for sync" [[object.function]] name = "adjust_with_calibration" # Useless clock parameter ignore = true [[object.function]] name = "unadjust_with_calibration" # Useless clock parameter ignore = true [[object]] name = "Gst.SystemClock" status = "generate" [[object.function]] name = "obtain" [object.function.return] nullable = false [[object]] name = "Gst.Element" status = "generate" [[object.function]] name = "make_from_uri" [object.function.return] # It is already a Result nullable = false [[object.function]] name = "call_async" # more specific closure type possible ignore = true [[object.function]] name = "add_pad" [object.function.return] bool_return_is_error = "Failed to add pad" [[object.function]] name = "remove_pad" [object.function.return] bool_return_is_error = "Failed to remove pad" [[object.function]] name = "link" [object.function.return] bool_return_is_error = "Failed to link elements" [[object.function]] name = "link_filtered" [object.function.return] bool_return_is_error = "Failed to link elements" [[object.function]] name = "link_pads" [object.function.return] bool_return_is_error = "Failed to link pads" [[object.function]] name = "link_pads_filtered" [object.function.return] bool_return_is_error = "Failed to link pads" [[object.function]] name = "link_pads_full" [object.function.return] bool_return_is_error = "Failed to link pads" [[object.function]] name = "post_message" [object.function.return] bool_return_is_error = "Failed to post message" [[object.function]] name = "seek" [object.function.return] bool_return_is_error = "Failed to seek" [[object.function]] name = "seek_simple" [object.function.return] bool_return_is_error = "Failed to seek" [[object.function]] name = "set_clock" [object.function.return] bool_return_is_error = "Failed to set clock" [[object.function]] name = "sync_state_with_parent" [object.function.return] bool_return_is_error = "Failed to sync state with parent" [[object.function]] name = "change_state" # Use Result ignore = true [[object.function]] name = "continue_state" # Use Result ignore = true [[object.function]] name = "get_state" # Use Result ignore = true [[object.function]] name = "set_state" # Use Result ignore = true [[object.function]] name = "query" # correct mutability ignore = true [[object.function]] name = "send_event" # Pass by value ignore = true [[object.function]] name = "get_context_unlocked" # Unsafe ignore = true [[object.function]] name = "add_property_deep_notify_watch" # ulong ignore = true [[object.function]] name = "add_property_notify_watch" # ulong ignore = true [[object.function]] name = "remove_property_notify_watch" # ulong ignore = true [[object.function]] name = "query_duration" # formatted value ignore = true [[object.function]] name = "query_position" # formatted value ignore = true [[object.function]] name = "query_convert" # formatted value ignore = true [[object.function]] name = "seek" # formatted value ignore = true [[object.function]] name = "seek_simple" # formatted value ignore = true [[object.function]] name = "state_change_return_get_name" # Wrong place ignore = true [[object.function]] name = "state_get_name" # Wrong place ignore = true [[object.function]] name = "get_metadata" # better manual function ignore = true [[object.function]] name = "get_pad_template" # better manual function ignore = true [[object.function]] name = "get_pad_template_list" # better manual function ignore = true [[object.function]] name = "register" ignore = true [[object]] name = "Gst.ElementFactory" status = "generate" final_type = true [[object.function]] name = "create" [object.function.return] nullable_return_is_error = "Failed to create element from factory" [[object.function]] name = "make" [object.function.return] nullable_return_is_error = "Failed to create element from factory name" [[object]] name = "Gst.TypeFindFactory" status = "generate" final_type = true [[object]] name = "Gst.DeviceProviderFactory" status = "generate" final_type = true [[object]] name = "Gst.DeviceProvider" status = "generate" [[object.function]] name = "get_bus" [object.function.return] nullable = false [[object.function]] name = "start" [object.function.return] bool_return_is_error = "Failed to start" [[object.function]] name = "register" ignore = true [[object.function]] name = "get_metadata" # better manual function ignore = true [[object]] name = "Gst.DeviceMonitor" status = "generate" [[object.function]] name = "new" # Work-around for 1.14 switch from transfer-floating to transfer-full ignore = true [[object.function]] name = "add_filter" # Return Option ignore = true [[object.function]] name = "get_bus" [object.function.return] nullable = false [[object.function]] name = "start" [object.function.return] bool_return_is_error = "Failed to start" [[object.function]] name = "remove_filter" # Use DeviceMonitorFilterId and return Result<(), glib::BoolError> ignore = true [[object]] name = "Gst.Device" status = "generate" [[object.function]] name = "get_display_name" [object.function.return] nullable = false [[object.function]] name = "get_device_class" [object.function.return] nullable = false [[object.function]] name = "reconfigure_element" [object.function.return] bool_return_is_error = "Failed to reconfigure the element to use this device" [[object.function]] name = "create_element" [object.function.return] nullable_return_is_error = "Failed to create element for device" [[object]] name = "Gst.Object" # For renaming the trait... status = "generate" trait_name = "GstObjectExt" [[object.function]] name = "set_name" [object.function.return] bool_return_is_error = "Failed to set object name" [[object.function]] name = "get_name" [object.function.return] nullable = false [[object.function]] name = "set_name" [[object.function.parameter]] name = "name" nullable = false [[object.function]] name = "get_path_string" [object.function.return] nullable = false [[object.function]] name = "set_parent" [object.function.return] bool_return_is_error = "Failed to set parent object" [[object.function]] name = "sync_values" [object.function.return] bool_return_is_error = "Failed to sync values" [[object]] name = "Gst.Pad" status = "generate" [[object.function]] name = "link_maybe_ghosting" [object.function.return] bool_return_is_error = "Failed to link pads, possibly ghosting" [[object.function]] name = "link_maybe_ghosting_full" [object.function.return] bool_return_is_error = "Failed to link pads, possibly ghosting" [[object.function]] name = "unlink" [object.function.return] bool_return_is_error = "Failed to unlink pad" [[object.function]] name = "pause_task" [object.function.return] bool_return_is_error = "Failed to pause pad task" [[object.function]] name = "stop_task" [object.function.return] bool_return_is_error = "Failed to stop pad task" [[object.function]] name = "set_active" [object.function.return] bool_return_is_error = "Failed to activate pad" [[object.function]] name = "activate_mode" [object.function.return] bool_return_is_error = "Failed to activate mode pad" [[object.function]] name = "remove_probe" # Don't use a ulong ignore = true [[object.function]] name = "chain" # Move buffer ignore = true [[object.function]] name = "push" # Move buffer ignore = true [[object.function]] name = "chain_list" # Move buffer ignore = true [[object.function]] name = "push_list" # Move buffer ignore = true [[object.function]] name = "pull_range" # Buffer can be NULL ignore = true [[object.function]] name = "get_range" # Buffer can be NULL ignore = true [[object.function]] name = "get_last_flow_return" # Use Result ignore = true [[object.function]] name = "query" # Correct mutability ignore = true [[object.function]] name = "peer_query" # Correct mutability ignore = true [[object.function]] name = "query_default" # Correct mutability ignore = true [[object.function]] name = "proxy_query_caps" # Correct mutability ignore = true [[object.function]] name = "proxy_query_accept_caps" # Correct mutability ignore = true [[object.function]] name = "event_default" # Pass by value ignore = true [[object.function]] name = "push_event" # Pass by value ignore = true [[object.function]] name = "send_event" # Pass by value ignore = true [[object.function]] name = "link" # Use Result ignore = true [[object.function]] name = "link_full" # Use Result ignore = true [[object.function]] name = "store_sticky_event" # Use Result ignore = true [[object.function]] name = "new_from_static_template" # Correct mutability ignore = true [[object.function]] name = "query_duration" # formatted value ignore = true [[object.function]] name = "query_position" # formatted value ignore = true [[object.function]] name = "query_convert" # formatted value ignore = true [[object.function]] name = "peer_query_duration" # formatted value ignore = true [[object.function]] name = "peer_query_position" # formatted value ignore = true [[object.function]] name = "peer_query_convert" # formatted value ignore = true [[object.function]] name = "link_get_name" # Wrong place ignore = true [[object.function]] pattern = "set_.*_function_full" # More specific closure trait bounds possible ignore = true [[object.function]] name = "start_task" # More specific closure trait bounds possible ignore = true [[object.function]] name = "sticky_events_foreach" # Complex closure argument handling ignore = true [[object.function]] name = "add_probe" # Complex closure argument handling ignore = true [[object]] name = "Gst.PadTemplate" status = "generate" final_type = true [[object.function]] name = "new" [object.function.return] nullable_return_is_error = "Failed to create pad template" [[object.function]] name = "new_with_gtype" [object.function.return] nullable_return_is_error = "Failed to create pad template" [[object.function]] name = "new_from_static_pad_template_with_gtype" # static pad template manual ignore = true [[object]] name = "Gst.GhostPad" status = "generate" [[object.function]] name = "set_target" [object.function.return] bool_return_is_error = "Failed to set target" [[object.function]] name = "new" ignore = true [[object.function]] name = "new_from_template" ignore = true [[object.function]] name = "new_no_target" [object.function.return] nullable_return_is_error = "Failed to create GhostPad" [[object.function]] name = "new_no_target_from_template" [object.function.return] nullable_return_is_error = "Failed to create GhostPad" [[object.function]] name = "construct" ignore = true [[object.function]] name = "activate_mode_default" # wrong instance type ignore = true [[object.function]] name = "internal_activate_mode_default" # wrong instance type ignore = true [[object]] name = "Gst.ProxyPad" status = "generate" [[object.function]] name = "chain_default" # Buffer move ignore = true [[object.function]] name = "chain_list_default" # Buffer move ignore = true [[object.function]] name = "getrange_default" # Buffer move ignore = true [[object]] name = "Gst.Stream" status = "generate" final_type = true [[object.function]] name = "new" # Work-around for 1.14 switch from transfer-floating to transfer-full ignore = true [[object]] name = "Gst.StreamCollection" status = "generate" final_type = true [[object.function]] name = "new" # Work-around for 1.14 switch from transfer-floating to transfer-full ignore = true [[object.function]] name = "add_stream" # Ignore return value which is always `true` ignore = true [[object]] name = "Gst.Plugin" status = "generate" final_type = true [[object.function]] pattern = "register_static.*" # Needs manual implementation ignore = true [[object.function]] name = "list_free" # useless and unsafe ignore = true [[object.function]] name = "set_cache_data" # pass by value ignore = true [[object.function]] name = "get_cache_data" # structure ref ignore = true [[object.function]] name = "get_description" [object.function.return] nullable = false [[object.function]] name = "get_name" [object.function.return] nullable = false [[object.function]] name = "get_license" [object.function.return] nullable = false [[object.function]] name = "get_origin" [object.function.return] nullable = false [[object.function]] name = "get_package" [object.function.return] nullable = false [[object.function]] name = "get_source" [object.function.return] nullable = false [[object.function]] name = "get_version" [object.function.return] nullable = false [[object.function]] name = "load" [object.function.return] nullable_return_is_error = "Failed to load plugin" [[object.function]] name = "load_by_name" [object.function.return] nullable_return_is_error = "Failed to load plugin" [[object]] name = "Gst.PluginFeature" status = "generate" [[object.function]] pattern = "list_.*" ignore = true [[object.function]] name = "rank_compare_func" ignore = true [[object.function]] name = "get_rank" ignore = true [[object.function]] name = "set_rank" ignore = true [[object.function]] name = "load" [object.function.return] nullable_return_is_error = "Failed to load plugin feature" [[object]] name = "Gst.Registry" status = "generate" final_type = true [[object.function]] pattern = "fork_.*" ignore = true [[object.function]] name = "get" [object.function.return] nullable = false [[object.function]] name = "add_feature" [object.function.return] bool_return_is_error = "Failed to add feature" [[object.function]] name = "add_plugin" [object.function.return] bool_return_is_error = "Failed to add plugin" [[object]] name = "Gst.BufferPool" status = "generate" [[object.function]] pattern = "config_.*" # A different type ignore = true [[object.function]] name = "get_config" # A different type ignore = true [[object.function]] name = "set_config" # Takes ownership ignore = true [[object.function]] name = "acquire_buffer" # Params and return value ignore = true [[object.function]] name = "release_buffer" # Takes ownership ignore = true [[object.function]] name = "new" # Work-around for 1.14 switch from transfer-floating to transfer-full ignore = true [[object.function]] name = "set_active" [object.function.return] bool_return_is_error = "Failed to activate buffer pool" [[object]] name = "Gst.Preset" status = "generate" [[object.function]] name = "set_app_dir" [object.function.return] bool_return_is_error = "Failed to set app preset directory" [[object.function]] name = "delete_preset" [object.function.return] bool_return_is_error = "Failed to delete preset" [[object.function]] name = "load_preset" [object.function.return] bool_return_is_error = "Failed to load preset" [[object.function]] name = "save_preset" [object.function.return] bool_return_is_error = "Failed to save preset" [[object.function]] name = "rename_preset" [object.function.return] bool_return_is_error = "Failed to rename preset" [[object.function]] name = "set_meta" [object.function.return] bool_return_is_error = "Failed to set preset meta" [[object]] name = "Gst.*" status = "generate" # We'll opt-in for constants at a later time [[object.constant]] pattern = ".+" ignore = true [[object.function]] name = "util_dump_mem" ignore = true [[object.function]] name = "util_dump_buffer" # We have our Debug impl on buffers ignore = true [[object.function]] name = "protection_select_system" # unsupported array type ignore = true [[object.function]] name = "calculate_linear_regression" ignore = true [[object.function]] pattern = "value_.*" ignore = true [[object.function]] pattern = ".*_get_type" ignore = true [[object.function]] pattern = "tag_.*" ignore = true [[object.function]] pattern = "segtrap_.*" ignore = true [[object.function]] pattern = "util_[g]?double_.*" ignore = true [[object.function]] pattern = "util_fraction_.*" ignore = true [[object.function]] pattern = "util_greatest_.*" ignore = true [[object.function]] pattern = "util_[g]?uint64.*" ignore = true [[object.function]] name = "deinit" ignore = true [[object.function]] name = "util_set_object_arg" ignore = true [[object.function]] name = "util_seqnum_compare" ignore = true [[object.function]] name = "dynamic_type_register" ignore = true [[object.function]] name = "flow_get_name" ignore = true [[object.function]] name = "filename_to_uri" ignore = true [[object.function]] name = "is_initialized" ignore = true [[object.function]] name = "debug_add_log_function" ignore = true [[object.function]] name = "debug_remove_log_function" ignore = true [[object.function]] name = "debug_remove_log_function_by_data" ignore = true [[object.function]] name = "debug_construct_term_color" ignore = true [[object.function]] name = "debug_construct_win_color" ignore = true [[object.function]] name = "debug_get_all_categories" ignore = true [[object.function]] name = "debug_get_color_mode" ignore = true [[object.function]] pattern = "debug_log.*" ignore = true [[object.function]] name = "debug_set_color_mode" ignore = true [[object.function]] name = "debug_set_color_mode_from_string" ignore = true [[object.function]] name = "error_get_message" ignore = true [[object.function]] name = "flow_to_quark" ignore = true [[object.function]] name = "formats_contains" ignore = true [[object.function]] pattern = "info_.*" ignore = true [[object.function]] pattern = "print.*" ignore = true [[object.function]] pattern = "init.*" ignore = true [[object.function]] pattern = "param_spec_.*" ignore = true [[object.function]] name = "is_caps_features" ignore = true [[object.function]] name = "make_element_message_details" ignore = true [[object.function]] name = "util_array_binary_search" ignore = true [[object.function]] name = "util_get_object_array" ignore = true [[object.function]] name = "util_set_object_array" ignore = true [[object.function]] name = "util_set_value_from_string" ignore = true [[object.function]] pattern = "parse.*full" # wrong mutable for context parameter ignore = true [[object.function]] name = "update_registry" [object.function.return] bool_return_is_error = "Failed to update the registry" [[object.function]] name = "util_group_id_next" # newtype wrapper ignore = true [[object.function]] name = "util_seqnum_next" # newtype wrapper ignore = true [[object.function]] name = "protection_filter_systems_by_available_decryptors" # wrong array annotations ignore = true [[object.function]] pattern = "clear_.*" # C memory management ignore = true [[object.function]] name = "debug_bin_to_dot_data" [object.function.return] nullable = false [[object.function]] name = "version_string" [object.function.return] nullable = false [[object.function]] name = "parse_bin_from_description" [object.function.return] nullable = false [[object.function]] name = "parse_launch" [object.function.return] # Already a Result nullable = false [[object.function]] name = "parse_launchv" [object.function.return] # Already a Result nullable = false [[object.function]] name = "debug_get_stack_trace" [object.function.return] nullable_return_is_error = "Failed to get stack trace" [[object.function]] name = "get_main_executable_path" [object.function.return] nullable_return_is_error = "Failed to get main executable path" [[object]] name = "Gst.StateChangeReturn" status = "generate" must_use = true [[object]] name = "Gst.FlowReturn" status = "generate" must_use = true [[object]] name = "Gst.PadLinkReturn" status = "generate" must_use = true [[object]] name = "Gst.ClockReturn" status = "generate" must_use = true [[object]] name = "Gst.DateTime" status = "generate" [[object.derive]] # Don't auto-implement traits name = "" [[object.function]] name = "new" [object.function.return] nullable = true nullable_return_is_error = "Can't create DateTime" [[object.function]] name = "new_y" [object.function.return] nullable = true nullable_return_is_error = "Can't create DateTime" [[object.function]] name = "new_ym" [object.function.return] nullable = true nullable_return_is_error = "Can't create DateTime" [[object.function]] name = "new_ymd" [object.function.return] nullable = true nullable_return_is_error = "Can't create DateTime" [[object.function]] name = "new_from_g_date_time" [object.function.return] nullable_return_is_error = "Can't create DateTime from glib::DateTime" [[object.function]] name = "to_g_date_time" [object.function.return] nullable_return_is_error = "Can't create glib::DateTime from DateTime" [[object.function]] name = "new_from_iso8601_string" [object.function.return] nullable_return_is_error = "Failed to create DateTime from ISO-8601 string" [[object.function]] name = "to_iso8601_string" [object.function.return] nullable_return_is_error = "Failed to create ISO-8601 string from DateTime"