Пример #1
0
        private static ProcDefBlock ToProcDef(JToken json)
        {
            ProcDefBlock    b        = new ProcDefBlock();
            string          procName = json[1][0].ToString();
            List <string>   argNames = new List <string>();
            List <DataType> argTypes = new List <DataType>();

            for (int i = 1; i < json[1].Count(); i += 2)
            {
                argNames.Add(json[1][i].ToString());
                argTypes.Add(DataTypeNames.TypeOf(json[1][i + 1].ToString()));
            }
            string[] bits     = procName.SplitFuncArgs();
            int      argCount = 0;

            for (int i = 0; i < bits.Length; ++i)
            {
                string bit = bits[i];
                if (bit == "%")
                {
                    b.AddBit(new VarDefBlock(argNames[argCount], argTypes[argCount]));
                    argCount++;
                }
                else
                {
                    b.AddBit(new ProcDefTextBit(bit));
                }
            }
            return(b);
        }
Пример #2
0
        public void AddArg(DataType type)
        {
            string      argName = MakeArgName(type);
            VarDefBlock v       = new VarDefBlock(argName, type);

            v.ParentRelationship = new ParentRelationship(ParentRelationshipType.FormalParameter, model, model.Bits.Count);
            model.AddBit(v);
        }
Пример #3
0
        public IBlock DeepClone()
        {
            ProcDefBlock ret = new ProcDefBlock();

            Bits.ForEach(b => ret.AddBit(b.DeepClone()));
            return(ret);
        }
Пример #4
0
 private static ProcDefBlock ToProcDef(JToken json)
 {
     ProcDefBlock b = new ProcDefBlock();
     string procName = json[1][0].ToString();
     List<string> argNames = new List<string>();
     List<DataType> argTypes = new List<DataType>();
     for (int i = 1; i < json[1].Count(); i += 2)
     {
         argNames.Add(json[1][i].ToString());
         argTypes.Add(DataTypeNames.TypeOf(json[1][i + 1].ToString()));
     }
     string[] bits = procName.SplitFuncArgs();
     int argCount = 0;
     for (int i = 0; i < bits.Length; ++i)
     {
         string bit = bits[i];
         if (bit == "%")
         {
             b.AddBit(new VarDefBlock(argNames[argCount], argTypes[argCount]));
             argCount++;
         }
         else
         {
             b.AddBit(new ProcDefTextBit(bit));
         }
     }
     return b;
 }
Пример #5
0
 public IBlock DeepClone()
 {
     ProcDefBlock ret = new ProcDefBlock();
     Bits.ForEach(b=>ret.AddBit(b.DeepClone()));
     return ret;
 }