22using System ;
33using System . Collections . Generic ;
44using System . Linq ;
5+ using System . Reflection ;
56using System . Text ;
67
78namespace StackMemoryCollections
@@ -42,7 +43,7 @@ in Dictionary<string, TypeInfo> typeInfos
4243 WrapperConstructor1 ( in currentType , in typeInfo , in builder ) ;
4344 WrapperConstructor2 ( in currentType , in typeInfo , in builder ) ;
4445 WrapperConstructor3 ( in currentType , in typeInfo , in builder ) ;
45- WrapperConstructor4 ( in currentType , in builder ) ;
46+ WrapperConstructor4 ( in currentType , in typeInfo , in builder ) ;
4647
4748 WrapperProperties ( in typeInfo , in builder , in typeInfos ) ;
4849
@@ -101,6 +102,18 @@ in StringBuilder builder
101102" ) ;
102103 }
103104
105+ for ( int i = 0 ; i < typeInfo . Members . Count ; i ++ )
106+ {
107+ var currentMember = typeInfo . Members [ i ] ;
108+ if ( ! currentMember . IsValueType )
109+ {
110+ builder . Append ( $@ "
111+ //set null marker { currentMember . MemberName }
112+ *((byte*)_start + { currentMember . Offset } ) = 0;
113+ " ) ;
114+ }
115+ }
116+
104117 builder . Append ( $@ "
105118 }}
106119" ) ;
@@ -132,6 +145,18 @@ in StringBuilder builder
132145" ) ;
133146 }
134147
148+ for ( int i = 0 ; i < typeInfo . Members . Count ; i ++ )
149+ {
150+ var currentMember = typeInfo . Members [ i ] ;
151+ if ( ! currentMember . IsValueType )
152+ {
153+ builder . Append ( $@ "
154+ //set null marker { currentMember . MemberName }
155+ *((byte*)_start + { currentMember . Offset } ) = 0;
156+ " ) ;
157+ }
158+ }
159+
135160 builder . Append ( $@ "
136161 }}
137162" ) ;
@@ -164,13 +189,26 @@ StackMemoryCollections.Class.StackMemory stackMemory
164189" ) ;
165190 }
166191
192+ for ( int i = 0 ; i < typeInfo . Members . Count ; i ++ )
193+ {
194+ var currentMember = typeInfo . Members [ i ] ;
195+ if ( ! currentMember . IsValueType )
196+ {
197+ builder . Append ( $@ "
198+ //set null marker { currentMember . MemberName }
199+ *((byte*)_start + { currentMember . Offset } ) = 0;
200+ " ) ;
201+ }
202+ }
203+
167204 builder . Append ( $@ "
168205 }}
169206" ) ;
170207 }
171208
172209 private void WrapperConstructor4 (
173210 in INamedTypeSymbol currentType ,
211+ in TypeInfo typeInfo ,
174212 in StringBuilder builder
175213 )
176214 {
@@ -195,6 +233,18 @@ in StringBuilder builder
195233" ) ;
196234 }
197235
236+ for ( int i = 0 ; i < typeInfo . Members . Count ; i ++ )
237+ {
238+ var currentMember = typeInfo . Members [ i ] ;
239+ if ( ! currentMember . IsValueType )
240+ {
241+ builder . Append ( $@ "
242+ //set null marker { currentMember . MemberName }
243+ *((byte*)_start + { currentMember . Offset } ) = 0;
244+ " ) ;
245+ }
246+ }
247+
198248 builder . Append ( $@ "
199249 }}
200250" ) ;
0 commit comments