Skip to content

Commit cdbb786

Browse files
author
Vyacheslav
committed
feat: resolve #38
+ Set nullable properties/fields to null
1 parent d256d54 commit cdbb786

File tree

1 file changed

+51
-1
lines changed

1 file changed

+51
-1
lines changed

Src/StackMemoryCollections/GenerateWrappers.cs

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System;
33
using System.Collections.Generic;
44
using System.Linq;
5+
using System.Reflection;
56
using System.Text;
67

78
namespace 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

Comments
 (0)