1
1
using System ;
2
+ using System . Diagnostics ;
2
3
using System . Runtime . InteropServices . ComTypes ;
3
4
using Rubberduck . VBEditor . ComManagement . TypeLibs . Abstract ;
5
+ using Rubberduck . VBEditor . ComManagement . TypeLibs . DebugInternal ;
6
+ using Rubberduck . VBEditor . ComManagement . TypeLibs . Unmanaged ;
4
7
5
8
// TODO The tracers are broken - using them will cause a NRE inside the
6
9
// unmanaged boundary. If we need to enable them for diagnostics, this needs
7
10
// to be fixed first.
8
- #if DEBUG && TRACE_TYPEAPI
9
- using Rubberduck . VBEditor . ComManagement . TypeLibs . DebugInternal ;
10
- #endif
11
11
12
12
namespace Rubberduck . VBEditor . ComManagement . TypeLibs
13
13
{
@@ -21,32 +21,37 @@ internal static class TypeApiFactory
21
21
{
22
22
internal static ITypeLibWrapper GetTypeLibWrapper ( IntPtr rawObjectPtr , bool addRef )
23
23
{
24
- var wrapper = new TypeLibWrapper ( rawObjectPtr , addRef ) ;
25
- #if DEBUG && TRACE_TYPEAPI
26
- return new TypeLibWrapperTracer ( wrapper , wrapper ) ;
27
- #else
24
+ ITypeLibWrapper wrapper = new TypeLibWrapper ( rawObjectPtr , addRef ) ;
25
+ TraceWrapper ( ref wrapper ) ;
28
26
return wrapper ;
29
- #endif
27
+ }
28
+
29
+ [ Conditional ( "DEBUG" ) ]
30
+ [ Conditional ( "TRACE_TYPEAPI" ) ]
31
+ private static void TraceWrapper ( ref ITypeLibWrapper wrapper )
32
+ {
33
+ wrapper = new TypeLibWrapperTracer ( wrapper , ( ITypeLibInternal ) wrapper ) ;
30
34
}
31
35
32
36
internal static ITypeInfoWrapper GetTypeInfoWrapper ( IntPtr rawObjectPtr , int ? parentUserFormUniqueId = null )
33
37
{
34
- var wrapper = new TypeInfoWrapper ( rawObjectPtr , parentUserFormUniqueId ) ;
35
- #if DEBUG && TRACE_TYPEAPI
36
- return new TypeInfoWrapperTracer ( wrapper , wrapper ) ;
37
- #else
38
+ ITypeInfoWrapper wrapper = new TypeInfoWrapper ( rawObjectPtr , parentUserFormUniqueId ) ;
39
+ TraceWrapper ( ref wrapper ) ;
38
40
return wrapper ;
39
- #endif
40
41
}
41
42
42
43
internal static ITypeInfoWrapper GetTypeInfoWrapper ( ITypeInfo rawTypeInfo )
43
44
{
44
- var wrapper = new TypeInfoWrapper ( rawTypeInfo ) ;
45
- #if DEBUG && TRACE_TYPEAPI
46
- return new TypeInfoWrapperTracer ( wrapper , wrapper ) ;
47
- #else
45
+ ITypeInfoWrapper wrapper = new TypeInfoWrapper ( rawTypeInfo ) ;
46
+ TraceWrapper ( ref wrapper ) ;
48
47
return wrapper ;
49
- #endif
48
+ }
49
+
50
+ [ Conditional ( "DEBUG" ) ]
51
+ [ Conditional ( "TRACE_TYPEAPI" ) ]
52
+ private static void TraceWrapper ( ref ITypeInfoWrapper wrapper )
53
+ {
54
+ wrapper = new TypeInfoWrapperTracer ( wrapper , ( ITypeInfoInternal ) wrapper ) ;
50
55
}
51
56
}
52
57
}
0 commit comments