Пример #1
0
        static void PreGenField(MessageInfo message)
        {
            cur_gen_fields.Clear();
            foreach (var field in message.m_fields.Values.OrderBy(_ => _.m_index))
            {
                FieldInfoForGen gen_field = new FieldInfoForGen();
                gen_field.field_info       = field;
                gen_field.name_get         = field.m_name;
                gen_field.name_get_has_set = field.m_name + "Specified";

                gen_field.name_define      = "__" + gen_field.name_get;
                gen_field.name_has_set     = "__" + gen_field.name_get_has_set;
                gen_field.name_packed_size = "__" + gen_field.name_get + "__packed_size";
                gen_field.name_type_item   = GetFieldTypeName(field);
                if (field.m_is_array)
                {
                    gen_field.name_type = string.Format("List<{0}>", gen_field.name_type_item);
                }
                else
                {
                    gen_field.name_type = gen_field.name_type_item;
                }
                cur_gen_fields.Add(gen_field);
            }
        }
Пример #2
0
        static void DefineField(FieldInfoForGen gen_field)
        {
            FieldInfo field = gen_field.field_info;
            // Get and set
            {
                AppendLine(2, "public {0} {1}", gen_field.name_type, gen_field.name_get);
                AppendLine(2, "{");
                if (field.m_is_array)
                {
                    AppendLine(3, "get {{ return {0}; }}", gen_field.name_define);
                }
                else if (field.m_type == FieldFormat.FieldType.Message)
                {
                    AppendLine(3, "get {{ return {0}; }}", gen_field.name_define);
                    AppendLine(3, "set {{ {0} = value; }}", gen_field.name_define, gen_field.name_has_set);
                }
                else if (field.m_type == FieldFormat.FieldType.String)
                {
                    AppendLine(3, "get {{ return {0} ?? \"\"; }}", gen_field.name_define);
                    AppendLine(3, "set {{ {0} = value; }}", gen_field.name_define, gen_field.name_has_set);
                }
                else if (field.m_type == FieldFormat.FieldType.Bytes)
                {
                    AppendLine(3, "get {{ return {0}; }}", gen_field.name_define);
                    AppendLine(3, "set {{ {0} = value; }}", gen_field.name_define, gen_field.name_has_set);
                }
                else
                {
                    AppendLine(3, "get {{ return {0}; }}", gen_field.name_define);
                    AppendLine(3, "set {{ {0} = value; {1} = true; }}", gen_field.name_define, gen_field.name_has_set);
                }
                AppendLine(2, "}");
            }
            // define field, has set field, packed size
            {
                // define field
                if (field.m_is_array)
                {
                    AppendLine(2, "private {0} {1} = new {0}();", gen_field.name_type, gen_field.name_define);
                    if (field.m_is_packed)
                    {
                        AppendLine(2, "private int {0};", gen_field.name_packed_size);
                    }
                }
                else
                {
                    AppendLine(2, "private {0} {1};", gen_field.name_type, gen_field.name_define);
                }

                // has set field
                if (field.m_is_array)
                {
                    AppendLine(2, "public bool {0} {{ get{{ return {1}.Count > 0; }} }}", gen_field.name_get_has_set, gen_field.name_define);
                }
                else if (field.m_type == FieldFormat.FieldType.Message)
                {
                    AppendLine(2, "public bool {0} {{ get{{ return {1} != null; }} }}", gen_field.name_get_has_set, gen_field.name_define);
                }
                else if (field.m_type == FieldFormat.FieldType.String)
                {
                    AppendLine(2, "public bool {0} {{ get{{ return {1} != null; }} }}", gen_field.name_get_has_set, gen_field.name_define);
                }
                else if (field.m_type == FieldFormat.FieldType.Bytes)
                {
                    AppendLine(2, "public bool {0} {{ get{{ return {1} != null; }} }}", gen_field.name_get_has_set, gen_field.name_define);
                }
                else
                {
                    AppendLine(2, "private bool {0};", gen_field.name_has_set);
                    AppendLine(2, "public bool {0} {{ get{{ return {1}; }} set{{ {1} = value; }} }}", gen_field.name_get_has_set, gen_field.name_has_set);
                }
            }
        }