Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ GenerateMetadataForTypeV2()

static unsafe bool System.Diagnostics.Tracing.EventParameterInfo.GenerateMetadataForTypeV2 ( TraceLoggingTypeInfo typeInfo,
byte * pMetadataBlob,
ref uint offset,
uint blobSize )
inlinestaticprivate

Definition at line 123 of file EventParameterInfo.cs.

124 {
125 if (typeInfo is InvokeTypeInfo invokeTypeInfo)
126 {
127 EventPipeMetadataGenerator.WriteToBuffer(pMetadataBlob, blobSize, ref offset, 1u);
128 PropertyAnalysis[] properties = invokeTypeInfo.properties;
129 if (properties != null)
130 {
131 EventPipeMetadataGenerator.WriteToBuffer(pMetadataBlob, blobSize, ref offset, (uint)properties.Length);
132 PropertyAnalysis[] array = properties;
133 foreach (PropertyAnalysis propertyAnalysis in array)
134 {
135 if (!GenerateMetadataForNamedTypeV2(propertyAnalysis.name, propertyAnalysis.typeInfo, pMetadataBlob, ref offset, blobSize))
136 {
137 return false;
138 }
139 }
140 }
141 else
142 {
143 EventPipeMetadataGenerator.WriteToBuffer(pMetadataBlob, blobSize, ref offset, 0u);
144 }
145 }
146 else if (typeInfo is EnumerableTypeInfo enumerableTypeInfo)
147 {
148 EventPipeMetadataGenerator.WriteToBuffer(pMetadataBlob, blobSize, ref offset, 19);
149 GenerateMetadataForTypeV2(enumerableTypeInfo.ElementInfo, pMetadataBlob, ref offset, blobSize);
150 }
151 else if (typeInfo is ScalarArrayTypeInfo scalarArrayTypeInfo)
152 {
153 if (!scalarArrayTypeInfo.DataType.HasElementType)
154 {
155 return false;
156 }
157 if (!GetTypeInfoFromType(scalarArrayTypeInfo.DataType.GetElementType(), out var typeInfo2))
158 {
159 return false;
160 }
161 EventPipeMetadataGenerator.WriteToBuffer(pMetadataBlob, blobSize, ref offset, 19);
162 GenerateMetadataForTypeV2(typeInfo2, pMetadataBlob, ref offset, blobSize);
163 }
164 else
165 {
166 TypeCode typeCodeExtended = GetTypeCodeExtended(typeInfo.DataType);
167 if (typeCodeExtended == TypeCode.Object)
168 {
169 return false;
170 }
171 EventPipeMetadataGenerator.WriteToBuffer(pMetadataBlob, blobSize, ref offset, (uint)typeCodeExtended);
172 }
173 return true;
174 }
static TypeCode GetTypeCodeExtended(Type parameterType)
static unsafe bool GenerateMetadataForNamedTypeV2(string name, TraceLoggingTypeInfo typeInfo, byte *pMetadataBlob, ref uint offset, uint blobSize)
static unsafe bool GenerateMetadataForTypeV2(TraceLoggingTypeInfo typeInfo, byte *pMetadataBlob, ref uint offset, uint blobSize)
static bool GetTypeInfoFromType(Type type, out TraceLoggingTypeInfo typeInfo)

References System.array, System.Diagnostics.Tracing.TraceLoggingTypeInfo.DataType, System.Diagnostics.Tracing.EventParameterInfo.GenerateMetadataForNamedTypeV2(), System.Diagnostics.Tracing.EventParameterInfo.GenerateMetadataForTypeV2(), System.Diagnostics.Tracing.EventParameterInfo.GetTypeCodeExtended(), System.Diagnostics.Tracing.EventParameterInfo.GetTypeInfoFromType(), System.Diagnostics.Tracing.PropertyAnalysis.name, System.offset, System.Diagnostics.Tracing.PropertyAnalysis.typeInfo, and System.Diagnostics.Tracing.EventPipeMetadataGenerator.WriteToBuffer().

Referenced by System.Diagnostics.Tracing.EventParameterInfo.GenerateMetadataForNamedTypeV2(), and System.Diagnostics.Tracing.EventParameterInfo.GenerateMetadataForTypeV2().