public string GetManagedType ()
{
if (managed_type == null) {
switch (Value) {
case "int":
case "bool":
case "void":
case "long":
case "double":
managed_type = Value;
break;
case "guint32":
case "uint32_t":
managed_type = "uint";
break;
case "gint32":
case "int32_t":
managed_type = "int";
break;
case "int64_t":
case "gint64":
managed_type = "long";
break;
case "uint64_t":
case "guint64":
managed_type = "ulong";
break;
case "ManagedStreamCallbacks*":
IsRef = true;
managed_type = "ManagedStreamCallbacks";
break;
case "MoonError*":
IsOut = true;
managed_type = "MoonError";
break;
case "gboolean":
managed_type = "bool";
break;
case "Value*":
if (IsReturnType) {
managed_type = "IntPtr";
} else {
IsRef = true;
managed_type = "Value";
}
break;
case "MoonMessageBoxResult":
managed_type = "MessageBoxResult";
break;
case "MoonMessageBoxButton":
managed_type = "MessageBoxButton";
break;
case "MoonMessageBoxType":
managed_type = "int";
break;
case "GetDefaultStyleCallback":
managed_type = "Mono.GetDefaultStyleCallback";
break;
case "GetDefaultTemplateCallback":
managed_type = "Mono.GetDefaultTemplateCallback";
break;
case "ConvertSetterValuesCallback":
managed_type = "Mono.ConvertSetterValuesCallback";
break;
case "ConvertKeyframeValueCallback":
managed_type = "Mono.ConvertKeyframeValueCallback";
break;
case "GetDefaultTemplateRootCallback":
managed_type = "Mono.GetDefaultTemplateRootCallback";
break;
case "PropertyChangeHandler":
managed_type = "Mono.UnmanagedPropertyChangeHandler";
break;
case "EasingFunction":
managed_type = "Mono.EasingFunctionCallback";
break;
case "LoadedCallback":
managed_type = "Mono.LoadedCallback";
break;
case "MeasureOverrideCallback":
managed_type = "Mono.MeasureOverrideCallback";
break;
case "ArrangeOverrideCallback":
managed_type = "Mono.ArrangeOverrideCallback";
break;
case "GetResourceCallback":
managed_type = "Mono.GetResourceCallback";
break;
case "GetValueCallback":
managed_type = "Mono.GetValueCallback";
break;
case "SetValueCallback":
managed_type = "Mono.SetValueCallback";
break;
case "parse_template_func":
managed_type = "Mono.Xaml.ParseTemplateFunc";
break;
case "CloseDemuxerCallback":
case "GetDiagnosticAsyncCallback":
case "GetFrameAsyncCallback":
case "OpenDemuxerAsyncCallback":
case "SeekAsyncCallback":
case "SwitchMediaStreamAsyncCallback":
managed_type = "System.Windows.Media.MediaStreamSource." + Value.Replace ("Callback", "Delegate");
break;
case "GDestroyNotify":
managed_type = "IntPtr"; // hack, because we never pass this from managed code
// (it's used for EventObject::AddHandler).
break;
case "char*":
managed_type = "string";
break;
case "char**":
managed_type = "string[]";
break;
case "double*":
managed_type = "double";
IsOut = true;
break;
case "EventHandler":
managed_type = "UnmanagedEventHandler";
break;
case "Size":
managed_type = "Size";
break;
case "Rect":
managed_type = "Rect";
break;
case "Point":
managed_type = "Point";
break;
case "Thickness":
managed_type = "Thickness";
break;
case "CornerRadius":
managed_type = "CornerRadius";
break;
case "TimeSpan":
managed_type = "long";
break;
case "bool*":
if (IsReturnType) {
managed_type = "IntPtr";
} else {
IsOut = true;
managed_type = "bool";
}
break;
case "int*":
if (IsReturnType) {
managed_type = "IntPtr";
} else {
IsOut = true;
managed_type = "int";
}
break;
case "Type::Kind*":
if (IsReturnType) {
managed_type = "IntPtr";
} else {
IsOut = true;
managed_type = "Kind";
}
break;
case "Type::Kind":
managed_type = "Kind";
break;
case "HttpRequest::Options":
managed_type = "HttpRequestOptions";
break;
case "gpointer":
managed_type = "IntPtr";
break;
case "MoonClipboardType":
managed_type = "int";
break;
case "ModifierKeys":
managed_type = "int";
break;
case "BindingMode":
managed_type = "int";
break;
case "InstallState":
managed_type = "InstallState";
break;
case "ReceiverNameScope":
managed_type = "int";
break;
case "SystemColor":
managed_type = "int";
break;
case "LogicalDirection":
managed_type = "System.Windows.Documents.LogicalDirection";
break;
case "ToggleNotifyHandler":
managed_type = "Mono.ToggleRef.ToggleNotifyHandler";
break;
case "DownloaderCreateStateFunc":
managed_type = "Mono.DownloaderCreateStateFunc";
break;
case "DownloaderDestroyStateFunc":
managed_type = "Mono.DownloaderDestroyStateFunc";
break;
case "DownloaderOpenFunc":
managed_type = "Mono.DownloaderOpenFunc";
break;
case "DownloaderSendFunc":
managed_type = "Mono.DownloaderSendFunc";
break;
case "DownloaderAbortFunc":
managed_type = "Mono.DownloaderAbortFunc";
break;
case "DownloaderHeaderFunc":
managed_type = "Mono.DownloaderHeaderFunc";
break;
case "DownloaderBodyFunc":
managed_type = "Mono.DownloaderBodyFunc";
break;
case "DownloaderCreateWebRequestFunc":
managed_type = "Mono.DownloaderCreateWebRequestFunc";
break;
case "DownloaderSetResponseHeaderCallbackFunc":
managed_type = "Mono.DownloaderSetResponseHeaderCallbackFunc";
break;
case "DownloaderGetResponseFunc":
managed_type = "Mono.DownloaderGetResponseFunc";
break;
case "XamlLoaderCallbacks":
managed_type = "Xaml.XamlLoaderCallbacks";
break;
case "get_image_uri_func":
managed_type = "Mono.ImageUriFunc";
break;
case "TickCallHandler":
managed_type = "TickCallHandler";
break;
case "DownloaderResponseStartedHandler":
managed_type = "DownloaderResponseStartedDelegate";
break;
case "DownloaderResponseDataAvailableHandler":
managed_type = "DownloaderResponseAvailableDelegate";
break;
case "DownloaderResponseFinishedHandler":
managed_type = "DownloaderResponseFinishedDelegate";
break;
case "callback_dom_event*":
managed_type = "DomEventCallback";
break;
case "HttpHeaderVisitor":
case "InvalidateHandleDelegate":
case "HasMemberDelegate":
case "InvokeDelegate":
case "SetPropertyDelegate":
case "GetPropertyDelegate":
case "DownloaderAccessPolicy":
managed_type = Value;
break;
default:
if (Value.Contains ("*"))
managed_type = "IntPtr";
else
managed_type = "/* Unknown: '" + Value + "' */";
break;
}
}
return managed_type;
}
}