Ejemplo n.º 1
0
            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();
            }
Ejemplo n.º 2
0
 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);
 }
Ejemplo n.º 3
0
            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);
            }
Ejemplo n.º 4
0
 /// <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));
 }
Ejemplo n.º 5
0
 public async Task DeleteSupplier(ArrayParams param)
 {
     await _supplierRepository.DeleteAsync(m => param.Ids.Any(n => n == m.Id));
 }
Ejemplo n.º 6
0
 public async Task DeleteClient(ArrayParams param)
 {
     await _clientRepository.DeleteAsync(m => param.Ids.Any(n => n == m.Id));
 }
Ejemplo n.º 7
0
        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));
        }
Ejemplo n.º 9
0
 public async Task DeleteProduct(ArrayParams param)
 {
     await _productRepository.DeleteAsync(m => param.Ids.Any(n => n == m.Id));
 }