private void _read() { _headerType = ((ZxSpectrumTap.HeaderTypeEnum)m_io.ReadU1()); _filename = KaitaiStream.BytesStripRight(m_io.ReadBytes(10), 32); _lenData = m_io.ReadU2le(); switch (HeaderType) { case ZxSpectrumTap.HeaderTypeEnum.Program: { _params = new ProgramParams(m_io, this, m_root); break; } case ZxSpectrumTap.HeaderTypeEnum.NumArray: { _params = new ArrayParams(m_io, this, m_root); break; } case ZxSpectrumTap.HeaderTypeEnum.CharArray: { _params = new ArrayParams(m_io, this, m_root); break; } case ZxSpectrumTap.HeaderTypeEnum.Bytes: { _params = new BytesParams(m_io, this, m_root); break; } } _checksum = m_io.ReadU1(); }
public override bool Rewrite(CodeDescriptor decompilee, MethodBase callee, StackElement[] args, IDecompiler decomp, IFunctionBuilder builder) { Expression[] elements = null; if (args.Length == 1) { Expression valarr = args[0].Expr; valarr = decomp.ResolveVariableReference(decomp.CurrentILIndex, valarr); FunctionCall newarrCall = valarr as FunctionCall; if (newarrCall != null) { FunctionSpec fspec = newarrCall.Callee as FunctionSpec; IntrinsicFunction ifun = fspec == null ? null : fspec.IntrinsicRep; if (ifun != null && ifun.Action == IntrinsicFunction.EAction.NewArray) { ArrayParams aparams = (ArrayParams)ifun.Parameter; if (aparams.IsStatic) { newarrCall.IsInlined = true; for (int i = 0; i < aparams.Elements.Length; i++) { aparams.Elements[i].IsInlined = true; } elements = aparams.Elements; } } } } else { elements = args.Select(arg => arg.Expr).ToArray(); } if (elements == null) { throw new NotImplementedException(); } MakeStringArray(elements); decomp.Push( IntrinsicFunctions.StringConcat(elements), ""); return(true); }
public override bool Rewrite(CodeDescriptor decompilee, System.Reflection.MethodBase callee, Analysis.StackElement[] args, Analysis.IDecompiler stack, IFunctionBuilder builder) { Array arr = (Array)args[0].Sample; if (arr == null) { throw new InvalidOperationException("Unable to deduce array length"); } int numElems = arr.Length; Type tTE = arr.GetType().GetElementType(); Type tTA; callee.IsFunction(out tTA); FunctionCall newCall = IntrinsicFunctions.NewArray(tTE, LiteralReference.CreateConstant(numElems), arr); FunctionSpec fspec = (FunctionSpec)newCall.Callee; IntrinsicFunction ifun = fspec.IntrinsicRep; ArrayParams aparams = (ArrayParams)ifun.Parameter; for (int i = 0; i < numElems; i++) { aparams.Elements[i] = IntrinsicFunctions.GetArrayElement( args[0].Expr, LiteralReference.CreateConstant(i)); } object sample = null; try { sample = callee.Invoke(arr); } catch (Exception) { } Expression conv = IntrinsicFunctions.Cast(newCall, arr.GetType(), tTA); stack.Push(conv, sample); return(true); }
/// <summary> /// 删除角色 /// </summary> /// <param name="param">例:{ids: [14, 13]}</param> /// <returns></returns> public async Task DeleteRole(ArrayParams param) { await _roleRepository.DeleteAsync(m => param.Ids.Any(n => n == m.Id)); }
public async Task DeleteSupplier(ArrayParams param) { await _supplierRepository.DeleteAsync(m => param.Ids.Any(n => n == m.Id)); }
public async Task DeleteClient(ArrayParams param) { await _clientRepository.DeleteAsync(m => param.Ids.Any(n => n == m.Id)); }
public async Task DeleteSalesOrder(ArrayParams param) { await _salesOrderRepository.DeleteAsync(m => param.Ids.Any(n => n == m.Id)); await _salesOrderItemRepository.DeleteAsync(m => param.Ids.Any(n => n == m.SalesOrderId)); }
public async Task DeletePurchaseOrder(ArrayParams param) { await _purchaseOrderRepository.DeleteAsync(m => param.Ids.Any(n => n == m.Id)); await _purchaseOrderItemRepository.DeleteAsync(m => param.Ids.Any(n => n == m.PurchaseOrderId)); }
public async Task DeleteProduct(ArrayParams param) { await _productRepository.DeleteAsync(m => param.Ids.Any(n => n == m.Id)); }