public EnumFormatterImplementor(TypeProvider provider) { this.module = provider.Module; this.writerHelper = provider.MessagePackWriterHelper; this.readerHelper = provider.MessagePackReaderHelper; this.importer = provider.Importer; this.optionsHelper = provider.MessagePackSerializerOptionsHelper; this.provider = provider; }
public UnionInterfaceFormatterAllConsequentImplementor(ModuleDefinition module, SystemObjectHelper objectHelper, InterfaceMessagePackFormatterHelper interfaceMessagePackFormatterHelper, SystemInvalidOperationExceptionHelper invalidOperationExceptionHelper, ModuleImporter importer, MessagePackSecurityHelper securityHelper, MessagePackSerializerOptionsHelper messagePackSerializerOptionsHelper, MessagePackWriterHelper writerHelper, MessagePackReaderHelper readerHelper, FormatterResolverExtensionHelper formatterResolverExtensionHelper, FixedTypeKeyInt32ValueHashtableGenerator generator) { this.module = module; this.objectHelper = objectHelper; this.interfaceMessagePackFormatterHelper = interfaceMessagePackFormatterHelper; this.invalidOperationExceptionHelper = invalidOperationExceptionHelper; this.importer = importer; this.securityHelper = securityHelper; this.messagePackSerializerOptionsHelper = messagePackSerializerOptionsHelper; this.writerHelper = writerHelper; this.readerHelper = readerHelper; this.formatterResolverExtensionHelper = formatterResolverExtensionHelper; this.generator = generator; }
public static void SerializeFixedSizeBuffer(ILProcessor processor, ParameterDefinition valueParam, FieldReference fixedFieldImportedReference, ModuleDefinition module, MessagePackWriterHelper writer, FixedSizeBufferElementType elementType, int count, ref VariableDefinition notPinnedVariable) #endif { var writingElement = writer.WriteMessagePackPrimitive(GetType(module, elementType)); var ldInd = LdInd(elementType); var stride = SizeOf(elementType); processor.Append(Instruction.Create(OpCodes.Ldarg_1)); // { writer } processor.Append(InstructionUtility.LdcI4(count)); // { writer, int32 } processor.Append(Instruction.Create(OpCodes.Call, writer.WriteArrayHeaderInt)); // { } processor.Append(Instruction.Create(OpCodes.Ldarg_1)); // { writer } processor.Append(Instruction.Create(OpCodes.Ldarga_S, valueParam)); // { writer, value& } processor.Append(Instruction.Create(OpCodes.Ldflda, fixedFieldImportedReference)); // { writer, field& } processor.Append(Instruction.Create(OpCodes.Conv_U)); // { writer, native uint } if (count == 1) { processor.Append(Instruction.Create(ldInd)); // { writer, binary } processor.Append(Instruction.Create(OpCodes.Call, writingElement)); // { } } else { if (notPinnedVariable is null) { notPinnedVariable = new VariableDefinition(module.TypeSystem.IntPtr); processor.Body.Variables.Add(notPinnedVariable); } processor.Append(Instruction.Create(OpCodes.Dup)); // { writer, native uint, native uint } processor.Append(InstructionUtility.Store(notPinnedVariable)); // { writer, native uint } processor.Append(Instruction.Create(ldInd)); // { writer, binary } processor.Append(Instruction.Create(OpCodes.Call, writingElement)); // { } for (var i = 1; i < count; i++) { processor.Append(Instruction.Create(OpCodes.Ldarg_1)); // { writer } processor.Append(InstructionUtility.Load(notPinnedVariable)); // { writer, native uint } processor.Append(InstructionUtility.LdcI4(stride)); // { writer, native uint, int32 } processor.Append(Instruction.Create(OpCodes.Add)); // { writer, native uint } if (i != count - 1) { processor.Append(Instruction.Create(OpCodes.Dup)); // { writer, native int, native int } processor.Append(InstructionUtility.Store(notPinnedVariable)); // { writer, native int } } processor.Append(Instruction.Create(ldInd)); // { writer, binary } processor.Append(Instruction.Create(OpCodes.Call, writingElement)); // { } } } }
public static void SerializeFixedSizeBuffer(ILProcessor processor, ParameterDefinition valueParam, FieldReference fixedFieldImportedReference, ModuleDefinition module, MessagePackWriterHelper writer, FixedSizeBufferElementType elementType, int count, ref VariableDefinition?notPinnedVariable)