Mercurial > hg > vboxdotnet
diff InteropCodeGen/LibraryInformation.cs @ 6:e640ca67b819
Added extended COM interop code generator for interfaces and proxies
author | Ivo Smits |
---|---|
date | Fri, 06 May 2011 04:02:43 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/InteropCodeGen/LibraryInformation.cs Fri May 06 04:02:43 2011 +0200 @@ -0,0 +1,100 @@ +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; + +namespace VBoxSDK { + public class LibraryInfo { + public Dictionary<String, EnumInfo> Enums { get; private set; } + public Dictionary<String, InterfaceInfo> Interfaces { get; private set; } + public LibraryInfo() { + Enums = new Dictionary<string, EnumInfo>(); + Interfaces = new Dictionary<string, InterfaceInfo>(); + } + } + public class EnumInfo { + public Dictionary<String, Int32> Values { get; private set; } + public String Name { get; private set; } + public EnumInfo(String name) { + Name = name; + Values = new Dictionary<string, int>(); + } + } + public class InterfaceInfo { + public InterfaceInfo Extends { get; private set; } + public Guid IID { get; private set; } + public String Name { get; private set; } + public List<InterfaceMemberInfo> Members { get; private set; } + public InterfaceInfo(String name, Guid iid) : this(name, iid, null) { } + public InterfaceInfo(String name, Guid iid, InterfaceInfo extends) { + Name = name; + IID = iid; + Extends = extends; + Members = new List<InterfaceMemberInfo>(); + } + } + public class InterfaceMemberInfo { + } + public class PropertyInfo : InterfaceMemberInfo { + public String Name { get; private set; } + public TypeInfo Type { get; private set; } + public Boolean Gettable { get; private set; } + public Boolean Settable { get; private set; } + public PropertyInfo(String name, TypeInfo type, Boolean gettable, Boolean settable) { + Name = name; + Type = type; + Gettable = gettable; + Settable = settable; + } + } + public class MethodInfo : InterfaceMemberInfo { + public String Name { get; private set; } + public TypeInfo ReturnType { get; private set; } + public List<MethodParameterInfo> Parameters { get; private set; } + public MethodInfo(String name, TypeInfo returnType) { + Name = name; + ReturnType = returnType; + Parameters = new List<MethodParameterInfo>(); + } + } + public class MethodParameterInfo { + public String Name { get; private set; } + public TypeInfo Type { get; private set; } + public Boolean Input { get; private set; } + public Boolean Reference { get; private set; } + public Boolean Output { get; private set; } + public MethodParameterInfo(String name, TypeInfo type, Boolean input, Boolean reference, Boolean output) { + Name = name; + Type = type; + Input = input; + Reference = reference | output; + Output = output; + } + } + public class TypeInfo { + public String Name { get; private set; } + public TypeInfo(String name) { + Name = name; + } + } + public class ValueTypeInfo : TypeInfo { + public ValueTypeInfo(String name) + : base(name) { + } + public ValueTypeInfo(Type type) + : base(type.Name) { + } + } + public class StringTypeInfo : TypeInfo { + public UnmanagedType UnmanagedType { get; set; } + public StringTypeInfo(UnmanagedType unmanagedType) : base("String") { + UnmanagedType = unmanagedType; + } + public StringTypeInfo() + : this(UnmanagedType.BStr) { + } + } + public class InterfaceTypeInfo : TypeInfo { + public InterfaceTypeInfo(String name) : base(name) { + } + } +}