Пример #1
0
                public PEAPI.Property Resolve (CodeGen code_gen, PEAPI.ClassDef classdef)
                {
                        if (is_resolved)
                                return prop_def;

                        PEAPI.Type[] type_list = new PEAPI.Type[arg_list.Count];

                        for (int i=0; i<type_list.Length; i++) {
                                BaseTypeRef arg_type = (BaseTypeRef) arg_list[i];
                                arg_type.Resolve (code_gen);
                                type_list[i] = arg_type.PeapiType;
                        }

                        type.Resolve (code_gen);
                        prop_def = classdef.AddProperty (name, type.PeapiType, type_list);

                        if ((attr & FeatureAttr.Rtspecialname) != 0)
                                prop_def.SetRTSpecialName ();

                        if ((attr & FeatureAttr.Specialname) != 0)
                                prop_def.SetSpecialName ();

                        prop_def.SetInstance ((attr & FeatureAttr.Instance) != 0);

                        if (customattr_list != null)
                                foreach (CustomAttr customattr in customattr_list)
                                        customattr.AddTo (code_gen, prop_def);


                        is_resolved = true;

                        return prop_def;
                }
        public PEAPI.Property Resolve(CodeGen code_gen, PEAPI.ClassDef classdef)
        {
            if (is_resolved)
            {
                return(prop_def);
            }

            PEAPI.Type[] type_list = new PEAPI.Type[arg_list.Count];

            for (int i = 0; i < type_list.Length; i++)
            {
                BaseTypeRef arg_type = (BaseTypeRef)arg_list[i];
                arg_type.Resolve(code_gen);
                type_list[i] = arg_type.PeapiType;
            }

            type.Resolve(code_gen);
            prop_def = classdef.AddProperty(name, type.PeapiType, type_list);

            if ((attr & FeatureAttr.Rtspecialname) != 0)
            {
                prop_def.SetRTSpecialName();
            }

            if ((attr & FeatureAttr.Specialname) != 0)
            {
                prop_def.SetSpecialName();
            }

            prop_def.SetInstance((attr & FeatureAttr.Instance) != 0);

            if (customattr_list != null)
            {
                foreach (CustomAttr customattr in customattr_list)
                {
                    customattr.AddTo(code_gen, prop_def);
                }
            }


            is_resolved = true;

            return(prop_def);
        }