@@ -14,9 +14,15 @@ namespace <#= Namespace #>
1414 using global::ZeroFormatter.Internal;
1515 using global::ZeroFormatter.Segments;
1616
17+ <#
18+ var resolverName = (ForceDefaultResolver) ? "ZeroFormatter.Formatters.DefaultResolver" : "TTypeResolver";
19+ var resolverNameGenericArg = (ForceDefaultResolver) ? "" : "<TTypeResolver>";
20+ #>
1721<# foreach(var t in Types) { #>
18- public class <#= t.Name #>Formatter<TTypeResolver> : Formatter<TTypeResolver, <#= t.FullName #>>
22+ public class <#= t.Name #>Formatter<#= resolverNameGenericArg #> : Formatter<<#= resolverName #>, <#= t.FullName #>>
23+ <# if(!ForceDefaultResolver) { #>
1924 where TTypeResolver : ITypeResolver, new()
25+ <# } #>
2026 {
2127 public override int? GetLength()
2228 {
@@ -41,7 +47,7 @@ namespace <#= Namespace #>
4147
4248 offset += (8 + 4 * (<#= t.LastIndex #> + 1));
4349<# foreach(var p in t.Properties) { #>
44- offset += ObjectSegmentHelper.SerializeFromFormatter<TTypeResolver , <#= p.Type #>>(ref bytes, startOffset, offset, <#= p.Index #>, value.<#= p.Name #>);
50+ offset += ObjectSegmentHelper.SerializeFromFormatter<<#= resolverName #> , <#= p.Type #>>(ref bytes, startOffset, offset, <#= p.Index #>, value.<#= p.Name #>);
4551<# } #>
4652
4753 return ObjectSegmentHelper.WriteSize(ref bytes, startOffset, offset, <#= t.LastIndex #>);
@@ -56,13 +62,14 @@ namespace <#= Namespace #>
5662 byteSize = 4;
5763 return null;
5864 }
59- return new <#= t.Name #>ObjectSegment<TTypeResolver >(tracker, new ArraySegment<byte>(bytes, offset, byteSize));
65+ return new <#= t.Name #>ObjectSegment<#= resolverNameGenericArg # >(tracker, new ArraySegment<byte>(bytes, offset, byteSize));
6066 }
6167 }
6268
63- public class <#= t.Name #>ObjectSegment<TTypeResolver> : <#= t.FullName #>, IZeroFormatterSegment
69+ public class <#= t.Name #>ObjectSegment<#= resolverNameGenericArg #> : <#= t.FullName #>, IZeroFormatterSegment
70+ <# if(!ForceDefaultResolver) { #>
6471 where TTypeResolver : ITypeResolver, new()
65- {
72+ <# } #> {
6673 static readonly int[] __elementSizes = new int[]{ <#= string.Join(", ", t.ElementFixedSizes) #> };
6774
6875 readonly ArraySegment<byte> __originalBytes;
@@ -73,7 +80,7 @@ namespace <#= Namespace #>
7380<# foreach(var p in t.Properties) { #>
7481<# if(p.IsFixedSize) { #>
7582<# } else if(p.IsCacheSegment) { #>
76- CacheSegment<TTypeResolver , <#= p.Type #>> _<#= p.Name #>;
83+ CacheSegment<<#= resolverName #> , <#= p.Type #>> _<#= p.Name #>;
7784<# } else { #>
7885 <#= p.Type #> _<#= p.Name #>;
7986<# } } #>
@@ -85,11 +92,11 @@ namespace <#= Namespace #>
8592<# if(p.IsFixedSize) { #>
8693 <#= (p.IsGetProtected ? "protected " : "") + "get" #>
8794 {
88- return ObjectSegmentHelper.GetFixedProperty<TTypeResolver , <#= p.Type #>>(__originalBytes, <#= p.Index #>, __binaryLastIndex, __extraFixedBytes, __tracker);
95+ return ObjectSegmentHelper.GetFixedProperty<<#= resolverName #> , <#= p.Type #>>(__originalBytes, <#= p.Index #>, __binaryLastIndex, __extraFixedBytes, __tracker);
8996 }
9097 <#= (p.IsSetProtected ? "protected " : "") + "set" #>
9198 {
92- ObjectSegmentHelper.SetFixedProperty<TTypeResolver , <#= p.Type #>>(__originalBytes, <#= p.Index #>, __binaryLastIndex, __extraFixedBytes, value, __tracker);
99+ ObjectSegmentHelper.SetFixedProperty<<#= resolverName #> , <#= p.Type #>>(__originalBytes, <#= p.Index #>, __binaryLastIndex, __extraFixedBytes, value, __tracker);
93100 }
94101<# } else if(p.IsCacheSegment) { #>
95102 <#= (p.IsGetProtected ? "protected " : "") + "get" #>
@@ -128,9 +135,9 @@ namespace <#= Namespace #>
128135<# foreach(var p in t.Properties) { #>
129136<# if (p.IsFixedSize) { #>
130137<# } else if(p.IsCacheSegment) { #>
131- _<#= p.Name #> = new CacheSegment<TTypeResolver , <#= p.Type #>>(__tracker, ObjectSegmentHelper.GetSegment(originalBytes, <#= p.Index #>, __binaryLastIndex, __tracker));
138+ _<#= p.Name #> = new CacheSegment<<#= resolverName #> , <#= p.Type #>>(__tracker, ObjectSegmentHelper.GetSegment(originalBytes, <#= p.Index #>, __binaryLastIndex, __tracker));
132139<# } else { #>
133- _<#= p.Name #> = ObjectSegmentHelper.DeserializeSegment<TTypeResolver , <#= p.Type #>>(originalBytes, <#= p.Index #>, __binaryLastIndex, __tracker);
140+ _<#= p.Name #> = ObjectSegmentHelper.DeserializeSegment<<#= resolverName #> , <#= p.Type #>>(originalBytes, <#= p.Index #>, __binaryLastIndex, __tracker);
134141<# } #>
135142<# } #>
136143 }
@@ -154,11 +161,11 @@ namespace <#= Namespace #>
154161
155162<# foreach(var p in t.Properties) { #>
156163<# if (p.IsFixedSize) { #>
157- offset += ObjectSegmentHelper.SerializeFixedLength<TTypeResolver , <#= p.Type #>>(ref targetBytes, startOffset, offset, <#= p.Index #>, __binaryLastIndex, __originalBytes, __extraFixedBytes, __tracker);
164+ offset += ObjectSegmentHelper.SerializeFixedLength<<#= resolverName #> , <#= p.Type #>>(ref targetBytes, startOffset, offset, <#= p.Index #>, __binaryLastIndex, __originalBytes, __extraFixedBytes, __tracker);
158165<# } else if(p.IsCacheSegment) { #>
159- offset += ObjectSegmentHelper.SerializeCacheSegment<TTypeResolver , <#= p.Type #>>(ref targetBytes, startOffset, offset, <#= p.Index #>, ref _<#= p.Name #>);
166+ offset += ObjectSegmentHelper.SerializeCacheSegment<<#= resolverName #> , <#= p.Type #>>(ref targetBytes, startOffset, offset, <#= p.Index #>, ref _<#= p.Name #>);
160167<# } else { #>
161- offset += ObjectSegmentHelper.SerializeSegment<TTypeResolver , <#= p.Type #>>(ref targetBytes, startOffset, offset, <#= p.Index #>, _<#= p.Name #>);
168+ offset += ObjectSegmentHelper.SerializeSegment<<#= resolverName #> , <#= p.Type #>>(ref targetBytes, startOffset, offset, <#= p.Index #>, _<#= p.Name #>);
162169<# } } #>
163170
164171 return ObjectSegmentHelper.WriteSize(ref targetBytes, startOffset, offset, <#= t.LastIndex #>);
0 commit comments