示例#1
0
        private string GenFileCsCode(ProtoField field)
        {
            var    arraryTemplate = @"        /// <summary>
        /// [NOTE]
        /// </summary>
        public List<[TYPE]> [NAME] { set; get; }";
            string template       = @"        /// <summary>
        /// [NOTE]
        /// </summary>
        public [TYPE] [NAME] { set; get; }";
            var    resultType     = string.Empty;

            switch (field.Type)
            {
            case ProtoTypes.STRING:
                resultType = "string";
                break;

            case ProtoTypes.INT_32:
                resultType = "int";
                break;

            case ProtoTypes.BOOL:
                resultType = "bool";
                break;

            case ProtoTypes.BYTE:
                resultType = "byte";
                break;

            case ProtoTypes.CHAR:
                resultType = "char";
                break;

            case ProtoTypes.FLOAT:
                resultType = "float";
                break;

            case ProtoTypes.SHORT:
                resultType = "short";
                break;

            case ProtoTypes.INT_64:
                resultType = "long";
                break;

            default:
                resultType = field.Type;
                break;
            }
            var resultTemplate = field.IsArray ? arraryTemplate : template;
            var code           = resultTemplate.Replace("[NOTE]", field.Note)
                                 .Replace("[TYPE]", resultType).Replace("[NAME]", field.Name);

            return(code);
        }
示例#2
0
        private string GenFieldBwCode(ProtoField field)
        {
            if (field.IsArray)
            {
                var arrayTemplate = @"            writer.Write([NAME].Count);
            foreach(var i in [NAME])
            {
[CODE]               
            }".Replace("[NAME]", field.Name);
                return(arrayTemplate.Replace("[CODE]", "                " + WriteField("i", field.Type)));
            }
            else
            {
                return("            " + WriteField(field.Name, field.Type));
            }
        }
示例#3
0
        public string GenFieldBrCode(ProtoField field)
        {
            if (field.IsArray)
            {
                var arrayTemp = @"            int [NAME]_Len = reader.ReadInt32();
            while([NAME]_Len-->0)
            {
[DEFINE]
[READER]
                [NAME].Add([NAME]_Temp );
            }".Replace("[NAME]", field.Name);
                var type      = field.Type;
                var name      = "[NAME]_Temp".Replace("[NAME]", field.Name);
                arrayTemp = arrayTemp.Replace("[DEFINE]", "                " + DefineField(name, field.Type));
                arrayTemp = arrayTemp.Replace("[READER]", "                " + ReadField(name, type));
                return(arrayTemp);
            }
            else
            {
                return("            " + ReadField(field.Name, field.Type));
            }
        }
示例#4
0
 public void AddField(ProtoField field)
 {
     Fields.Add(field);
 }