Пример #1
0
        internal static void SetField <T>(t_field_type accessor, string fieldName, int field_name_idx, T value)
        {
            uint member_id;

            int field_divider_idx = fieldName.IndexOf('.', field_name_idx);

            if (-1 != field_divider_idx)
            {
                string member_name_string = fieldName.Substring(field_name_idx, field_divider_idx - field_name_idx);
                if (!FieldLookupTable_t_field_name.TryGetValue(member_name_string, out member_id))
                {
                    Throw.undefined_field();
                }

                switch (member_id)
                {
                /*FOREACH*/
                /*USE_LIST("t_member")*/
                /*  IF("$t_member_type->is_struct()")*/
                case t_uint:
                    GenericFieldAccessor.SetField(accessor.t_member_name, fieldName, field_divider_idx + 1, value);
                    break;

                /*  END*/
                /*END*/
                default:
                    // @note   We cannot go further unless it's a struct.
                    //         Throw exception now.
                    Throw.member_access_on_non_struct__field(member_name_string);
                    break;
                }
                return;
            }

            fieldName = fieldName.Substring(field_name_idx);
            if (!FieldLookupTable_t_field_name.TryGetValue(fieldName, out member_id))
            {
                Throw.undefined_field();
            }
            switch (member_id)
            {
            /*FOREACH*/
            /*USE_LIST("t_member")*/
            case t_uint:
            {
                t_field_type_2 conversion_result = TypeConverter <T> .ConvertTo_t_field_type_2_display(value);

                MODULE_CALL("ValueToAccessorFieldAssignment", "$t_member", "\"accessor\"", "\"conversion_result\"");
                break;
            }
                /*END*/
            }
        }
Пример #2
0
        internal static T GetField <T>(t_field_type accessor, string fieldName, int field_name_idx)
        {
            uint member_id;

            int field_divider_idx = fieldName.IndexOf('.', field_name_idx);

            if (-1 != field_divider_idx)
            {
                string member_name_string = fieldName.Substring(field_name_idx, field_divider_idx - field_name_idx);
                if (!FieldLookupTable_t_field_name.TryGetValue(member_name_string, out member_id))
                {
                    Throw.undefined_field();
                }
                switch (member_id)
                {
                /*FOREACH*/
                /*USE_LIST("t_member")*/
                /*  IF("$t_member_type->is_struct()")*/
                case t_uint:
                    return(GenericFieldAccessor.GetField <T>(accessor.t_member_name, fieldName, field_divider_idx + 1));

                /*  END*/
                /*END*/
                default:
                    // @note   We cannot go further unless it's a struct.
                    //         Throw exception now.
                    Throw.member_access_on_non_struct__field(member_name_string);
                    break;
                }
            }

            fieldName = fieldName.Substring(field_name_idx);
            if (!FieldLookupTable_t_field_name.TryGetValue(fieldName, out member_id))
            {
                Throw.undefined_field();
            }
            switch (member_id)
            {
            /*FOREACH*/
            /*USE_LIST("t_member")*/
            case t_uint:
                return(TypeConverter <T> .ConvertFrom_t_field_type_2_display(accessor.t_member_name));

                break;
                /*END*/
            }

            /* Should not reach here */
            throw new Exception("Internal error T5008");
        }
Пример #3
0
        public static bool ElementContainsSubstring(this t_field_type t_list, IEnumerable <string> substrings)
        {
            if (substrings == null || substrings.Count() == 0)
            {
                return(true);
            }
            if (t_list == null)
            {
                throw new ArgumentNullException("list");
            }

            __meta.META_VAR("std::vector<NFieldType*>*", "container_chain", "$t_substring_indexed_list_type->resolve_container_chain()");
            __meta.META_VAR("std::string", "list_name", "\"list\"");
            __meta.META_VAR("int", "iter_value", "0");
            __meta.META("%container_chain->pop_back();");
            __meta.META("%container_chain->pop_back();");
            __meta.MAP_LIST("t_chain", "%container_chain");
            __meta.MAP_VAR("t_list", "%list_name");
            __meta.MAP_VAR("t_element", "\"sublist_\" + GetString(%iter_value)");
            __meta.FOREACH();
            __meta.USE_LIST("t_chain");
            foreach (var t_element in t_list)
            {
                if (t_element == null)
                {
                    continue;
                }
                __meta.META("%list_name = std::string(\"sublist_\") + GetString(%iter_value);");
                __meta.META("++%iter_value;");
                __meta.END();
                foreach (string str in t_list)
                {
                    if (str.Contains(substrings))
                    {
                        return(true);
                    }
                }
                __meta.FOREACH();
                __meta.USE_LIST("t_chain");
            }
            __meta.END();
            return(false);
        }
Пример #4
0
        internal int Length; // message body length

        public unsafe t_accessor_nameWriter([FOREACH(",")] t_field_type t_field_name = default(t_field_type) /*END*/)
            : base(null
                   /*IF("$t_accessor->getLayoutType() != LT_FIXED")*/
                   , null
                   /*END*/)
        {
            int preservedHeaderLength = TrinityProtocol.MsgHeader;

            MUTE();
            byte *tmpcellptr = null;

            MUTE_END();

            MODULE_CALL("SerializeParametersToBuffer", "$t_accessor", "\"message\"");

            buffer     = tmpcellptr - preservedHeaderLength;
            this.m_ptr = buffer + preservedHeaderLength;
            Length     = BufferLength - preservedHeaderLength;

            IF("$t_accessor->getLayoutType() != LT_FIXED");
            this.ResizeFunction = WriterResizeFunction;
            END();
        }
 internal static unsafe bool TryParse_t_field_type_2_element_type_display(t_field_type value, out t_field_type_2_element_type intermediate_result)
 {
     throw new NotImplementedException();
 }
 internal static unsafe bool TryParse_t_field_type_display(string value, out t_field_type t_field_type)
 {
     throw new NotImplementedException();
 }
Пример #7
0
 //Mocking ctor
 public t_struct_name(t_field_type t_field_name = null, t_field_type t_field_name1 = default(t_field_type)) : this(t_field_name)
 {
     throw new NotImplementedException();
 }
Пример #8
0
 ///<summary>
 ///Initializes a new instance of t_struct_name with the specified parameters.
 ///</summary>
 public t_struct_name(/*FOREACH(",")*/ t_field_type t_field_name = default(t_field_type) /*END*/)
 {
     FOREACH();
     this.t_field_name = t_field_name;
     END();
 }
Пример #9
0
 internal static unsafe t_data_type Enumerate_t_field_type_2_element_type_display(t_field_type value)
 {
     throw new NotImplementedException();
 }
Пример #10
0
 internal static unsafe t_field_type ConvertFrom_t_field_type_2_array_element_type_display(t_field_type t_field_type)
 {
     throw new NotImplementedException();
 }
Пример #11
0
 internal static unsafe T ConvertFrom_t_field_type_remove_nullable(t_field_type t_field_type)
 {
     throw new NotImplementedException();
 }
Пример #12
0
 internal static T ConvertFrom_t_field_type_display(t_field_type value)
 {
     return(s_type_converter.ConvertFrom_t_field_type_display(value));
 }
Пример #13
0
 T ITypeConverter <T> .ConvertFrom_t_field_type_display(t_field_type value)
 {
     throw new NotImplementedException("Internal error T5013.");
 }
Пример #14
0
 object ITypeConverter <object> .ConvertFrom_t_field_type_display(t_field_type value)
 {
     return(value);
 }
Пример #15
0
            t_field_type_2 ITypeConverter <t_field_type_2> .ConvertFrom_t_field_type_display(t_field_type value)
            {
                META_VAR("TypeConversionAction", "conversion_action", "$t_field_type_2->get_type_conversion_action($t_field_type)");
                IF("%conversion_action == TypeConversionAction::TC_ASSIGN");
                return((t_field_type_2)value);

                ELIF("%conversion_action == TypeConversionAction::TC_TOSTRING");
                return(Serializer.ToString(value));

                ELIF("%conversion_action == TypeConversionAction::TC_PARSESTRING");
                {
                    #region String parse
                    t_field_type_2 intermediate_result;
                    bool           conversion_success;
                    IF("data_type_need_external_parser($t_field_type_2)");
                    {
                        conversion_success = ExternalParser.TryParse_t_field_type_2_display(value, out intermediate_result);
                    }
                    ELSE();
                    {
                        conversion_success = t_field_type_2.TryParse(value, out intermediate_result);
                    }
                    END();
                    if (!conversion_success)
                    {
                        IF("$t_field_type_2->is_list()");
                        try
                        {
                            t_field_type_2_element_type element = TypeConverter <t_field_type_2_element_type> .ConvertFrom_t_field_type_display(value);

                            intermediate_result = new t_field_type_2();
                            intermediate_result.Add(element);
                        }
                        catch
                        {
                            throw new ArgumentException("Cannot parse \"" + value + "\" into either 't_field_type_2' or 't_field_type_2_element_type'.");
                        }
                        ELSE();
                        Throw.cannot_parse(value, "t_field_type_2");
                        END();
                    }
                    return(intermediate_result);

                    #endregion
                }
                ELIF("%conversion_action == TypeConversionAction::TC_TOBOOL");
                return(value != 0);

                ELIF("%conversion_action == TypeConversionAction::TC_CONVERTLIST");
                {
                    t_field_type_2 intermediate_result = new t_field_type_2();
                    foreach (var element in value)
                    {
                        intermediate_result.Add(TypeConverter <t_field_type_2_element_type> .ConvertFrom_t_field_type_element_type_display(element));
                    }
                    return(intermediate_result);
                }
                ELIF("%conversion_action == TypeConversionAction::TC_WRAPINLIST");
                {
                    t_field_type_2 intermediate_result = new t_field_type_2();
                    intermediate_result.Add(TypeConverter <t_field_type_2_element_type> .ConvertFrom_t_field_type_display(value));
                    return(intermediate_result);
                }
                ELIF("%conversion_action == TypeConversionAction::TC_ARRAYTOLIST");
                return(TypeConverter <t_field_type> .Enumerate_t_field_type_2_element_type_display(value).ToList());

                ELIF("%conversion_action == TypeConversionAction::TC_EXTRACTNULLABLE");
                return(TypeConverter <t_field_type_2> .ConvertFrom_t_field_type_remove_nullable(value.Value));

                ELSE();
                throw new InvalidCastException("Invalid cast from '[META_OUTPUT($t_field_type)]' to '[META_OUTPUT($t_field_type_2)]'.");
                END();
            }
Пример #16
0
 public static bool ElementContainsSubstring(this t_field_type list, params string[] substrings)
 {
     return(ElementContainsSubstring(list, substrings as IEnumerable <string>));
 }