<root>
<substitute_type_name from="GObject" to="Glib::Object" />
<substitute_type_name from="GError" to="Glib::Error" />
<substitute_type_name from="GMenu" to="Gio::Menu" />
<substitute_type_name from="GAction" to="Gio::Action" />
<substitute_type_name from="GVariant" to="Glib::Variant" />
<substitute_type_name from="GAppInfo" to="Gio::AppInfo" />
<substitute_type_name from="GApplication" to="Gio::Application" />
<substitute_type_name from="GActionGroup" to="Gio::ActionGroup" />
<substitute_type_name from="GActionMap" to="Gio::ActionMap" />
<substitute_type_name from="GMenuModel" to="Gio::MenuModel" />
<substitute_type_name from="GFile" to="Gio::File" />
<substitute_type_name from="GIcon" to="Gio::Icon" />
<substitute_type_name from="GPermission" to="Gio::Permission" />
<substitute_type_name from="GParamSpec" to="GParamSpec" />
<substitute_type_name from="GResource" to="Gio::Resource" />
<substitute_type_name from="GAsyncResult" to="Gio::AsyncResult" />
<substitute_type_name from="GKeyFile" to="Glib::KeyFile" />
<substitute_type_name from="GVolume" to="Gio::Volume" />
<substitute_type_name from="GMountOperation" to="Gio::MountOperation" />
<substitute_type_name from="GFileError" to="Glib::FileError" />
<substitute_type_name from="GKeyFileError" to="Glib::KeyFileError" />
<substitute_type_name from="GListModel" to="Gio::ListModel" />
<substitute_type_name from="GDate" to="Glib::Date" />
<substitute_type_name from="GDateTime" to="Glib::DateTime" />
<substitute_type_name from="GFileInfo" to="Gio::FileInfo" />
<substitute_type_name from="GValue" to="Glib::Value" />
<substitute_type_name from="GSeekable" to="Gio::Seekable" />
<substitute_type_name from="GtkApplicationInhibitFlags" to="Gtk::Application::InhibitFlags" />
<substitute_type_name from="GtkAssistantPageType" to="Gtk::Assistant::PageType" />
<substitute_type_name from="GtkCalendarDisplayOptions" to="Gtk::Calendar::DisplayOptions" />
<substitute_type_name from="GtkCellRendererAccelMode" to="Gtk::CellRendererAccel::Mode" />
<substitute_type_name from="GtkCssSectionType" to="Gtk::CssSection::Type" />
<substitute_type_name from="GtkEntryIconPosition" to="Gtk::Entry::IconPosition" />
<substitute_type_name from="GtkFileChooserAction" to="Gtk::FileChooser::Action" />
<substitute_type_name from="GtkFileChooserConfirmation" to="Gtk::FileChooser::Confirmation" />
<substitute_type_name from="GtkFileFilterFlags" to="Gtk::FileFilter::Flags" />
<substitute_type_name from="GtkFilterChange" to="Gtk::Filter::Change" />
<substitute_type_name from="GtkIconViewDropPosition" to="Gtk::IconView::DropPosition" />
<substitute_type_name from="GtkImageType" to="Gtk::Image::Type" />
<substitute_type_name from="GtkLevelBarMode" to="Gtk::LevelBar::Mode" />
<substitute_type_name from="GtkPopoverMenuFlags" to="Gtk::PopoverMenu::Flags" />
<substitute_type_name from="GtkPrintOperationAction" to="Gtk::PrintOperation::Action" />
<substitute_type_name from="GtkPrintOperationResult" to="Gtk::PrintOperation::Result" />
<substitute_type_name from="GtkRecentFilterFlags" to="Gtk::RecentFilter::Flags" />
<substitute_type_name from="GtkScrollablePolicy" to="Gtk::Scrollable::Policy" />
<substitute_type_name from="GtkSizeGroupMode" to="Gtk::SizeGroup::Mode" />
<substitute_type_name from="GtkSpinButtonUpdatePolicy" to="Gtk::SpinButton::UpdatePolicy" />
<substitute_type_name from="GtkTreeModelFlags" to="Gtk::TreeModel::Flags" />
<substitute_type_name from="GtkTreeViewColumnSizing" to="Gtk::TreeViewColumn::Sizing" />
<substitute_type_name from="GtkTreeViewDropPosition" to="Gtk::TreeView::DropPosition" />
<substitute_type_name from="GtkTreeViewGridLines" to="Gtk::TreeView::GridLines" />
<substitute_type_name from="GtkAccessibleRole" to="Gtk::Accessible::Role" />
<substitute_type_name from="GtkAccessibleState" to="Gtk::Accessible::State" />
<substitute_type_name from="GtkAccessibleProperty" to="Gtk::Accessible::Property" />
<substitute_type_name from="GtkAccessibleRelation" to="Gtk::Accessible::Relation" />
<!-- These have no corresponding C++ type. Don't substitute. -->
<substitute_type_name from="GClosure" to="GClosure" />
<substitute_type_name from="GList" to="GList" />
<substitute_type_name from="GType" to="GType" />

<substitute_enumerator_name from_prefix="GTK_LICENSE_" to_prefix="Gtk::License::" />
<substitute_enumerator_name from_prefix="GTK_ASSISTANT_PAGE_" to_prefix="Gtk::AssistantPage::Type::" />
<substitute_enumerator_name from_prefix="GTK_PACK_" to_prefix="Gtk::PackType::" />
<substitute_enumerator_name from_prefix="GTK_RELIEF_" to_prefix="Gtk::ReliefStyle::" />
<substitute_enumerator_name from_prefix="GTK_ICON_SIZE_" to_prefix="Gtk::IconSize::" />
<substitute_enumerator_name from_prefix="GTK_CELL_RENDERER_MODE_" to_prefix="Gtk::CellRendererMode::" />
<substitute_enumerator_name from_prefix="PANGO_ELLIPSIZE_" to_prefix="Pango::EllipsizeMode::" />
<substitute_enumerator_name from_prefix="GTK_SENSITIVITY_" to_prefix="Gtk::SensitivityType::" />
<substitute_enumerator_name from_prefix="GTK_CSS_SECTION_" to_prefix="Gtk::CssSection::Type::" />
<substitute_enumerator_name from_prefix="GTK_RESPONSE_" to_prefix="Gtk::ResponseType::" />
<substitute_enumerator_name from_prefix="GTK_INPUT_PURPOSE_" to_prefix="Gtk::InputPurpose::" />
<substitute_enumerator_name from_prefix="GTK_IMAGE_" to_prefix="Gtk::Image::Type::" />
<substitute_enumerator_name from_prefix="GTK_SELECTION_" to_prefix="Gtk::SelectionMode::" />
<substitute_enumerator_name from_prefix="GTK_WIN_POS_" to_prefix="Gtk::WindowPosition::" />
<substitute_enumerator_name from_prefix="GTK_WINDOW_GRAVITY_" to_prefix="Gtk::WindowGravity::" />
<substitute_enumerator_name from_prefix="GTK_PHASE_" to_prefix="Gtk::PropagationPhase::" />
<substitute_enumerator_name from_prefix="GTK_LIMIT_" to_prefix="Gtk::PropagationLimit::" />
<substitute_enumerator_name from_prefix="GTK_FILE_CHOOSER_ACTION_" to_prefix="Gtk::FileChooser::Action::" />
<substitute_enumerator_name from_prefix="GTK_FILE_CHOOSER_CONFIRMATION_" to_prefix="Gtk::FileChooser::Confirmation::" />
<substitute_enumerator_name from_prefix="GTK_EVENT_SEQUENCE_" to_prefix="Gtk::EventSequenceState::" />
<substitute_enumerator_name from_prefix="GTK_POS_" to_prefix="Gtk::PositionType::" />
<substitute_enumerator_name from_prefix="GTK_BASELINE_POSITION_" to_prefix="Gtk::BaselinePosition::" />
<substitute_enumerator_name from_prefix="GTK_ICON_LOOKUP_" to_prefix="Gtk::IconLookupFlags::" />
<substitute_enumerator_name from_prefix="GTK_JUSTIFY_" to_prefix="Gtk::Justification::" />
<substitute_enumerator_name from_prefix="PANGO_WRAP_" to_prefix="Pango::WrapMode::" />
<substitute_enumerator_name from_prefix="GTK_STATE_FLAG_" to_prefix="Gtk::StateFlags::" />
<substitute_enumerator_name from_prefix="GTK_LEVEL_BAR_MODE_" to_prefix="Gtk::LevelBar::Mode::" />
<substitute_enumerator_name from_prefix="GDK_ANCHOR_" to_prefix="Gdk::AnchorHints::" />
<substitute_enumerator_name from_prefix="GDK_GRAVITY_" to_prefix="Gdk::Gravity::" />
<substitute_enumerator_name from_prefix="GTK_ARROW_" to_prefix="Gtk::ArrowType::" />
<substitute_enumerator_name from_prefix="GTK_BUTTONS_" to_prefix="Gtk::ButtonsType::" />
<substitute_enumerator_name from_prefix="GTK_ALIGN_" to_prefix="Gtk::Align::" />
<substitute_enumerator_name from_prefix="GTK_UNIT_" to_prefix="Gtk::Unit::" />
<substitute_enumerator_name from_prefix="GDK_ACTION_" to_prefix="Gdk::DragAction::" />
<substitute_enumerator_name from_prefix="GTK_PRINT_OPERATION_RESULT_" to_prefix="Gtk::PrintOperation::Result::" />
<substitute_enumerator_name from_prefix="GTK_PRINT_STATUS_" to_prefix="Gtk::PrintStatus::" />
<substitute_enumerator_name from_prefix="GTK_TEXT_DIR_" to_prefix="Gtk::TextDirection::" />
<substitute_enumerator_name from_prefix="GTK_POLICY_" to_prefix="Gtk::PolicyType::" />
<substitute_enumerator_name from_prefix="GTK_CORNER_" to_prefix="Gtk::CornerType::" />
<substitute_enumerator_name from_prefix="GDK_SOURCE_" to_prefix="Gdk::InputSource::" />
<substitute_enumerator_name from_prefix="GTK_SHORTCUT_SCOPE_" to_prefix="Gtk::ShortcutScope::" />
<substitute_enumerator_name from_prefix="GTK_SHORTCUT_" to_prefix="Gtk::ShortcutType::" />
<substitute_enumerator_name from_prefix="GTK_SIZE_GROUP_" to_prefix="Gtk::SizeGroup::Mode::" />
<substitute_enumerator_name from_prefix="GTK_TEXT_SEARCH_" to_prefix="Gtk::TextSearchFlags::" />
<substitute_enumerator_name from_prefix="PANGO_UNDERLINE_" to_prefix="Pango::Underline::" />
<substitute_enumerator_name from_prefix="PANGO_OVERLINE_" to_prefix="Pango::Overline::" />
<substitute_enumerator_name from_prefix="PANGO_SHOW_" to_prefix="Pango::ShowFlags::" />
<substitute_enumerator_name from_prefix="PANGO_TEXT_TRANSFORM_" to_prefix="Pango::TextTransform::" />
<substitute_enumerator_name from_prefix="GTK_TEXT_WINDOW_" to_prefix="Gtk::TextWindowType::" />
<substitute_enumerator_name from_prefix="GTK_TREE_MODEL_" to_prefix="Gtk::TreeModel::Flags::" />
<substitute_enumerator_name from_prefix="GTK_TREE_VIEW_COLUMN_" to_prefix="Gtk::TreeViewColumn::Sizing::" />
<substitute_enumerator_name from_prefix="GTK_ORIENTATION_" to_prefix="Gtk::Orientation::" />
<substitute_enumerator_name from_prefix="GTK_OVERFLOW_" to_prefix="Gtk::Overflow::" />
<substitute_enumerator_name from_prefix="GTK_DIR_" to_prefix="Gtk::DirectionType::" />
<substitute_enumerator_name from_prefix="GTK_PRINT_CAPABILITY_" to_prefix="Gtk::PrintCapabilities::" />
<substitute_enumerator_name from_prefix="GTK_PRINT_OPERATION_ACTION_" to_prefix="Gtk::PrintOperation::Action::" />
<substitute_enumerator_name from_prefix="GTK_CELL_RENDERER_ACCEL_MODE_" to_prefix="Gtk::CellRendererAccel::Mode::" />
<substitute_enumerator_name from_prefix="PANGO_ALIGN_" to_prefix="Pango::Alignment::" />
<substitute_enumerator_name from_prefix="PANGO_STRETCH_" to_prefix="Pango::Stretch::" />
<substitute_enumerator_name from_prefix="PANGO_STYLE_" to_prefix="Pango::Style::" />
<substitute_enumerator_name from_prefix="PANGO_VARIANT_" to_prefix="Pango::Variant::" />
<substitute_enumerator_name from_prefix="GTK_INPUT_HINT_" to_prefix="Gtk::InputHints::" />
<substitute_enumerator_name from_prefix="GTK_SHADOW_" to_prefix="Gtk::ShadowType::" />
<substitute_enumerator_name from_prefix="GTK_MESSAGE_" to_prefix="Gtk::MessageType::" />
<substitute_enumerator_name from_prefix="GDK_SURFACE_TYPE_HINT_" to_prefix="Gdk::Surface::TypeHint::" />
<substitute_enumerator_name from_prefix="GTK_BUTTON_ROLE_" to_prefix="Gtk::ButtonRole::" />
<substitute_enumerator_name from_prefix="GTK_RECENT_SORT_" to_prefix="Gtk::RecentSortType::" />
<substitute_enumerator_name from_prefix="GTK_REVEALER_TRANSITION_TYPE_" to_prefix="Gtk::RevealerTransitionType::" />
<substitute_enumerator_name from_prefix="GTK_SCROLL_" to_prefix="Gtk::Scrollabel::Policy::" />
<substitute_enumerator_name from_prefix="GTK_UPDATE_" to_prefix="Gtk::SpinButton::UpdatePolicy::" />
<substitute_enumerator_name from_prefix="GTK_STACK_TRANSITION_TYPE_" to_prefix="Gtk::StackTransitionType::" />
<substitute_enumerator_name from_prefix="GTK_WRAP_" to_prefix="Gtk::WrapMode::" />
<substitute_enumerator_name from_prefix="GTK_NATURAL_WRAP_" to_prefix="Gtk::NaturalWrapMode::" />
<substitute_enumerator_name from_prefix="GTK_TREE_VIEW_GRID_LINES_" to_prefix="Gtk::TreeView::GridLines::" />
<substitute_enumerator_name from_prefix="GTK_SORT_" to_prefix="Gtk::SortType::" />
<substitute_enumerator_name from_prefix="GTK_FONT_CHOOSER_LEVEL_" to_prefix="Gtk::FontChooser::Level::" />
<substitute_enumerator_name from_prefix="GTK_FONT_LEVEL_" to_prefix="Gtk::FontLevel::" />
<substitute_enumerator_name from_prefix="GTK_FONT_RENDERING_" to_prefix="Gtk::FontRendering::" />
<substitute_enumerator_name from_prefix="GDK_TOUCH_" to_prefix="Gdk::Event::Type::TOUCH_" />
<substitute_enumerator_name from_prefix="GTK_EVENT_CONTROLLER_SCROLL_" to_prefix="Gtk::EventControllerScroll::Flags::" />
<substitute_enumerator_name from_prefix="GTK_APPLICATION_INHIBIT_" to_prefix="Gtk::Application::InhibitFlags::" />
<substitute_enumerator_name from_prefix="GTK_CONSTRAINT_ATTRIBUTE_" to_prefix="Gtk::Constraint::Attribute::" />
<substitute_enumerator_name from_prefix="GTK_CONSTRAINT_RELATION_" to_prefix="Gtk::Constraint::Relation::" />
<substitute_enumerator_name from_prefix="GTK_CONSTRAINT_STRENGTH_" to_prefix="Gtk::Constraint::Strength::" />
<substitute_enumerator_name from_prefix="GTK_ORDERING_" to_prefix="Gtk::Ordering::" />
<substitute_enumerator_name from_prefix="GTK_ACCESSIBLE_STATE_" to_prefix="Gtk::Accessible::State::" />
<substitute_enumerator_name from_prefix="GTK_ACCESSIBLE_ROLE_" to_prefix="Gtk::Accessible::Role::" />
<substitute_enumerator_name from_prefix="GTK_ACCESSIBLE_RELATION_" to_prefix="Gtk::Accessible::Relation::" />
<substitute_enumerator_name from_prefix="GTK_ACCESSIBLE_PROPERTY_" to_prefix="Gtk::Accessible::Property::" />
<substitute_enumerator_name from_prefix="GTK_FILTER_MATCH_" to_prefix="Gtk::Filter::Match::" />
<substitute_enumerator_name from_prefix="GTK_FILTER_CHANGE_" to_prefix="Gtk::Filter::Change::" />
<substitute_enumerator_name from_prefix="GTK_STRING_FILTER_MATCH_MODE_" to_prefix="Gtk::StringFilter::MatchMode::" />
<substitute_enumerator_name from_prefix="GDK_SCROLL_UNIT_" to_prefix="Gdk::ScrollUnit::" />
<substitute_enumerator_name from_prefix="GTK_CONTENT_FIT_" to_prefix="Gtk::ContentFit::" />
<substitute_enumerator_name from_prefix="GTK_INSCRIPTION_OVERFLOW_" to_prefix="Gtk::Inscription::Overflow::" />
<substitute_enumerator_name from_prefix="GTK_COLLATION_" to_prefix="Gtk::Collation::" />
<substitute_enumerator_name from_prefix="GTK_LIST_TAB_" to_prefix="Gtk::ListTabBehavior::" />
<substitute_enumerator_name from_prefix="GDK_GL_API_" to_prefix="Gdk::GLApi::" />
<substitute_enumerator_name from_prefix="GTK_GRAPHICS_OFFLOAD_" to_prefix="Gtk::GraphicsOffloadEnabled::" />
<substitute_enumerator_name from_prefix="GTK_POPOVER_MENU_" to_prefix="Gtk::PopoverMenu::Flags::" />
<substitute_enumerator_name from_prefix="GTK_INTERFACE_COLOR_SCHEME_" to_prefix="Gtk::InterfaceColorScheme::" />
<substitute_enumerator_name from_prefix="GTK_INTERFACE_CONTRAST_" to_prefix="Gtk::InterfaceContrast::" />
<substitute_enumerator_name from_prefix="GTK_REDUCED_MOTION_" to_prefix="Gtk::ReducedMotion::" />
<substitute_enumerator_name from_prefix="GTK_SVG_" to_prefix="Gtk::Svg::Features::" />
<substitute_enumerator_name from_prefix="GTK_SVG_ERROR_" to_prefix="Gtk::SvgError::" />
<substitute_enumerator_name from_prefix="GSK_ISOLATION_" to_prefix="Gsk::Isolation::" />
<substitute_enumerator_name from="GTK_DIALOG_ERROR" to="Gtk::DialogError" />
<!-- GdkWindowWindowClass is not wrapped in gtkmm. Don't substitute its enumerator names. -->
<substitute_enumerator_name from="GDK_INPUT_ONLY" to="GDK_INPUT_ONLY" />
<substitute_enumerator_name from="GDK_INPUT_OUTPUT" to="GDK_INPUT_OUTPUT" />
<!-- GSignalFlags is not wrapped in gtkmm. Don't substitute its enumerator names. -->
<substitute_enumerator_name from_prefix="G_SIGNAL_" to_prefix="G_SIGNAL_" />
<!-- G_CONNECT_AFTER corresponds to the 'after' parameter of connect(). -->
<substitute_enumerator_name from="G_CONNECT_AFTER" to="connect(..., true)" />
<!-- Some enums have enumerators without unique prefixes. Handle these enumerators individually. -->
<substitute_enumerator_name from="GDK_NO_MODIFIER_MASK" to="Gdk::ModifierType::NO_MODIFIER_MASK" />
<substitute_enumerator_name from="GDK_CONTROL_MASK" to="Gdk::ModifierType::CONTROL_MASK" />
<substitute_enumerator_name from="GDK_ALT_MASK" to="Gdk::ModifierType::ALT_MASK" />
<substitute_enumerator_name from="GDK_HYPER_MASK" to="Gdk::ModifierType::HYPER_MASK" />
<substitute_enumerator_name from="GDK_META_MASK" to="Gdk::ModifierType::META_MASK" />
<substitute_enumerator_name from="GDK_MOD1_MASK" to="Gdk::ModifierType::MOD1_MASK" />
<substitute_enumerator_name from="GDK_SHIFT_MASK" to="Gdk::ModifierType::SHIFT_MASK" />
<substitute_enumerator_name from="GDK_SUPER_MASK" to="Gdk::ModifierType::SUPER_MASK" />
<substitute_enumerator_name from="GDK_SURFACE_SUBSURFACE" to="Gdk::Surface::Type::SUBSURFACE" />
<!-- These are preprocessor defines. Don't substitute. -->
<substitute_enumerator_name from="GTK_BUILDER_ERROR" to="GTK_BUILDER_ERROR" />
<substitute_enumerator_name from="G_MARKUP_ERROR" to="G_MARKUP_ERROR" />
<substitute_enumerator_name from="G_FILE_ERROR" to="G_FILE_ERROR" />
<substitute_enumerator_name from="G_RESOURCE_ERROR" to="G_RESOURCE_ERROR" />
<substitute_enumerator_name from="G_MAXINT" to="G_MAXINT" />
<substitute_enumerator_name from="G_MAXUINT" to="G_MAXUINT" />
<substitute_enumerator_name from="GDK_SELECTION_CLIPBOARD" to="GDK_SELECTION_CLIPBOARD" />
<substitute_enumerator_name from="GDK_SELECTION_PRIMARY" to="GDK_SELECTION_PRIMARY" />
<substitute_enumerator_name from="GDK_NONE" to="GDK_NONE" />
<substitute_enumerator_name from="G_TYPE_STRING" to="G_TYPE_STRING" />
<substitute_enumerator_name from="G_TYPE_INT" to="G_TYPE_INT" />
<substitute_enumerator_name from="G_TYPE_NONE" to="G_TYPE_NONE" />
<substitute_enumerator_name from="G_TYPE_INVALID" to="G_TYPE_INVALID" />
<substitute_enumerator_name from="GTK_CSS_PROVIDER_ERROR" to="GTK_CSS_PROVIDER_ERROR" />
<substitute_enumerator_name from="GDK_TYPE_PIXBUF" to="GDK_TYPE_PIXBUF" />
<substitute_enumerator_name from="GDK_TYPE_RGBA" to="GDK_TYPE_RGBA" />
<substitute_enumerator_name from="GTK_TYPE_NOTEBOOK_PAGE" to="GTK_TYPE_NOTEBOOK_PAGE" />
<substitute_enumerator_name from_prefix="GTK_PRINT_SETTINGS_" to_prefix="GTK_PRINT_SETTINGS_" />
<substitute_enumerator_name from="GTK_RECENT_MANAGER_ERROR" to="GTK_RECENT_MANAGER_ERROR" />
<substitute_enumerator_name from="G_IO_ERROR" to="G_IO_ERROR" />
<substitute_enumerator_name from="GDK_CURRENT_TIME" to="GDK_CURRENT_TIME" />
<substitute_enumerator_name from="GDK_EVENT_STOP" to="GDK_EVENT_STOP" />
<substitute_enumerator_name from="GDK_EVENT_PROPAGATE" to="GDK_EVENT_PROPAGATE" />
<substitute_enumerator_name from="GTK_INPUT_ERROR" to="GTK_INPUT_ERROR" />
<substitute_enumerator_name from_prefix="GTK_STYLE_PROVIDER_PRIORITY_" to_prefix="GTK_STYLE_PROVIDER_PRIORITY_" />
<substitute_enumerator_name from="G_PI" to="G_PI" />
<substitute_enumerator_name from="G_TYPE_BOOLEAN" to="G_TYPE_BOOLEAN" />
<substitute_enumerator_name from_prefix="GTK_TREE_SORTABLE_" to_prefix="GTK_TREE_SORTABLE_" />
<substitute_enumerator_name from="GTK_CAN_FOCUS" to="GTK_CAN_FOCUS" />
<substitute_enumerator_name from="GTK_INVALID_LIST_POSITION" to="GTK_INVALID_LIST_POSITION" />
<substitute_enumerator_name from_prefix="GTK_STYLE_CLASS_" to_prefix="GTK_STYLE_CLASS_" />
<substitute_enumerator_name from="G_PRIORITY_DEFAULT" to="Glib::PRIORITY_DEFAULT" />
<substitute_enumerator_name from="G_PRIORITY_DEFAULT_IDLE" to="Glib::PRIORITY_DEFAULT_IDLE" />
<substitute_enumerator_name from="GTK_SVG_STATE_EMPTY" to="GTK_SVG_STATE_EMPTY" />
<substitute_enumerator_name from="GTK_SVG_ERROR" to="GTK_SVG_ERROR" />
<!-- These are the default substitutions. Included here to avoid warnings from DocsParser.pm. -->
<substitute_enumerator_name from="PANGO_SCALE" to="Pango::SCALE" />
<substitute_enumerator_name from="PANGO_SCALE_X_LARGE" to="Pango::SCALE_X_LARGE" />

<function name="gtk_label_get_label">
<return> the text of the label widget.
</return>
</function>

<function name="gtk_label_get_text">
<return> the text in the label widget.
</return>
</function>

<function name="gtk_label_get_layout">
<description>
Gets the #PangoLayout used to display the label.
The layout is useful to e.g. convert text positions to
pixel positions, in combination with gtk_label_get_layout_offsets().
</description>
</function>

<function name="gtk_notebook_get_tab_label_text">
<return>the text of the tab label.
</return>
</function>

<function name="gtk_notebook_get_menu_label_text">
<return>the text of the tab label.
</return>
</function>

<function name="gtk_text_buffer_create_mark">
<description>
Creates a mark at position @where. The mark can be retrieved by name using
gtk_text_buffer_get_mark (). If a mark has left gravity, and text is
inserted at the mark&apos;s current location, the mark will be moved to
the left of the newly-inserted text. If the mark has right gravity
(@left_gravity = %FALSE), the mark will end up on the right of
newly-inserted text. The standard left-to-right cursor is a mark
with right gravity (when you type, the cursor stays on the right
side of the text you&apos;re typing).

Emits the &quot;mark_set&quot; signal as notification of the mark&apos;s initial
placement.
</description>
</function>


<function name="gtk_text_buffer_delete_mark">
<description>
Deletes @mark, so that it&apos;s no longer located anywhere in the
buffer. Removes the reference the buffer holds to the mark, so if
you don't keep a Glib::RefPtr to the mark, it will be freed. Even
if the mark isn&apos;t freed, most operations on @mark become
invalid. There is no way to undelete a
mark. gtk_text_mark_get_deleted () will return TRUE after this
function has been called on a mark; gtk_text_mark_get_deleted ()
indicates that a mark no longer belongs to a buffer. The &quot;mark_deleted&quot;
signal will be emitted as notification after the mark is deleted.
</description>
</function>

<function name="gtk_text_iter_get_tags">
<description>
Returns a list of tags that apply to @iter, in ascending order of
priority (highest-priority tags are last).
</description>
</function>

<function name="gtk_text_view_get_tabs">
<description>
Gets the default tabs for @text_view. Tags in the buffer may
override the defaults. The returned array will be empty if
&quot;standard&quot; (8-space) tabs are used.
</description>
<return> copy of default tab array, or an empty array if &quot;standard&quot; tabs are used.
</return>
</function>

<function name="gtk_adjustment_clamp_page">
<description>
Updates the Adjustment value to ensure that the range between the parameters @lower and @upper is in the current page (i.e. between @value and @value + @page_size).  If this range is larger than the page size, then only the start of it will be in the current page.  A "changed" signal will be emitted if the value is changed.
</description>
</function>

<function name="gtk_adjustment_set_value">
<description>
Sets the current value of the Adjustment
</description>
<parameters>
<parameter name="adjustment">
<parameter_description> Ignored :)
</parameter_description>
</parameter>
<parameter name="value">
<parameter_description> The new value of the Adjustment
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gtk_text_child_anchor_get_widgets">
<description>
Gets a list of all widgets anchored at this child anchor.

</description>
</function>


<function name="gtk_tree_model_get_path">
<description>
Returns a #GtkTreePath referenced by @iter. 
</description>
<parameters>
<parameter name="tree_model">
<parameter_description> A #GtkTreeModel.
</parameter_description>
</parameter>
<parameter name="iter">
<parameter_description> The #GtkTreeIter.
</parameter_description>
</parameter>
</parameters>
<return> a #GtkTreePath.
</return>
</function>

<!-- Avoid using @ on a parameter name used in a code example,
  because that confuses doxygen, which then gets the start and end tags out of 
  sequence. -->
<function name="gtk_tree_model_rows_reordered">
<description>
Emits the #GtkTreeModel::rows-reordered signal on @tree_model.

This should be called by models when their rows have been
reordered.

</description>
<parameters>
<parameter name="tree_model">
<parameter_description> a #GtkTreeModel
</parameter_description>
</parameter>
<parameter name="path">
<parameter_description> a #GtkTreePath pointing to the tree node whose children
have been reordered
</parameter_description>
</parameter>
<parameter name="iter">
<parameter_description> a valid #GtkTreeIter pointing to the node whose children
have been reordered, or %NULL if the depth of @path is 0
</parameter_description>
</parameter>
<parameter name="new_order">
<parameter_description> an array of integers mapping the current position of
each child to its old position before the re-ordering,
i.e. new_order&lt;literal&gt;[newpos] = oldpos&lt;/literal&gt;
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>


<function name="gtk_tree_view_get_columns">
<description>
Returns a list of all the #GtkTreeViewColumn s currently in @tree_view.
</description>
</function>

<function name="gtk_window_set_default_widget">
<parameters>
<parameter name="window">
<parameter_description> a #GtkWindow
</parameter_description>
</parameter>
<parameter name="default_widget">
<parameter_description> widget to be the default.
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gtk_notebook_append_page">
<parameters>
<parameter name="notebook">
<parameter_description> a #GtkNotebook
</parameter_description>
</parameter>
<parameter name="child">
<parameter_description> the #GtkWidget to use as the contents of the page.
</parameter_description>
</parameter>
<parameter name="tab_label">
<parameter_description> the #GtkWidget to be used as the label for the page.
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gtk_notebook_append_page_menu">
<parameters>
<parameter name="notebook">
<parameter_description> a #GtkNotebook
</parameter_description>
</parameter>
<parameter name="child">
<parameter_description> the #GtkWidget to use as the contents of the page.
</parameter_description>
</parameter>
<parameter name="tab_label">
<parameter_description> the #GtkWidget to be used as the label for the page.
</parameter_description>
</parameter>
<parameter name="menu_label">
<parameter_description> the widget to use as a label for the page-switch
menu.
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gtk_notebook_insert_page">
<parameters>
<parameter name="notebook">
<parameter_description> a #GtkNotebook
</parameter_description>
</parameter>
<parameter name="child">
<parameter_description> the #GtkWidget to use as the contents of the page.
</parameter_description>
</parameter>
<parameter name="tab_label">
<parameter_description> the #GtkWidget to be used as the label for the page.
</parameter_description>
</parameter>
<parameter name="position">
<parameter_description> the index (starting at 0) at which to insert the page,
or -1 to append the page after all other pages.
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gtk_notebook_insert_page_menu">
<parameters>
<parameter name="notebook">
<parameter_description> a #GtkNotebook
</parameter_description>
</parameter>
<parameter name="child">
<parameter_description> the #GtkWidget to use as the contents of the page.
</parameter_description>
</parameter>
<parameter name="tab_label">
<parameter_description> the #GtkWidget to be used as the label for the page..
</parameter_description>
</parameter>
<parameter name="menu_label">
<parameter_description> the widget to use as a label for the page-switch
menu.
</parameter_description>
</parameter>
<parameter name="position">
<parameter_description> the index (starting at 0) at which to insert the page,
or -1 to append the page after all other pages.
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gtk_notebook_prepend_page">
<parameters>
<parameter name="notebook">
<parameter_description> a #GtkNotebook
</parameter_description>
</parameter>
<parameter name="child">
<parameter_description> the #GtkWidget to use as the contents of the page.
</parameter_description>
</parameter>
<parameter name="tab_label">
<parameter_description> the #GtkWidget to be used as the label for the page.
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gtk_notebook_prepend_page_menu">
<parameters>
<parameter name="notebook">
<parameter_description> a #GtkNotebook
</parameter_description>
</parameter>
<parameter name="child">
<parameter_description> the #GtkWidget to use as the contents of the page.
</parameter_description>
</parameter>
<parameter name="tab_label">
<parameter_description> the #GtkWidget to be used as the label for the page.
</parameter_description>
</parameter>
<parameter name="menu_label">
<parameter_description> the widget to use as a label for the page-switch
menu.
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gtk_tree_view_get_background_area">
<description>
Fills the bounding rectangle in tree window coordinates for the cell at the
row specified by @path and the column specified by @column.  The returned rectangle is equivalent to the
@background_area passed to gtk_cell_renderer_render().  These background
areas tile to cover the entire tree window (except for the area used for
header buttons). Contrast with the @cell_area, returned by
gtk_tree_view_get_cell_area(), which returns only the cell itself, excluding
surrounding borders and the tree expander area.


</description>
<parameters>
<parameter name="tree_view">
<parameter_description> a #GtkTreeView
</parameter_description>
</parameter>
<parameter name="path">
<parameter_description> a #GtkTreePath for the row.
</parameter_description>
</parameter>
<parameter name="column">
<parameter_description> a #GtkTreeViewColumn for the column.
</parameter_description>
</parameter>
<parameter name="rect">
<parameter_description> rectangle to fill with cell background rect
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gtk_tree_view_get_cell_area">
<description>
Fills the bounding rectangle in tree window coordinates for the cell at the
row specified by @path and the column specified by @column.  If @path points to a path not currently displayed, the @y and @height fields
of the rectangle will be filled with 0.  The sum of all cell rects does not cover the
entire tree; there are extra pixels in between rows, for example. The
returned rectangle is equivalent to the @cell_area passed to
gtk_cell_renderer_render().  This function is only valid if #tree_view is
realized.

</description>
<parameters>
<parameter name="tree_view">
<parameter_description> a #GtkTreeView
</parameter_description>
</parameter>
<parameter name="path">
<parameter_description> a #GtkTreePath for the row.
</parameter_description>
</parameter>
<parameter name="column">
<parameter_description> a #GtkTreeViewColumn for the column.
</parameter_description>
</parameter>
<parameter name="rect">
<parameter_description> rectangle to fill with cell rect
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gtk_window_set_focus">
<description>
If @focus is not the current focus widget, and is focusable, sets
it as the focus widget for the window. To set the focus to a particular
widget in the toplevel, it is usually more convenient to use
gtk_widget_grab_focus() instead of this function.

</description>
<parameters>
<parameter name="window">
<parameter_description> a #GtkWindow
</parameter_description>
</parameter>
<parameter name="focus">
<parameter_description> widget to be the new focus widget.
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gtk_tree_path_to_string">
<parameters>
<parameter name="path">
<parameter_description> A #GtkTreePath
</parameter_description>
</parameter>
</parameters>
<return> The string.
</return>
</function>

<function name="gtk_tree_model_get_string_from_iter">
<parameters>
<parameter name="tree_model">
<parameter_description> A #GtkTreeModel.
</parameter_description>
</parameter>
<parameter name="iter">
<parameter_description> An #GtkTreeIter.
</parameter_description>
</parameter>
</parameters>
<return> The string.
</return>
</function>

<function name="gtk_drag_check_threshold">
    <mapping class="Widget" />
</function>

<function name="gtk_tree_view_move_column_after">
<description>
Moves @column to be after to @base_column.  See also move_column_to_start().

</description>
<parameters>
<parameter name="tree_view">
<parameter_description> A #GtkTreeView
</parameter_description>
</parameter>
<parameter name="column">
<parameter_description> The #GtkTreeViewColumn to be moved.
</parameter_description>
</parameter>
<parameter name="base_column">
<parameter_description> The #GtkTreeViewColumn to be moved relative to.
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gtk_cell_renderer_get_size">
<description>
Obtains the width and height needed to render the cell. Used by view widgets
to determine the appropriate size for the cell_area passed to
gtk_cell_renderer_render().  Fills in the x and y
offsets of the cell relative to this location.  Please note that the
values set in @width and @height, as well as those in @x_offset and @y_offset
are inclusive of the xpad and ypad properties.

</description>
<parameters>
<parameter name="cell">
<parameter_description> a #GtkCellRenderer
</parameter_description>
</parameter>
<parameter name="widget">
<parameter_description> the widget the renderer is rendering to
</parameter_description>
</parameter>
<parameter name="cell_area">
<parameter_description> The area a cell will be allocated.
</parameter_description>
</parameter>
<parameter name="x_offset">
<parameter_description> location to return x offset of cell relative to @cell_area.
</parameter_description>
</parameter>
<parameter name="y_offset">
<parameter_description> location to return y offset of cell relative to @cell_area.
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> location to return width needed to render a cell.
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> location to return height needed to render a cell.
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gtk_tree_view_column_cell_get_size">
<parameters>
<parameter name="tree_column">
<parameter_description> A #GtkTreeViewColumn.
</parameter_description>
</parameter>
<parameter name="x_offset">
<parameter_description> location to return x offset of a cell relative to @cell_area.
</parameter_description>
</parameter>
<parameter name="y_offset">
<parameter_description> location to return y offset of a cell relative to @cell_area.
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> location to return width needed to render a cell.
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> location to return height needed to render a cell.
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>


<function name="gtk_tree_view_column_cell_get_position">
<parameters>
<parameter name="tree_column">
<parameter_description> a #GtkTreeViewColumn
</parameter_description>
</parameter>
<parameter name="cell_renderer">
<parameter_description> a #GtkCellRenderer
</parameter_description>
</parameter>
<parameter name="start_pos">
<parameter_description> return location for the horizontal position of @cell within
@tree_column.
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> return location for the width of @cell.
</parameter_description>
</parameter>
</parameters>
</function>

<function name="gtk_tree_view_set_expander_column">
<description>
Sets the column to draw the expander arrow at. It must be in the TreeView.  See also reset_expander_column().

</description>
<parameters>
<parameter name="tree_view">
<parameter_description> A #GtkTreeView
</parameter_description>
</parameter>
<parameter name="column">
<parameter_description>The column to draw the expander arrow at.
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gtk_tree_view_set_cursor">
<description>
Sets the current keyboard focus to be at @path, and selects it.  This is
useful when you want to focus the user&apos;s attention on a particular row. Focus is given to the column specified.
Additionally, if @start_editing is
%TRUE, then editing should be started in the specified cell.
This function is often followed by Gtk::Widget::grab_focus(@tree_view)
in order to give keyboard focus to the widget.  Please note that editing
can only happen when the widget is realized.

</description>
<parameters>
<parameter name="tree_view">
<parameter_description> A #GtkTreeView
</parameter_description>
</parameter>
<parameter name="path">
<parameter_description> A #GtkTreePath
</parameter_description>
</parameter>
<parameter name="focus_column">
<parameter_description> A #GtkTreeViewColumn.
</parameter_description>
</parameter>
<parameter name="start_editing">
<parameter_description> %TRUE if the specified cell should start being edited.
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gtk_tree_view_set_model">
<description>
Sets the model for a #GtkTreeView.  If the @tree_view already has a model
set, it will remove it before setting the new model. Use unset_model() to
unset the old model.
</description>
</function>

<function name="gtk_window_get_default_size">
<parameters>
<parameter name="window">
<parameter_description> a #GtkWindow
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> location to store the default width.
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> location to store the default height.
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gtk_window_get_size">
<parameters>
<parameter name="window">
<parameter_description> a #GtkWindow
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> return location for width.
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> return location for height.
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gtk_file_chooser_get_preview_filename">
<return> the filename to preview, or an empty string if no file
is selected, or if the selected file cannot be represented
as a local filename.
</return>
</function>

<function name="gtk_file_chooser_get_preview_uri">
<return> the URI for the file to preview, or an empty string if no file is
selected.
</return>
</function>

<function name="gtk_file_chooser_get_current_folder_uri">
<return> the URI for the current folder.
</return>
</function>

<function name="gtk_file_chooser_get_uri">
<return> The currently selected URI, or an empty string
if no file is selected.
</return>
</function>

<function name="gtk_file_chooser_get_filename">
<return> The currently selected filename, or an empty string
if no file is selected, or the selected file can&apos;t
be represented with a local filename.
</return>
</function>

<function name="gtk_cell_renderer_get_fixed_size">
<parameters>
<parameter name="cell">
<parameter_description> A #GtkCellRenderer
</parameter_description>
</parameter>
<parameter name="width">
<parameter_description> location to fill in with the fixed width of the widget.
</parameter_description>
</parameter>
<parameter name="height">
<parameter_description> location to fill in with the fixed height of the widget.
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gtk_text_iter_forward_search">
<description>
Searches forward for @str. Any match is returned by setting 
@match_start to the first character of the match and @match_end to the 
first character after the match. The search will not continue past
@limit. Note that a search is a linear or O(n) operation, so you
may wish to use @limit to avoid locking up your UI on large
buffers.

If the #GTK_TEXT_SEARCH_VISIBLE_ONLY flag is present, the match may
have invisible text interspersed in @str. i.e. @str will be a
possibly-noncontiguous subsequence of the matched range. similarly,
if you specify #GTK_TEXT_SEARCH_TEXT_ONLY, the match may have
pixbufs or child widgets mixed inside the matched range. If these
flags are not given, the match must be exact; the special 0xFFFC
character in @str will match embedded pixbufs or child widgets.
</description>
<parameters>
<parameter name="iter">
<parameter_description> start of search
</parameter_description>
</parameter>
<parameter name="str">
<parameter_description> a search string
</parameter_description>
</parameter>
<parameter name="flags">
<parameter_description> flags affecting how the search is done
</parameter_description>
</parameter>
<parameter name="match_start">
<parameter_description> return location for start of match
</parameter_description>
</parameter>
<parameter name="match_end">
<parameter_description> return location for end of match
</parameter_description>
</parameter>
<parameter name="limit">
<parameter_description> bound for the search
</parameter_description>
</parameter>
</parameters>
</function>


<function name="gtk_text_iter_backward_search">
<description>
Same as gtk_text_iter_forward_search(), but moves backward.
</description>
<parameters>
<parameter name="iter">
<parameter_description> a #GtkTextIter where the search begins
</parameter_description>
</parameter>
<parameter name="str">
<parameter_description> search string
</parameter_description>
</parameter>
<parameter name="flags">
<parameter_description> bitmask of flags affecting the search
</parameter_description>
</parameter>
<parameter name="match_start">
<parameter_description> return location for start of match
</parameter_description>
</parameter>
<parameter name="match_end">
<parameter_description> return location for end of match
</parameter_description>
</parameter>
<parameter name="limit">
<parameter_description> location of last possible @match_start
</parameter_description>
</parameter>
</parameters>
</function>

<function name="gtk_image_set_from_pixbuf">
<description>
See the Image::Image(const Glib::RefPtr&lt;Gdk::Pixbuf&gt;&amp; pixbuf) constructor for details.
</description>
<parameters>
<parameter name="image">
<parameter_description> a #GtkImage
</parameter_description>
</parameter>
<parameter name="pixbuf">
<parameter_description> a #Gdk::Pixbuf
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gtk_image_set_from_file">
<description>
See the Image::Image(const std::string&amp; file) constructor for details.
</description>
<parameters>
<parameter name="image">
<parameter_description> a #GtkImage
</parameter_description>
</parameter>
<parameter name="filename">
<parameter_description> a filename.
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gtk_progress_bar_get_text">
<description>
Retrieves the text displayed superimposed on the progress bar,
if any.
</description>
<return> text.
</return>
</function>

<function name="gtk_color_button_get_title">
<return>The title
</return>
</function>

<function name="gtk_file_chooser_get_current_folder">
<return> the full path of the current folder, possibly empty if the current
path cannot be represented as a local filename.  This function may also return
an empty string if the file chooser was unable to load the last folder that was
requested from it; for example, as would be for calling
gtk_file_chooser_set_current_folder() on a nonexistent folder.
</return>
</function>

<function name="gtk_file_chooser_list_shortcut_folders">
<return> A list of folder filenames, if there are any shortcut
folders.
</return>
</function>

<function name="gtk_file_chooser_list_shortcut_folder_uris">
<return> A list of folder URIs
</return>
</function>

<function name="gtk_file_chooser_list_filters">
<return> a list containing the current set of
user selectable filters.
</return>
</function>


<function name="gtk_file_chooser_get_uris">
<return> a list containing the URIs of all selected
files and subfolders in the current folder.
</return>
</function>


<function name="gtk_file_chooser_get_filenames">
<return> a list containing the filenames of all selected
files and subfolders in the current folder.
</return>
</function>

<function name="gtk_page_setup_to_key_file">
<parameters>
<parameter name="setup">
<parameter_description> a #GtkPageSetup
</parameter_description>
</parameter>
<parameter name="key_file">
<parameter_description> the Glib::KeyFile to save the page setup to
</parameter_description>
</parameter>
<parameter name="group_name">
<parameter_description> the group to add the settings to in @key_file.
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>

<function name="gtk_print_settings_to_key_file">
<parameters>
<parameter name="settings">
<parameter_description> a #GtkPrintSettings
</parameter_description>
</parameter>
<parameter name="key_file">
<parameter_description> the Glib::KeyFile to save the print settings to
</parameter_description>
</parameter>
<parameter name="group_name">
<parameter_description> the group to add the settings to in @key_file.
</parameter_description>
</parameter>
</parameters>
<return></return>
</function>


<function name="gtk_about_dialog_get_program_name">
<return> The program name.
</return>
</function>

<function name="gtk_about_dialog_get_website_label">
<return> The label used for the website link. 
</return>
</function>

<function name="gtk_cell_layout_get_cells">
<return> a vector of cell renderers.
</return>
</function>

<function name="gtk_widget_get_tooltip_markup">
<return> the tooltip text.
</return>
</function>


<function name="gtk_widget_get_tooltip_text">
<return> the tooltip text.
</return>
</function>


<function name="gtk_entry_get_text">
<description>
Retrieves the contents of the entry widget.
See also gtk_editable_get_chars().
</description>
<return>The contents of the entry widget.
</return>
</function>


<function name="gtk_builder_get_objects">
<description>
Gets all objects that have been constructed by the Gtk::Builder.

Since: 3.8
</description>
<return> a vector containing all the objects
constructed by the Gtk::Builder instance.
</return>
</function>

<function name="gtk_expression_get_value_type">
<return>The type returned from Gtk::Expression::evaluate()
</return>
</function>

<function name="gtk_expression_is_static">
<description>Checks if the expression is static.

A static expression will never change its result when 
Gtk::Expression::evaluate() is called on it with the same arguments.

That means a call to Gtk::Expression::watch() is not necessary because
it will never trigger a notify.
</description>
</function>

<function name="gtk_expression_watch_unwatch">
<description>
Stops watching an expression that was established via Gtk::Expression::watch().
</description>
</function>

<function name="gtk_expression_watch_evaluate">
<description>
Evaluates the watched expression and on success stores the result
in @value.

This is equivalent to calling Gtk::Expression::evaluate() with the
expression and this pointer originally used to create @watch.
</description>
</function>

</root>
