Mercurial > hg > vboxdotnet
annotate 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 |
rev | line source |
---|---|
6
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
1 ???using System; |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
2 using System.Collections.Generic; |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
3 using System.Runtime.InteropServices; |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
4 |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
5 namespace VBoxSDK { |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
6 public class LibraryInfo { |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
7 public Dictionary<String, EnumInfo> Enums { get; private set; } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
8 public Dictionary<String, InterfaceInfo> Interfaces { get; private set; } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
9 public LibraryInfo() { |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
10 Enums = new Dictionary<string, EnumInfo>(); |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
11 Interfaces = new Dictionary<string, InterfaceInfo>(); |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
12 } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
13 } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
14 public class EnumInfo { |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
15 public Dictionary<String, Int32> Values { get; private set; } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
16 public String Name { get; private set; } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
17 public EnumInfo(String name) { |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
18 Name = name; |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
19 Values = new Dictionary<string, int>(); |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
20 } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
21 } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
22 public class InterfaceInfo { |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
23 public InterfaceInfo Extends { get; private set; } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
24 public Guid IID { get; private set; } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
25 public String Name { get; private set; } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
26 public List<InterfaceMemberInfo> Members { get; private set; } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
27 public InterfaceInfo(String name, Guid iid) : this(name, iid, null) { } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
28 public InterfaceInfo(String name, Guid iid, InterfaceInfo extends) { |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
29 Name = name; |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
30 IID = iid; |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
31 Extends = extends; |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
32 Members = new List<InterfaceMemberInfo>(); |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
33 } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
34 } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
35 public class InterfaceMemberInfo { |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
36 } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
37 public class PropertyInfo : InterfaceMemberInfo { |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
38 public String Name { get; private set; } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
39 public TypeInfo Type { get; private set; } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
40 public Boolean Gettable { get; private set; } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
41 public Boolean Settable { get; private set; } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
42 public PropertyInfo(String name, TypeInfo type, Boolean gettable, Boolean settable) { |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
43 Name = name; |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
44 Type = type; |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
45 Gettable = gettable; |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
46 Settable = settable; |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
47 } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
48 } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
49 public class MethodInfo : InterfaceMemberInfo { |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
50 public String Name { get; private set; } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
51 public TypeInfo ReturnType { get; private set; } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
52 public List<MethodParameterInfo> Parameters { get; private set; } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
53 public MethodInfo(String name, TypeInfo returnType) { |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
54 Name = name; |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
55 ReturnType = returnType; |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
56 Parameters = new List<MethodParameterInfo>(); |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
57 } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
58 } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
59 public class MethodParameterInfo { |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
60 public String Name { get; private set; } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
61 public TypeInfo Type { get; private set; } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
62 public Boolean Input { get; private set; } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
63 public Boolean Reference { get; private set; } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
64 public Boolean Output { get; private set; } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
65 public MethodParameterInfo(String name, TypeInfo type, Boolean input, Boolean reference, Boolean output) { |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
66 Name = name; |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
67 Type = type; |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
68 Input = input; |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
69 Reference = reference | output; |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
70 Output = output; |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
71 } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
72 } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
73 public class TypeInfo { |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
74 public String Name { get; private set; } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
75 public TypeInfo(String name) { |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
76 Name = name; |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
77 } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
78 } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
79 public class ValueTypeInfo : TypeInfo { |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
80 public ValueTypeInfo(String name) |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
81 : base(name) { |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
82 } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
83 public ValueTypeInfo(Type type) |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
84 : base(type.Name) { |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
85 } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
86 } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
87 public class StringTypeInfo : TypeInfo { |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
88 public UnmanagedType UnmanagedType { get; set; } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
89 public StringTypeInfo(UnmanagedType unmanagedType) : base("String") { |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
90 UnmanagedType = unmanagedType; |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
91 } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
92 public StringTypeInfo() |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
93 : this(UnmanagedType.BStr) { |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
94 } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
95 } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
96 public class InterfaceTypeInfo : TypeInfo { |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
97 public InterfaceTypeInfo(String name) : base(name) { |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
98 } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
99 } |
e640ca67b819
Added extended COM interop code generator for interfaces and proxies
Ivo Smits
parents:
diff
changeset
|
100 } |