/*
 * Automatically generated, do not edit this file directly
 */

using System;
using System.Runtime.InteropServices;

namespace Mono {
	public static partial class NativeMethods
	{
		/* moonplugin methods */
	
	
		/* libmoon methods */
	
		[DllImport ("moon")]
		// Application *application_new ();
		public extern static IntPtr application_new ();

		[DllImport ("moon")]
		// ArcSegment *arc_segment_new ();
		public extern static IntPtr arc_segment_new ();

		[DllImport ("moon")]
		// AssemblyPart *assembly_part_new ();
		public extern static IntPtr assembly_part_new ();

		[DllImport ("moon")]
		// AssemblyPartCollection *assembly_part_collection_new ();
		public extern static IntPtr assembly_part_collection_new ();

		[DllImport ("moon")]
		// BeginStoryboard *begin_storyboard_new ();
		public extern static IntPtr begin_storyboard_new ();

		[DllImport ("moon")]
		// BezierSegment *bezier_segment_new ();
		public extern static IntPtr bezier_segment_new ();

		[DllImport ("moon")]
		// BitmapImage *bitmap_image_new ();
		public extern static IntPtr bitmap_image_new ();

		[DllImport ("moon")]
		// Border *border_new ();
		public extern static IntPtr border_new ();

		[DllImport ("moon")]
		// Brush *brush_new ();
		public extern static IntPtr brush_new ();

		[DllImport ("moon")]
		// Canvas *canvas_new ();
		public extern static IntPtr canvas_new ();

		[DllImport ("moon", EntryPoint="collection_add_with_error")]
		// int collection_add_with_error (Collection *instance, Value *value, MoonError *error);
		private extern static int collection_add_with_error_ (IntPtr instance, ref Value value, out MoonError error);
		public static int collection_add (IntPtr instance, ref Value value)
		{
			int result;
			MoonError error;
			result = collection_add_with_error_ (instance, ref value, out error);
			if (error.Number != 0)
				throw CreateManagedException (error);
			return result;
		}

		[DllImport ("moon")]
		// bool collection_clear (Collection *instance);
		public extern static bool collection_clear (IntPtr instance);

		[DllImport ("moon")]
		// bool collection_contains (Collection *instance, Value *value);
		public extern static bool collection_contains (IntPtr instance, ref Value value);

		[DllImport ("moon")]
		// int collection_get_count (Collection *instance);
		public extern static int collection_get_count (IntPtr instance);

		[DllImport ("moon")]
		// Type::Kind collection_get_element_type (Collection *instance);
		public extern static Kind collection_get_element_type (IntPtr instance);

		[DllImport ("moon")]
		// CollectionIterator *collection_get_iterator (Collection *instance);
		public extern static IntPtr collection_get_iterator (IntPtr instance);

		[DllImport ("moon", EntryPoint="collection_get_value_at_with_error")]
		// Value *collection_get_value_at_with_error (Collection *instance, int index, MoonError *error);
		private extern static IntPtr collection_get_value_at_with_error_ (IntPtr instance, int index, out MoonError error);
		public static IntPtr collection_get_value_at (IntPtr instance, int index)
		{
			IntPtr result;
			MoonError error;
			result = collection_get_value_at_with_error_ (instance, index, out error);
			if (error.Number != 0)
				throw CreateManagedException (error);
			return result;
		}

		[DllImport ("moon")]
		// int collection_index_of (Collection *instance, Value *value);
		public extern static int collection_index_of (IntPtr instance, ref Value value);

		[DllImport ("moon", EntryPoint="collection_insert_with_error")]
		// int collection_insert_with_error (Collection *instance, int index, Value *value, MoonError *error);
		private extern static int collection_insert_with_error_ (IntPtr instance, int index, ref Value value, out MoonError error);
		public static int collection_insert (IntPtr instance, int index, ref Value value)
		{
			int result;
			MoonError error;
			result = collection_insert_with_error_ (instance, index, ref value, out error);
			if (error.Number != 0)
				throw CreateManagedException (error);
			return result;
		}

		[DllImport ("moon")]
		// bool collection_remove (Collection *instance, Value *value);
		public extern static bool collection_remove (IntPtr instance, ref Value value);

		[DllImport ("moon", EntryPoint="collection_remove_at_with_error")]
		// bool collection_remove_at_with_error (Collection *instance, int index, MoonError *error);
		private extern static bool collection_remove_at_with_error_ (IntPtr instance, int index, out MoonError error);
		public static bool collection_remove_at (IntPtr instance, int index)
		{
			bool result;
			MoonError error;
			result = collection_remove_at_with_error_ (instance, index, out error);
			if (error.Number != 0)
				throw CreateManagedException (error);
			return result;
		}

		[DllImport ("moon", EntryPoint="collection_set_value_at_with_error")]
		// bool collection_set_value_at_with_error (Collection *instance, int index, Value *value, MoonError *error);
		private extern static bool collection_set_value_at_with_error_ (IntPtr instance, int index, ref Value value, out MoonError error);
		public static bool collection_set_value_at (IntPtr instance, int index, ref Value value)
		{
			bool result;
			MoonError error;
			result = collection_set_value_at_with_error_ (instance, index, ref value, out error);
			if (error.Number != 0)
				throw CreateManagedException (error);
			return result;
		}

		[DllImport ("moon")]
		// CollectionChangedEventArgs *collection_changed_event_args_new ();
		public extern static IntPtr collection_changed_event_args_new ();

		// This method contains types the generator didn't know about. Fix the generator (find the method 'GetManagedType' in TypeReference.cs and add the missing case) and try again.
		// [DllImport ("moon")]
		// CollectionChangedAction collection_changed_event_args_get_changed_action (CollectionChangedEventArgs *instance);
		// public extern static /* Unknown: 'CollectionChangedAction' */ collection_changed_event_args_get_changed_action (IntPtr instance);

		[DllImport ("moon")]
		// int collection_changed_event_args_get_index (CollectionChangedEventArgs *instance);
		public extern static int collection_changed_event_args_get_index (IntPtr instance);

		[DllImport ("moon")]
		// Value *collection_changed_event_args_get_new_item (CollectionChangedEventArgs *instance);
		public extern static IntPtr collection_changed_event_args_get_new_item (IntPtr instance);

		[DllImport ("moon")]
		// Value *collection_changed_event_args_get_old_item (CollectionChangedEventArgs *instance);
		public extern static IntPtr collection_changed_event_args_get_old_item (IntPtr instance);

		// This method contains types the generator didn't know about. Fix the generator (find the method 'GetManagedType' in TypeReference.cs and add the missing case) and try again.
		// [DllImport ("moon")]
		// void collection_changed_event_args_set_changed_action (CollectionChangedEventArgs *instance, CollectionChangedAction action);
		// public extern static void collection_changed_event_args_set_changed_action (IntPtr instance, /* Unknown: 'CollectionChangedAction' */ action);

		[DllImport ("moon")]
		// void collection_changed_event_args_set_index (CollectionChangedEventArgs *instance, int index);
		public extern static void collection_changed_event_args_set_index (IntPtr instance, int index);

		[DllImport ("moon")]
		// void collection_changed_event_args_set_new_item (CollectionChangedEventArgs *instance, Value *item);
		public extern static void collection_changed_event_args_set_new_item (IntPtr instance, ref Value item);

		[DllImport ("moon")]
		// void collection_changed_event_args_set_old_item (CollectionChangedEventArgs *instance, Value *item);
		public extern static void collection_changed_event_args_set_old_item (IntPtr instance, ref Value item);

		[DllImport ("moon")]
		// void collection_iterator_destroy (CollectionIterator *iterator);
		public extern static void collection_iterator_destroy (IntPtr iterator);

		[DllImport ("moon")]
		// Value *collection_iterator_get_current (CollectionIterator *instance, int *error);
		public extern static IntPtr collection_iterator_get_current (IntPtr instance, out int error);

		[DllImport ("moon")]
		// int collection_iterator_next (CollectionIterator *instance);
		public extern static int collection_iterator_next (IntPtr instance);

		[DllImport ("moon")]
		// bool collection_iterator_reset (CollectionIterator *instance);
		public extern static bool collection_iterator_reset (IntPtr instance);

		[DllImport ("moon")]
		// ColorAnimation *color_animation_new ();
		public extern static IntPtr color_animation_new ();

		[DllImport ("moon")]
		// ColorAnimationUsingKeyFrames *color_animation_using_key_frames_new ();
		public extern static IntPtr color_animation_using_key_frames_new ();

		[DllImport ("moon")]
		// ColorKeyFrame *color_key_frame_new ();
		public extern static IntPtr color_key_frame_new ();

		[DllImport ("moon")]
		// ColorKeyFrameCollection *color_key_frame_collection_new ();
		public extern static IntPtr color_key_frame_collection_new ();

		[DllImport ("moon")]
		// ColumnDefinition *column_definition_new ();
		public extern static IntPtr column_definition_new ();

		[DllImport ("moon")]
		// double column_definition_get_actual_width (ColumnDefinition *instance);
		public extern static double column_definition_get_actual_width (IntPtr instance);

		[DllImport ("moon")]
		// ColumnDefinitionCollection *column_definition_collection_new ();
		public extern static IntPtr column_definition_collection_new ();

		[DllImport ("moon")]
		// ContentControl *content_control_new ();
		public extern static IntPtr content_control_new ();

		[DllImport ("moon")]
		// bool control_apply_template (Control *instance);
		public extern static bool control_apply_template (IntPtr instance);

		[DllImport ("moon")]
		// Control *control_new ();
		public extern static IntPtr control_new ();

		[DllImport ("moon")]
		// ControlTemplate *control_template_new ();
		public extern static IntPtr control_template_new ();

		[DllImport ("moon")]
		// DeepZoomImageTileSource *deep_zoom_image_tile_source_new ();
		public extern static IntPtr deep_zoom_image_tile_source_new ();

		[DllImport ("moon")]
		// void dependency_object_clear_value (DependencyObject *instance, DependencyProperty *property, bool notify_listeners);
		public extern static void dependency_object_clear_value (IntPtr instance, IntPtr property, bool notify_listeners);

		[DllImport ("moon")]
		// DependencyObject *dependency_object_new ();
		public extern static IntPtr dependency_object_new ();

		[DllImport ("moon")]
		// DependencyObject *dependency_object_find_name (DependencyObject *instance, const char *name, Type::Kind *element_kind);
		public extern static IntPtr dependency_object_find_name (IntPtr instance, string name, out Kind element_kind);

		[DllImport ("moon", EntryPoint="dependency_object_get_default_value_with_error")]
		// Value *dependency_object_get_default_value_with_error (DependencyObject *instance, Types *additional_types, DependencyProperty *property, MoonError *error);
		private extern static IntPtr dependency_object_get_default_value_with_error_ (IntPtr instance, IntPtr additional_types, IntPtr property, out MoonError error);
		public static IntPtr dependency_object_get_default_value (IntPtr instance, IntPtr property)
		{
			IntPtr result;
			MoonError error;
			result = dependency_object_get_default_value_with_error_ (instance, Mono.Types.Native, property, out error);
			if (error.Number != 0)
				throw CreateManagedException (error);
			return result;
		}

		[DllImport ("moon", EntryPoint="dependency_object_get_name")]
		// const char *dependency_object_get_name (DependencyObject *instance);
		private extern static IntPtr dependency_object_get_name_ (IntPtr instance);
		public static string dependency_object_get_name (IntPtr instance)
		{
			IntPtr result;
			result = dependency_object_get_name_ (instance);
			return (result == IntPtr.Zero) ? null : Marshal.PtrToStringAnsi (result);
		}

		[DllImport ("moon")]
		// Type::Kind dependency_object_get_object_type (DependencyObject *instance);
		public extern static Kind dependency_object_get_object_type (IntPtr instance);

		[DllImport ("moon", EntryPoint="dependency_object_get_value_no_default_with_error")]
		// Value *dependency_object_get_value_no_default_with_error (DependencyObject *instance, Types *additional_types, DependencyProperty *property, MoonError *error);
		private extern static IntPtr dependency_object_get_value_no_default_with_error_ (IntPtr instance, IntPtr additional_types, IntPtr property, out MoonError error);
		public static IntPtr dependency_object_get_value_no_default (IntPtr instance, IntPtr property)
		{
			IntPtr result;
			MoonError error;
			result = dependency_object_get_value_no_default_with_error_ (instance, Mono.Types.Native, property, out error);
			if (error.Number != 0)
				throw CreateManagedException (error);
			return result;
		}

		[DllImport ("moon", EntryPoint="dependency_object_get_value_with_error")]
		// Value *dependency_object_get_value_with_error (DependencyObject *instance, Types *additional_types, Type::Kind whatami, DependencyProperty *property, MoonError *error);
		private extern static IntPtr dependency_object_get_value_with_error_ (IntPtr instance, IntPtr additional_types, Kind whatami, IntPtr property, out MoonError error);
		public static IntPtr dependency_object_get_value (IntPtr instance, Kind whatami, IntPtr property)
		{
			IntPtr result;
			MoonError error;
			result = dependency_object_get_value_with_error_ (instance, Mono.Types.Native, whatami, property, out error);
			if (error.Number != 0)
				throw CreateManagedException (error);
			return result;
		}

		[DllImport ("moon")]
		// void dependency_object_set_name (DependencyObject *instance, const char *name);
		public extern static void dependency_object_set_name (IntPtr instance, string name);

		[DllImport ("moon", EntryPoint="dependency_object_set_value_with_error")]
		// bool dependency_object_set_value_with_error (DependencyObject *instance, Types *additional_types, DependencyProperty *property, Value *value, MoonError *error);
		private extern static bool dependency_object_set_value_with_error_ (IntPtr instance, IntPtr additional_types, IntPtr property, ref Value value, out MoonError error);
		public static bool dependency_object_set_value (IntPtr instance, IntPtr property, ref Value value)
		{
			bool result;
			MoonError error;
			result = dependency_object_set_value_with_error_ (instance, Mono.Types.Native, property, ref value, out error);
			if (error.Number != 0)
				throw CreateManagedException (error);
			return result;
		}

		[DllImport ("moon")]
		// DependencyObjectCollection *dependency_object_collection_new ();
		public extern static IntPtr dependency_object_collection_new ();

		[DllImport ("moon")]
		// DependencyProperty *dependency_property_get_dependency_property (Type::Kind type, const char *name);
		public extern static IntPtr dependency_property_get_dependency_property (Kind type, string name);

		[DllImport ("moon", EntryPoint="dependency_property_get_name")]
		// const char *dependency_property_get_name (DependencyProperty *instance);
		private extern static IntPtr dependency_property_get_name_ (IntPtr instance);
		public static string dependency_property_get_name (IntPtr instance)
		{
			IntPtr result;
			result = dependency_property_get_name_ (instance);
			return (result == IntPtr.Zero) ? null : Marshal.PtrToStringAnsi (result);
		}

		[DllImport ("moon")]
		// Type::Kind dependency_property_get_property_type (DependencyProperty *instance);
		public extern static Kind dependency_property_get_property_type (IntPtr instance);

		[DllImport ("moon")]
		// bool dependency_property_is_attached (DependencyProperty *instance);
		public extern static bool dependency_property_is_attached (IntPtr instance);

		[DllImport ("moon")]
		// bool dependency_property_is_nullable (DependencyProperty *instance);
		public extern static bool dependency_property_is_nullable (IntPtr instance);

		[DllImport ("moon", EntryPoint="dependency_property_register_full")]
		// DependencyProperty *dependency_property_register_full (Types *additional_types, Type::Kind type, const char *name, Value *default_value, Type::Kind vtype, bool attached, bool read_only, bool always_change, NativePropertyChangedHandler *changed_callback);
		private extern static IntPtr dependency_property_register_full_ (IntPtr additional_types, Kind type, string name, ref Value default_value, Kind vtype, bool attached, bool read_only, bool always_change, Mono.NativePropertyChangedHandler changed_callback);
		public static IntPtr dependency_property_register_full (Kind type, string name, ref Value default_value, Kind vtype, bool attached, bool read_only, bool always_change, Mono.NativePropertyChangedHandler changed_callback)
		{
			IntPtr result;
			result = dependency_property_register_full_ (Mono.Types.Native, type, name, ref default_value, vtype, attached, read_only, always_change, changed_callback);
			return result;
		}

		[DllImport ("moon", EntryPoint="dependency_property_register_managed_property")]
		// DependencyProperty *dependency_property_register_managed_property (Types *additional_types, const char *name, Type::Kind property_type, Type::Kind owner_type, bool attached, NativePropertyChangedHandler *callback);
		private extern static IntPtr dependency_property_register_managed_property_ (IntPtr additional_types, string name, Kind property_type, Kind owner_type, bool attached, Mono.NativePropertyChangedHandler callback);
		public static IntPtr dependency_property_register_managed_property (string name, Kind property_type, Kind owner_type, bool attached, Mono.NativePropertyChangedHandler callback)
		{
			IntPtr result;
			result = dependency_property_register_managed_property_ (Mono.Types.Native, name, property_type, owner_type, attached, callback);
			return result;
		}

		[DllImport ("moon")]
		// Deployment *deployment_new ();
		public extern static IntPtr deployment_new ();

		[DllImport ("moon")]
		// DiscreteColorKeyFrame *discrete_color_key_frame_new ();
		public extern static IntPtr discrete_color_key_frame_new ();

		[DllImport ("moon")]
		// DiscreteDoubleKeyFrame *discrete_double_key_frame_new ();
		public extern static IntPtr discrete_double_key_frame_new ();

		[DllImport ("moon")]
		// DiscreteObjectKeyFrame *discrete_object_key_frame_new ();
		public extern static IntPtr discrete_object_key_frame_new ();

		[DllImport ("moon")]
		// DiscretePointKeyFrame *discrete_point_key_frame_new ();
		public extern static IntPtr discrete_point_key_frame_new ();

		[DllImport ("moon")]
		// DoubleAnimation *double_animation_new ();
		public extern static IntPtr double_animation_new ();

		[DllImport ("moon")]
		// DoubleAnimationUsingKeyFrames *double_animation_using_key_frames_new ();
		public extern static IntPtr double_animation_using_key_frames_new ();

		[DllImport ("moon")]
		// DoubleCollection *double_collection_new ();
		public extern static IntPtr double_collection_new ();

		[DllImport ("moon")]
		// DoubleKeyFrame *double_key_frame_new ();
		public extern static IntPtr double_key_frame_new ();

		[DllImport ("moon")]
		// DoubleKeyFrameCollection *double_key_frame_collection_new ();
		public extern static IntPtr double_key_frame_collection_new ();

		[DllImport ("moon")]
		// DrawingAttributes *drawing_attributes_new ();
		public extern static IntPtr drawing_attributes_new ();

		[DllImport ("moon")]
		// Ellipse *ellipse_new ();
		public extern static IntPtr ellipse_new ();

		[DllImport ("moon")]
		// EllipseGeometry *ellipse_geometry_new ();
		public extern static IntPtr ellipse_geometry_new ();

		[DllImport ("moon")]
		// int event_object_add_handler (EventObject *instance, const char *event_name, EventHandler handler, gpointer data, GDestroyNotify data_dtor);
		public extern static int event_object_add_handler (IntPtr instance, string event_name, UnmanagedEventHandler handler, IntPtr data, IntPtr data_dtor);

		[DllImport ("moon")]
		// int event_object_add_xaml_handler (EventObject *instance, const char *event_name, EventHandler handler, gpointer data, GDestroyNotify data_dtor);
		public extern static int event_object_add_xaml_handler (IntPtr instance, string event_name, UnmanagedEventHandler handler, IntPtr data, IntPtr data_dtor);

		[DllImport ("moon", EntryPoint="event_object_get_type_name")]
		// const char *event_object_get_type_name (EventObject *instance);
		private extern static IntPtr event_object_get_type_name_ (IntPtr instance);
		public static string event_object_get_type_name (IntPtr instance)
		{
			IntPtr result;
			result = event_object_get_type_name_ (instance);
			return (result == IntPtr.Zero) ? null : Marshal.PtrToStringAnsi (result);
		}

		[DllImport ("moon")]
		// void event_object_ref (EventObject *instance);
		public extern static void event_object_ref (IntPtr instance);

		[DllImport ("moon")]
		// void event_object_remove_handler (EventObject *instance, const char *event_name, EventHandler handler, gpointer data);
		public extern static void event_object_remove_handler (IntPtr instance, string event_name, UnmanagedEventHandler handler, IntPtr data);

		[DllImport ("moon")]
		// void event_object_unref (EventObject *instance);
		public extern static void event_object_unref (IntPtr instance);

		[DllImport ("moon")]
		// EventTrigger *event_trigger_new ();
		public extern static IntPtr event_trigger_new ();

		[DllImport ("moon")]
		// Size framework_element_arrange_override (FrameworkElement *instance, Size finalSize);
		public extern static UnmanagedSize framework_element_arrange_override (IntPtr instance, UnmanagedSize finalSize);

		[DllImport ("moon")]
		// FrameworkElement *framework_element_new ();
		public extern static IntPtr framework_element_new ();

		[DllImport ("moon")]
		// Size framework_element_measure_override (FrameworkElement *instance, Size availableSize);
		public extern static UnmanagedSize framework_element_measure_override (IntPtr instance, UnmanagedSize availableSize);

		[DllImport ("moon")]
		// void framework_element_register_managed_overrides (FrameworkElement *instance, MeasureOverrideCallback measure_cb, ArrangeOverrideCallback arrange_cb);
		public extern static void framework_element_register_managed_overrides (IntPtr instance, Mono.MeasureOverrideCallback measure_cb, Mono.ArrangeOverrideCallback arrange_cb);

		[DllImport ("moon")]
		// FrameworkTemplate *framework_template_new ();
		public extern static IntPtr framework_template_new ();

		[DllImport ("moon")]
		// GeneralTransform *general_transform_new ();
		public extern static IntPtr general_transform_new ();

		[DllImport ("moon")]
		// Geometry *geometry_new ();
		public extern static IntPtr geometry_new ();

		[DllImport ("moon")]
		// GeometryCollection *geometry_collection_new ();
		public extern static IntPtr geometry_collection_new ();

		[DllImport ("moon")]
		// GeometryGroup *geometry_group_new ();
		public extern static IntPtr geometry_group_new ();

		[DllImport ("moon")]
		// Glyphs *glyphs_new ();
		public extern static IntPtr glyphs_new ();

		[DllImport ("moon")]
		// GradientBrush *gradient_brush_new ();
		public extern static IntPtr gradient_brush_new ();

		[DllImport ("moon")]
		// GradientStop *gradient_stop_new ();
		public extern static IntPtr gradient_stop_new ();

		[DllImport ("moon")]
		// GradientStopCollection *gradient_stop_collection_new ();
		public extern static IntPtr gradient_stop_collection_new ();

		[DllImport ("moon")]
		// Grid *grid_new ();
		public extern static IntPtr grid_new ();

		[DllImport ("moon")]
		// Image *image_new ();
		public extern static IntPtr image_new ();

		[DllImport ("moon")]
		// void image_set_stream_source (Image *instance, ManagedStreamCallbacks *stream);
		public extern static void image_set_stream_source (IntPtr instance, ref ManagedStreamCallbacks stream);

		[DllImport ("moon")]
		// ImageBrush *image_brush_new ();
		public extern static IntPtr image_brush_new ();

		[DllImport ("moon")]
		// InkPresenter *ink_presenter_new ();
		public extern static IntPtr ink_presenter_new ();

		[DllImport ("moon")]
		// Inline *inline_new ();
		public extern static IntPtr inline_new ();

		[DllImport ("moon")]
		// InlineCollection *inline_collection_new ();
		public extern static IntPtr inline_collection_new ();

		[DllImport ("moon")]
		// ModifierKeys keyboard_get_modifiers ();
		public extern static int keyboard_get_modifiers ();

		[DllImport ("moon")]
		// int key_event_args_get_key (KeyEventArgs *instance);
		public extern static int key_event_args_get_key (IntPtr instance);

		[DllImport ("moon")]
		// int key_event_args_get_platform_key_code (KeyEventArgs *instance);
		public extern static int key_event_args_get_platform_key_code (IntPtr instance);

		[DllImport ("moon")]
		// KeyEventArgs *key_event_args_new ();
		public extern static IntPtr key_event_args_new ();

		[DllImport ("moon")]
		// KeyFrameCollection *key_frame_collection_new ();
		public extern static IntPtr key_frame_collection_new ();

		[DllImport ("moon")]
		// KeySpline *key_spline_new ();
		public extern static IntPtr key_spline_new ();

		[DllImport ("moon")]
		// Line *line_new ();
		public extern static IntPtr line_new ();

		[DllImport ("moon")]
		// LinearColorKeyFrame *linear_color_key_frame_new ();
		public extern static IntPtr linear_color_key_frame_new ();

		[DllImport ("moon")]
		// LinearDoubleKeyFrame *linear_double_key_frame_new ();
		public extern static IntPtr linear_double_key_frame_new ();

		[DllImport ("moon")]
		// LinearGradientBrush *linear_gradient_brush_new ();
		public extern static IntPtr linear_gradient_brush_new ();

		[DllImport ("moon")]
		// LinearPointKeyFrame *linear_point_key_frame_new ();
		public extern static IntPtr linear_point_key_frame_new ();

		[DllImport ("moon")]
		// LineBreak *line_break_new ();
		public extern static IntPtr line_break_new ();

		[DllImport ("moon")]
		// LineGeometry *line_geometry_new ();
		public extern static IntPtr line_geometry_new ();

		[DllImport ("moon")]
		// LineSegment *line_segment_new ();
		public extern static IntPtr line_segment_new ();

		[DllImport ("moon")]
		// Matrix *matrix_new ();
		public extern static IntPtr matrix_new ();

		[DllImport ("moon")]
		// MatrixTransform *matrix_transform_new ();
		public extern static IntPtr matrix_transform_new ();

		[DllImport ("moon")]
		// MediaAttribute *media_attribute_new ();
		public extern static IntPtr media_attribute_new ();

		[DllImport ("moon")]
		// MediaAttribute *media_attribute_collection_get_item_by_name (MediaAttributeCollection *instance, const char *name);
		public extern static IntPtr media_attribute_collection_get_item_by_name (IntPtr instance, string name);

		[DllImport ("moon")]
		// MediaAttributeCollection *media_attribute_collection_new ();
		public extern static IntPtr media_attribute_collection_new ();

		[DllImport ("moon")]
		// MediaBase *media_base_new ();
		public extern static IntPtr media_base_new ();

		[DllImport ("moon")]
		// void media_base_set_source (MediaBase *instance, const char *uri);
		public extern static void media_base_set_source (IntPtr instance, string uri);

		[DllImport ("moon")]
		// MediaElement *media_element_new ();
		public extern static IntPtr media_element_new ();

		[DllImport ("moon")]
		// void media_element_pause (MediaElement *instance);
		public extern static void media_element_pause (IntPtr instance);

		[DllImport ("moon")]
		// void media_element_play (MediaElement *instance);
		public extern static void media_element_play (IntPtr instance);

		[DllImport ("moon")]
		// void media_element_set_stream_source (MediaElement *instance, ManagedStreamCallbacks *stream);
		public extern static void media_element_set_stream_source (IntPtr instance, ref ManagedStreamCallbacks stream);

		[DllImport ("moon")]
		// void media_element_stop (MediaElement *instance);
		public extern static void media_element_stop (IntPtr instance);

		[DllImport ("moon")]
		// bool moon_window_get_transparent (MoonWindow *instance);
		public extern static bool moon_window_get_transparent (IntPtr instance);

		[DllImport ("moon")]
		// void moon_window_set_transparent (MoonWindow *instance, bool flag);
		public extern static void moon_window_set_transparent (IntPtr instance, bool flag);

		[DllImport ("moon")]
		// GtkWidget *moon_window_gtk_get_widget (MoonWindowGtk *instance);
		public extern static IntPtr moon_window_gtk_get_widget (IntPtr instance);

		[DllImport ("moon")]
		// MoonWindowGtk *moon_window_gtk_new (bool fullscreen, int w, int h, MoonWindow *parent);
		public extern static IntPtr moon_window_gtk_new (bool fullscreen, int w, int h, IntPtr parent);

		[DllImport ("moon")]
		// void mouse_event_args_get_position (MouseEventArgs *instance, UIElement *relative_to, double *x, double *y);
		public extern static void mouse_event_args_get_position (IntPtr instance, IntPtr relative_to, out double x, out double y);

		[DllImport ("moon")]
		// StylusPointCollection *mouse_event_args_get_stylus_points (MouseEventArgs *instance, UIElement *ink_presenter);
		public extern static IntPtr mouse_event_args_get_stylus_points (IntPtr instance, IntPtr ink_presenter);

		[DllImport ("moon")]
		// MouseEventArgs *mouse_event_args_new ();
		public extern static IntPtr mouse_event_args_new ();

		[DllImport ("moon")]
		// MultiScaleImage *multi_scale_image_new ();
		public extern static IntPtr multi_scale_image_new ();

		[DllImport ("moon")]
		// void multi_scale_image_zoom_about_logical_point (MultiScaleImage *instance, double zoomIncrementFactor, double zoomCenterLogicalX, double zoomCenterLogicalY);
		public extern static void multi_scale_image_zoom_about_logical_point (IntPtr instance, double zoomIncrementFactor, double zoomCenterLogicalX, double zoomCenterLogicalY);

		[DllImport ("moon")]
		// MultiScaleSubImage *multi_scale_sub_image_new ();
		public extern static IntPtr multi_scale_sub_image_new ();

		[DllImport ("moon")]
		// int multi_scale_tile_source_get_image_height (MultiScaleTileSource *instance);
		public extern static int multi_scale_tile_source_get_image_height (IntPtr instance);

		[DllImport ("moon")]
		// int multi_scale_tile_source_get_image_width (MultiScaleTileSource *instance);
		public extern static int multi_scale_tile_source_get_image_width (IntPtr instance);

		[DllImport ("moon")]
		// int multi_scale_tile_source_get_tile_height (MultiScaleTileSource *instance);
		public extern static int multi_scale_tile_source_get_tile_height (IntPtr instance);

		[DllImport ("moon")]
		// int multi_scale_tile_source_get_tile_overlap (MultiScaleTileSource *instance);
		public extern static int multi_scale_tile_source_get_tile_overlap (IntPtr instance);

		[DllImport ("moon")]
		// int multi_scale_tile_source_get_tile_width (MultiScaleTileSource *instance);
		public extern static int multi_scale_tile_source_get_tile_width (IntPtr instance);

		[DllImport ("moon")]
		// MultiScaleTileSource *multi_scale_tile_source_new ();
		public extern static IntPtr multi_scale_tile_source_new ();

		[DllImport ("moon")]
		// void multi_scale_tile_source_set_image_height (MultiScaleTileSource *instance, int height);
		public extern static void multi_scale_tile_source_set_image_height (IntPtr instance, int height);

		[DllImport ("moon")]
		// void multi_scale_tile_source_set_image_width (MultiScaleTileSource *instance, int width);
		public extern static void multi_scale_tile_source_set_image_width (IntPtr instance, int width);

		[DllImport ("moon")]
		// void multi_scale_tile_source_set_tile_height (MultiScaleTileSource *instance, int height);
		public extern static void multi_scale_tile_source_set_tile_height (IntPtr instance, int height);

		[DllImport ("moon")]
		// void multi_scale_tile_source_set_tile_overlap (MultiScaleTileSource *instance, int overlap);
		public extern static void multi_scale_tile_source_set_tile_overlap (IntPtr instance, int overlap);

		[DllImport ("moon")]
		// void multi_scale_tile_source_set_tile_width (MultiScaleTileSource *instance, int width);
		public extern static void multi_scale_tile_source_set_tile_width (IntPtr instance, int width);

		[DllImport ("moon")]
		// ObjectAnimationUsingKeyFrames *object_animation_using_key_frames_new ();
		public extern static IntPtr object_animation_using_key_frames_new ();

		[DllImport ("moon")]
		// ObjectKeyFrame *object_key_frame_new ();
		public extern static IntPtr object_key_frame_new ();

		[DllImport ("moon")]
		// ObjectKeyFrameCollection *object_key_frame_collection_new ();
		public extern static IntPtr object_key_frame_collection_new ();

		[DllImport ("moon")]
		// Panel *panel_new ();
		public extern static IntPtr panel_new ();

		[DllImport ("moon")]
		// ParallelTimeline *parallel_timeline_new ();
		public extern static IntPtr parallel_timeline_new ();

		[DllImport ("moon")]
		// Path *path_new ();
		public extern static IntPtr path_new ();

		[DllImport ("moon")]
		// PathFigure *path_figure_new ();
		public extern static IntPtr path_figure_new ();

		[DllImport ("moon")]
		// PathFigureCollection *path_figure_collection_new ();
		public extern static IntPtr path_figure_collection_new ();

		[DllImport ("moon")]
		// PathGeometry *path_geometry_new ();
		public extern static IntPtr path_geometry_new ();

		[DllImport ("moon")]
		// PathSegment *path_segment_new ();
		public extern static IntPtr path_segment_new ();

		[DllImport ("moon")]
		// PathSegmentCollection *path_segment_collection_new ();
		public extern static IntPtr path_segment_collection_new ();

		[DllImport ("moon")]
		// PointAnimation *point_animation_new ();
		public extern static IntPtr point_animation_new ();

		[DllImport ("moon")]
		// PointAnimationUsingKeyFrames *point_animation_using_key_frames_new ();
		public extern static IntPtr point_animation_using_key_frames_new ();

		[DllImport ("moon")]
		// PointCollection *point_collection_new ();
		public extern static IntPtr point_collection_new ();

		[DllImport ("moon")]
		// PointKeyFrame *point_key_frame_new ();
		public extern static IntPtr point_key_frame_new ();

		[DllImport ("moon")]
		// PointKeyFrameCollection *point_key_frame_collection_new ();
		public extern static IntPtr point_key_frame_collection_new ();

		[DllImport ("moon")]
		// PolyBezierSegment *poly_bezier_segment_new ();
		public extern static IntPtr poly_bezier_segment_new ();

		[DllImport ("moon")]
		// Polygon *polygon_new ();
		public extern static IntPtr polygon_new ();

		[DllImport ("moon")]
		// Polyline *polyline_new ();
		public extern static IntPtr polyline_new ();

		[DllImport ("moon")]
		// PolyLineSegment *poly_line_segment_new ();
		public extern static IntPtr poly_line_segment_new ();

		[DllImport ("moon")]
		// PolyQuadraticBezierSegment *poly_quadratic_bezier_segment_new ();
		public extern static IntPtr poly_quadratic_bezier_segment_new ();

		[DllImport ("moon")]
		// QuadraticBezierSegment *quadratic_bezier_segment_new ();
		public extern static IntPtr quadratic_bezier_segment_new ();

		[DllImport ("moon")]
		// RadialGradientBrush *radial_gradient_brush_new ();
		public extern static IntPtr radial_gradient_brush_new ();

		[DllImport ("moon")]
		// Rectangle *rectangle_new ();
		public extern static IntPtr rectangle_new ();

		[DllImport ("moon")]
		// RectangleGeometry *rectangle_geometry_new ();
		public extern static IntPtr rectangle_geometry_new ();

		[DllImport ("moon", EntryPoint="resource_dictionary_add_with_error")]
		// bool resource_dictionary_add_with_error (ResourceDictionary *instance, const char *key, Value *value, MoonError *error);
		private extern static bool resource_dictionary_add_with_error_ (IntPtr instance, string key, ref Value value, out MoonError error);
		public static bool resource_dictionary_add (IntPtr instance, string key, ref Value value)
		{
			bool result;
			MoonError error;
			result = resource_dictionary_add_with_error_ (instance, key, ref value, out error);
			if (error.Number != 0)
				throw CreateManagedException (error);
			return result;
		}

		[DllImport ("moon")]
		// bool resource_dictionary_clear (ResourceDictionary *instance);
		public extern static bool resource_dictionary_clear (IntPtr instance);

		[DllImport ("moon")]
		// bool resource_dictionary_contains_key (ResourceDictionary *instance, const char *key);
		public extern static bool resource_dictionary_contains_key (IntPtr instance, string key);

		[DllImport ("moon")]
		// Value *resource_dictionary_get (ResourceDictionary *instance, const char *key, bool *exists);
		public extern static IntPtr resource_dictionary_get (IntPtr instance, string key, out bool exists);

		[DllImport ("moon")]
		// bool resource_dictionary_remove (ResourceDictionary *instance, const char *key);
		public extern static bool resource_dictionary_remove (IntPtr instance, string key);

		[DllImport ("moon")]
		// ResourceDictionary *resource_dictionary_new ();
		public extern static IntPtr resource_dictionary_new ();

		[DllImport ("moon")]
		// bool resource_dictionary_set (ResourceDictionary *instance, const char *key, Value *value);
		public extern static bool resource_dictionary_set (IntPtr instance, string key, ref Value value);

		[DllImport ("moon")]
		// RotateTransform *rotate_transform_new ();
		public extern static IntPtr rotate_transform_new ();

		[DllImport ("moon")]
		// bool routed_event_args_get_handled (RoutedEventArgs *instance);
		public extern static bool routed_event_args_get_handled (IntPtr instance);

		[DllImport ("moon")]
		// DependencyObject *routed_event_args_get_source (RoutedEventArgs *instance);
		public extern static IntPtr routed_event_args_get_source (IntPtr instance);

		[DllImport ("moon")]
		// RoutedEventArgs *routed_event_args_new ();
		public extern static IntPtr routed_event_args_new ();

		[DllImport ("moon")]
		// void routed_event_args_set_handled (RoutedEventArgs *instance, bool handled);
		public extern static void routed_event_args_set_handled (IntPtr instance, bool handled);

		[DllImport ("moon")]
		// void routed_event_args_set_source (RoutedEventArgs *instance, DependencyObject *el);
		public extern static void routed_event_args_set_source (IntPtr instance, IntPtr el);

		[DllImport ("moon")]
		// double row_definition_get_actual_height (RowDefinition *instance);
		public extern static double row_definition_get_actual_height (IntPtr instance);

		[DllImport ("moon")]
		// RowDefinition *row_definition_new ();
		public extern static IntPtr row_definition_new ();

		[DllImport ("moon")]
		// RowDefinitionCollection *row_definition_collection_new ();
		public extern static IntPtr row_definition_collection_new ();

		[DllImport ("moon")]
		// Run *run_new ();
		public extern static IntPtr run_new ();

		[DllImport ("moon")]
		// ScaleTransform *scale_transform_new ();
		public extern static IntPtr scale_transform_new ();

		[DllImport ("moon")]
		// GPtrArray *selection_changed_event_args_get_added_items (SelectionChangedEventArgs *instance);
		public extern static IntPtr selection_changed_event_args_get_added_items (IntPtr instance);

		[DllImport ("moon")]
		// GPtrArray *selection_changed_event_args_get_removed_items (SelectionChangedEventArgs *instance);
		public extern static IntPtr selection_changed_event_args_get_removed_items (IntPtr instance);

		[DllImport ("moon")]
		// SelectionChangedEventArgs *selection_changed_event_args_new ();
		public extern static IntPtr selection_changed_event_args_new ();

		[DllImport ("moon")]
		// void selection_changed_event_args_set_added_items (SelectionChangedEventArgs *instance, GPtrArray *addedItems);
		public extern static void selection_changed_event_args_set_added_items (IntPtr instance, IntPtr addedItems);

		[DllImport ("moon")]
		// void selection_changed_event_args_set_removed_items (SelectionChangedEventArgs *instance, GPtrArray *removedItems);
		public extern static void selection_changed_event_args_set_removed_items (IntPtr instance, IntPtr removedItems);

		[DllImport ("moon")]
		// Setter *setter_new ();
		public extern static IntPtr setter_new ();

		[DllImport ("moon")]
		// SetterBase *setter_base_new ();
		public extern static IntPtr setter_base_new ();

		[DllImport ("moon")]
		// SetterBaseCollection *setter_base_collection_new ();
		public extern static IntPtr setter_base_collection_new ();

		[DllImport ("moon")]
		// Shape *shape_new ();
		public extern static IntPtr shape_new ();

		[DllImport ("moon")]
		// SizeChangedEventArgs *size_changed_event_args_new ();
		public extern static IntPtr size_changed_event_args_new ();

		[DllImport ("moon")]
		// SkewTransform *skew_transform_new ();
		public extern static IntPtr skew_transform_new ();

		[DllImport ("moon")]
		// SolidColorBrush *solid_color_brush_new ();
		public extern static IntPtr solid_color_brush_new ();

		[DllImport ("moon")]
		// SplineColorKeyFrame *spline_color_key_frame_new ();
		public extern static IntPtr spline_color_key_frame_new ();

		[DllImport ("moon")]
		// SplineDoubleKeyFrame *spline_double_key_frame_new ();
		public extern static IntPtr spline_double_key_frame_new ();

		[DllImport ("moon")]
		// SplinePointKeyFrame *spline_point_key_frame_new ();
		public extern static IntPtr spline_point_key_frame_new ();

		[DllImport ("moon")]
		// StackPanel *stack_panel_new ();
		public extern static IntPtr stack_panel_new ();

		[DllImport ("moon")]
		// bool storyboard_begin (Storyboard *instance);
		public extern static bool storyboard_begin (IntPtr instance);

		[DllImport ("moon")]
		// void storyboard_pause (Storyboard *instance);
		public extern static void storyboard_pause (IntPtr instance);

		[DllImport ("moon")]
		// void storyboard_resume (Storyboard *instance);
		public extern static void storyboard_resume (IntPtr instance);

		[DllImport ("moon")]
		// void storyboard_seek (Storyboard *instance, TimeSpan timespan);
		public extern static void storyboard_seek (IntPtr instance, long timespan);

		[DllImport ("moon")]
		// void storyboard_stop (Storyboard *instance);
		public extern static void storyboard_stop (IntPtr instance);

		[DllImport ("moon")]
		// Storyboard *storyboard_new ();
		public extern static IntPtr storyboard_new ();

		[DllImport ("moon")]
		// bool stroke_hit_test (Stroke *instance, StylusPointCollection *stylusPoints);
		public extern static bool stroke_hit_test (IntPtr instance, IntPtr stylusPoints);

		[DllImport ("moon")]
		// Stroke *stroke_new ();
		public extern static IntPtr stroke_new ();

		[DllImport ("moon")]
		// StrokeCollection *stroke_collection_hit_test (StrokeCollection *instance, StylusPointCollection *stylusPoints);
		public extern static IntPtr stroke_collection_hit_test (IntPtr instance, IntPtr stylusPoints);

		[DllImport ("moon")]
		// StrokeCollection *stroke_collection_new ();
		public extern static IntPtr stroke_collection_new ();

		[DllImport ("moon")]
		// Style *style_new ();
		public extern static IntPtr style_new ();

		[DllImport ("moon")]
		// StylusInfo *stylus_info_new ();
		public extern static IntPtr stylus_info_new ();

		[DllImport ("moon")]
		// StylusPoint *stylus_point_new ();
		public extern static IntPtr stylus_point_new ();

		[DllImport ("moon")]
		// StylusPointCollection *stylus_point_collection_new ();
		public extern static IntPtr stylus_point_collection_new ();

		[DllImport ("moon")]
		// void surface_attach (Surface *instance, UIElement *toplevel);
		public extern static void surface_attach (IntPtr instance, IntPtr toplevel);

		[DllImport ("moon")]
		// Downloader *surface_create_downloader (Surface *instance);
		public extern static IntPtr surface_create_downloader (IntPtr instance);

		[DllImport ("moon")]
		// bool surface_focus_element (Surface *instance, UIElement *element);
		public extern static bool surface_focus_element (IntPtr instance, IntPtr element);

		[DllImport ("moon")]
		// UIElement *surface_get_focused_element (Surface *instance);
		public extern static IntPtr surface_get_focused_element (IntPtr instance);

		[DllImport ("moon")]
		// TimeManager *surface_get_time_manager (Surface *instance);
		public extern static IntPtr surface_get_time_manager (IntPtr instance);

		[DllImport ("moon")]
		// bool surface_in_main_thread ();
		public extern static bool surface_in_main_thread ();

		[DllImport ("moon")]
		// void surface_paint (Surface *instance, cairo_t *ctx, int x, int y, int width, int height);
		public extern static void surface_paint (IntPtr instance, IntPtr ctx, int x, int y, int width, int height);

		[DllImport ("moon")]
		// void surface_resize (Surface *instance, int width, int height);
		public extern static void surface_resize (IntPtr instance, int width, int height);

		[DllImport ("moon")]
		// Surface *surface_new (MoonWindow *window, bool silverlight2);
		public extern static IntPtr surface_new (IntPtr window, bool silverlight2);

		[DllImport ("moon")]
		// TextBlock *text_block_new ();
		public extern static IntPtr text_block_new ();

		[DllImport ("moon")]
		// void text_box_select (TextBox *instance, int start, int length);
		public extern static void text_box_select (IntPtr instance, int start, int length);

		[DllImport ("moon")]
		// TextBox *text_box_new ();
		public extern static IntPtr text_box_new ();

		[DllImport ("moon")]
		// TextChangedEventArgs *text_changed_event_args_new ();
		public extern static IntPtr text_changed_event_args_new ();

		[DllImport ("moon")]
		// TileBrush *tile_brush_new ();
		public extern static IntPtr tile_brush_new ();

		[DllImport ("moon")]
		// void timeline_set_manual_target (Timeline *instance, DependencyObject *o);
		public extern static void timeline_set_manual_target (IntPtr instance, IntPtr o);

		[DllImport ("moon")]
		// Timeline *timeline_new ();
		public extern static IntPtr timeline_new ();

		[DllImport ("moon")]
		// TimelineCollection *timeline_collection_new ();
		public extern static IntPtr timeline_collection_new ();

		[DllImport ("moon")]
		// TimelineGroup *timeline_group_new ();
		public extern static IntPtr timeline_group_new ();

		[DllImport ("moon")]
		// TimelineMarker *timeline_marker_new ();
		public extern static IntPtr timeline_marker_new ();

		[DllImport ("moon")]
		// TimelineMarkerCollection *timeline_marker_collection_new ();
		public extern static IntPtr timeline_marker_collection_new ();

		[DllImport ("moon")]
		// Transform *transform_new ();
		public extern static IntPtr transform_new ();

		[DllImport ("moon")]
		// TransformCollection *transform_collection_new ();
		public extern static IntPtr transform_collection_new ();

		[DllImport ("moon")]
		// TransformGroup *transform_group_new ();
		public extern static IntPtr transform_group_new ();

		[DllImport ("moon")]
		// TranslateTransform *translate_transform_new ();
		public extern static IntPtr translate_transform_new ();

		[DllImport ("moon")]
		// TriggerAction *trigger_action_new ();
		public extern static IntPtr trigger_action_new ();

		[DllImport ("moon")]
		// TriggerActionCollection *trigger_action_collection_new ();
		public extern static IntPtr trigger_action_collection_new ();

		[DllImport ("moon")]
		// TriggerCollection *trigger_collection_new ();
		public extern static IntPtr trigger_collection_new ();

		[DllImport ("moon")]
		// void types_free (Types *instance);
		public extern static void types_free (IntPtr instance);

		[DllImport ("moon")]
		// Type *types_find (Types *instance, Type::Kind type);
		public extern static IntPtr types_find (IntPtr instance, Kind type);

		[DllImport ("moon")]
		// Type::Kind types_register_type (Types *instance, const char *name, void *gc_handle, Type::Kind parent);
		public extern static Kind types_register_type (IntPtr instance, string name, IntPtr gc_handle, Kind parent);

		[DllImport ("moon")]
		// Types *types_new ();
		public extern static IntPtr types_new ();

		[DllImport ("moon")]
		// void uielement_arrange (UIElement *instance, Rect finalRect);
		public extern static void uielement_arrange (IntPtr instance, UnmanagedRect finalRect);

		[DllImport ("moon")]
		// bool uielement_capture_mouse (UIElement *instance);
		public extern static bool uielement_capture_mouse (IntPtr instance);

		[DllImport ("moon")]
		// Size uielement_get_desired_size (UIElement *instance);
		public extern static UnmanagedSize uielement_get_desired_size (IntPtr instance);

		[DllImport ("moon")]
		// Size uielement_get_render_size (UIElement *instance);
		public extern static UnmanagedSize uielement_get_render_size (IntPtr instance);

		[DllImport ("moon")]
		// DependencyObject *uielement_get_subtree_object (UIElement *instance);
		public extern static IntPtr uielement_get_subtree_object (IntPtr instance);

		[DllImport ("moon")]
		// GeneralTransform *uielement_get_transform_to_uielement (UIElement *instance, UIElement *to_element);
		public extern static IntPtr uielement_get_transform_to_uielement (IntPtr instance, IntPtr to_element);

		[DllImport ("moon")]
		// UIElement *uielement_get_visual_parent (UIElement *instance);
		public extern static IntPtr uielement_get_visual_parent (IntPtr instance);

		[DllImport ("moon")]
		// void uielement_invalidate_arrange (UIElement *instance);
		public extern static void uielement_invalidate_arrange (IntPtr instance);

		[DllImport ("moon")]
		// void uielement_invalidate_measure (UIElement *instance);
		public extern static void uielement_invalidate_measure (IntPtr instance);

		[DllImport ("moon")]
		// void uielement_measure (UIElement *instance, Size availableSize);
		public extern static void uielement_measure (IntPtr instance, UnmanagedSize availableSize);

		[DllImport ("moon")]
		// void uielement_release_mouse_capture (UIElement *instance);
		public extern static void uielement_release_mouse_capture (IntPtr instance);

		[DllImport ("moon")]
		// bool uielement_update_layout (UIElement *instance);
		public extern static bool uielement_update_layout (IntPtr instance);

		[DllImport ("moon")]
		// UIElementCollection *uielement_collection_new ();
		public extern static IntPtr uielement_collection_new ();

		[DllImport ("moon")]
		// UserControl *user_control_new ();
		public extern static IntPtr user_control_new ();

		[DllImport ("moon")]
		// VideoBrush *video_brush_new ();
		public extern static IntPtr video_brush_new ();

		[DllImport ("moon")]
		// VisualBrush *visual_brush_new ();
		public extern static IntPtr visual_brush_new ();

		[DllImport ("moon", EntryPoint="xaml_loader_create_from_file_with_error")]
		// DependencyObject *xaml_loader_create_from_file_with_error (XamlLoader *instance, const char *xaml, bool create_namescope, Type::Kind *element_type, MoonError *error);
		private extern static IntPtr xaml_loader_create_from_file_with_error_ (IntPtr instance, string xaml, bool create_namescope, out Kind element_type, out MoonError error);
		public static IntPtr xaml_loader_create_from_file (IntPtr instance, string xaml, bool create_namescope, out Kind element_type)
		{
			IntPtr result;
			MoonError error;
			result = xaml_loader_create_from_file_with_error_ (instance, xaml, create_namescope, out element_type, out error);
			if (error.Number != 0)
				throw CreateManagedException (error);
			return result;
		}

		[DllImport ("moon", EntryPoint="xaml_loader_create_from_string_with_error")]
		// DependencyObject *xaml_loader_create_from_string_with_error (XamlLoader *instance, const char *xaml, bool create_namescope, Type::Kind *element_type, MoonError *error);
		private extern static IntPtr xaml_loader_create_from_string_with_error_ (IntPtr instance, string xaml, bool create_namescope, out Kind element_type, out MoonError error);
		public static IntPtr xaml_loader_create_from_string (IntPtr instance, string xaml, bool create_namescope, out Kind element_type)
		{
			IntPtr result;
			MoonError error;
			result = xaml_loader_create_from_string_with_error_ (instance, xaml, create_namescope, out element_type, out error);
			if (error.Number != 0)
				throw CreateManagedException (error);
			return result;
		}

		[DllImport ("moon", EntryPoint="xaml_loader_hydrate_from_string_with_error")]
		// DependencyObject *xaml_loader_hydrate_from_string_with_error (XamlLoader *instance, const char *default_asm_name, const char *default_asm_path, const char *xaml, DependencyObject *obj, bool create_namescope, Type::Kind *element_type, MoonError *error);
		private extern static IntPtr xaml_loader_hydrate_from_string_with_error_ (IntPtr instance, string default_asm_name, string default_asm_path, string xaml, IntPtr obj, bool create_namescope, out Kind element_type, out MoonError error);
		public static IntPtr xaml_loader_hydrate_from_string (IntPtr instance, string default_asm_name, string default_asm_path, string xaml, IntPtr obj, bool create_namescope, out Kind element_type)
		{
			IntPtr result;
			MoonError error;
			result = xaml_loader_hydrate_from_string_with_error_ (instance, default_asm_name, default_asm_path, xaml, obj, create_namescope, out element_type, out error);
			if (error.Number != 0)
				throw CreateManagedException (error);
			return result;
		}

		[DllImport ("moon", EntryPoint="xap_unpack")]
		// char *xap_unpack (const char *fname);
		private extern static IntPtr xap_unpack_ (string fname);
		public static string xap_unpack (string fname)
		{
			IntPtr result;
			result = xap_unpack_ (fname);
			return (result == IntPtr.Zero) ? null : Marshal.PtrToStringAnsi (result);
		}

	}
}
