Exemple #1
0
 public ExpCallSubject(ContextExp context, Exp SubjectExp, ZCallDesc expProcDesc, ExpCall srcExp)
 {
     this.ExpContext  = context;
     this.SubjectExp  = SubjectExp;
     this.ExpProcDesc = expProcDesc;
     this.SrcExp      = srcExp;
 }
Exemple #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);
        }
Exemple #3
0
 public ExpCallThis(ContextExp context, ZCallDesc expProcDesc, ZMethodDesc searchedMethod, ExpCall srcExp)
 {
     this.ExpContext       = context;
     this.ExpProcDesc      = expProcDesc;
     this.SearchedProcDesc = searchedMethod;
     this.SrcExp           = srcExp;
 }
Exemple #4
0
 public ExpCallUse(ContextExp context, ZCallDesc expProcDesc, ZMethodInfo zmethod, ExpCall srcExp)
 {
     this.ExpContext     = context;
     this.ExpProcDesc    = expProcDesc;
     this.SearchedMethod = zmethod;
     this.SrcExp         = srcExp;
 }
Exemple #5
0
 private void AnalyProcDesc()
 {
     ExpProcDesc = new ZCallDesc();
     for (int i = 0; i < this.Elements.Count; i++)
     {
         Exp exp = this.Elements[i];
         exp.SetContext(this.ExpContext);
         Exp subExp = exp.Analy();
         Elements[i] = subExp;
         if (subExp != null)
         {
             if (subExp is ExpProcNamePart)
             {
                 ExpProcDesc.Add((subExp as ExpProcNamePart).PartName);
             }
             else if (subExp is ExpBracket)
             {
                 ExpProcDesc.Add((subExp as ExpBracket).GetDimArgs().ToArray());
             }
             else
             {
                 ExpBracket bracket = new ExpBracket();
                 bracket.AddInnerExp(subExp);
                 ExpProcDesc.Add(bracket.GetDimArgs().ToArray());
             }
         }
     }
 }
Exemple #6
0
        public ZMethodDesc[] SearchProc(ZCallDesc procDesc)
        {
            List <ZMethodDesc> data = new List <ZMethodDesc>();

            foreach (var context in ProcContextList)
            {
                if (!context.IsConstructor && procDesc.Compare(context.ProcDesc))
                {
                    data.Add(context.ProcDesc);
                }
            }
            return(data.ToArray());
        }
Exemple #7
0
        protected void EmitArgs(ZCallDesc expProcDesc, ZMethodDesc searchedProcDesc)
        {
            var size = expProcDesc.Args.Count;;

            for (int i = 0; i < size; i++)
            {
                var        arg     = expProcDesc.Args[i];
                var        exp     = (arg.Data as Exp);
                ZMethodArg procArg = searchedProcDesc.Args[i];
                exp.RequireType = (procArg as ZMethodNormalArg).ArgZType;// ZRealType.CreateZType(procArg.ArgType);
                exp.Emit();
            }
        }
Exemple #8
0
        public ZMethodInfo[] SearchProc(ZCallDesc procDesc)
        {
            List <ZMethodInfo> data = new List <ZMethodInfo>();

            foreach (var zclass in UseZClassList)
            {
                var zmethod = zclass.SearchZMethod(procDesc);
                if (zmethod != null)
                {
                    data.Add(zmethod);
                }
            }
            return(data.ToArray());
        }
Exemple #9
0
        private Exp SearchSubject()
        {
            var SubjectExp = Elements[0];

            if (SubjectExp is ExpProcNamePart)
            {
                return(null);
            }
            else
            {
                ZCallDesc      tailDesc       = ExpProcDesc.CreateTail();
                ExpCallSubject expCallSubject = new ExpCallSubject(this.ExpContext, SubjectExp, tailDesc, this);
                return(expCallSubject);
            }
        }
Exemple #10
0
        public string GetMethodName()
        {
            ContextClass context   = this.ProcContext.ClassContext;
            ZClassType   baseZType = context.BaseZType;

            if (baseZType != null)
            {
                ZCallDesc callDesc = ToZCallDesc(ProcDesc);
                var       zmethod  = baseZType.SearchZMethod(callDesc);
                if (zmethod != null)
                {
                    return(zmethod.SharpMethod.Name);
                }
            }
            return(this.ProcDesc.ToMethodName());
        }
Exemple #11
0
 public ExpCallNone(ContextExp context, ZCallDesc expProcDesc, ExpCall srcExp)
 {
     this.ExpContext  = context;
     this.ExpProcDesc = expProcDesc;
     this.SrcExp      = srcExp;
 }
Exemple #12
0
 public ZMethodDesc[] SearchThisProc(ZCallDesc procDesc)
 {
     return(ProcManagerContext.SearchProc(procDesc));
 }
Exemple #13
0
 public ZMethodInfo[] SearchUseProc(ZCallDesc procDesc)
 {
     return(UseContext.SearchProc(procDesc));
 }