Пример #1
0
        public List <ZCallArg> GetDimArgs()
        {
            List <ZCallArg> args = new List <ZCallArg>();

            foreach (var exp in this.InneExps)
            {
                bool isGeneric = false;
                var  type      = exp.RetType;
                if (exp is ExpType)
                {
                    var idExp = exp as ExpType;
                    isGeneric = idExp.RetType.SharpType.IsGenericType;
                    ZCallGenericArg arg = new ZCallGenericArg(type);
                    arg.Data = exp;
                    args.Add(arg);
                }
                else
                {
                    ZCallValueArg arg = new ZCallValueArg(type);
                    arg.Data = exp;
                    args.Add(arg);
                }
            }
            return(args);
        }
Пример #2
0
        private ZCallDesc ToZCallDesc(ZMethodDesc methodDesc)
        {
            ZCallDesc callDesc = new ZCallDesc();

            foreach (var part in methodDesc.Parts)
            {
                if (part is string)
                {
                    callDesc.Add(part);
                }
                else if (part is ZMethodNormalArg)
                {
                    ZMethodNormalArg mna     = part as ZMethodNormalArg;
                    ZCallValueArg    callArg = new ZCallValueArg(mna.ArgZType);
                    callDesc.Add(callArg);
                }
                else if (part is ZMethodGenericArg)
                {
                    ZMethodGenericArg mna     = part as ZMethodGenericArg;
                    ZCallValueArg     callArg = new ZCallValueArg(mna.ArgBaseZType);
                    callDesc.Add(callArg);
                }
                else
                {
                    throw new CompileException();
                }
            }
            return(callDesc);
        }
Пример #3
0
        public List <ZCallValueArg> GetCallNormalArgs()
        {
            List <ZCallValueArg> args = new List <ZCallValueArg>();

            foreach (var exp in this.InneExps)
            {
                if (!(exp is ExpType))
                {
                    var           type = exp.RetType;
                    ZCallValueArg arg  = new ZCallValueArg(type);
                    arg.Data = exp;
                    args.Add(arg);
                }
            }
            return(args);
        }