コード例 #1
0
 public class_constant_definition(string name, location loc, common_type_node comprehensive_type, field_access_level field_access_level)
     :
     base(name, loc)
 {
     _comprehensive_type = comprehensive_type;
     _fal = field_access_level;
 }
コード例 #2
0
 public common_property_node(string name, common_type_node comprehensive_type, location loc,
                             field_access_level field_access_level, polymorphic_state polymorphic_state)
 {
     _name = name;
     _comprehensive_type = comprehensive_type;
     _loc = loc;
     _field_access_level = field_access_level;
     _polymorphic_state  = polymorphic_state;
 }
コード例 #3
0
        private ElementScope CreateInterfaceProperty(string name, int offset)
        {
            ElementScope prop = members[offset] as ElementScope;

            if (prop != null)
            {
                return(prop);
            }
            int       name_ref = br.ReadInt32();
            TypeScope type     = GetTypeReference();

            if (br.ReadByte() == 1)
            {
                br.ReadInt32();
            }

            if (br.ReadByte() == 1)
            {
                br.ReadInt32();
            }
            int num = br.ReadInt32();
            List <ElementScope> prms = new List <ElementScope>();

            for (int i = 0; i < num; i++)
            {
                prms.Add(GetParameter(null));
            }
            br.ReadInt32();
            field_access_level fal = (field_access_level)br.ReadByte();
            polymorphic_state  ps  = (polymorphic_state)br.ReadByte();

            //ReadDebugInfo();
            prop = new ElementScope(new SymInfo(name, SymbolKind.Property, name), type, cur_scope);
            prop.declaringUnit = root_scope;
            switch (fal)
            {
            case field_access_level.fal_internal: prop.acc_mod = access_modifer.internal_modifer; break;

            case field_access_level.fal_private: prop.acc_mod = access_modifer.private_modifer; return(null);

            case field_access_level.fal_protected: prop.acc_mod = access_modifer.protected_modifer; break;

            case field_access_level.fal_public: prop.acc_mod = access_modifer.public_modifer; break;
            }

            switch (ps)
            {
            case polymorphic_state.ps_static: prop.is_static = true; break;

            case polymorphic_state.ps_virtual: prop.is_virtual = true; break;
            }
            //members[offset] = prop;
            AddMember(prop, offset);

            return(prop);
        }
コード例 #4
0
 public class_field(string name, type_node type, common_type_node cont_class,
                    polymorphic_state polymorphic_state, field_access_level field_access_level,
                    location loc) :
     base(name, type)
 {
     _cont_class         = cont_class;
     _polymorphic_state  = polymorphic_state;
     _field_access_level = field_access_level;
     _loc = loc;
 }
コード例 #5
0
 public common_event(string name, type_node del_type, common_type_node cont_type, common_method_node add_method, common_method_node remove_method, common_method_node raise_method,
                     field_access_level fal, polymorphic_state ps, location loc)
 {
     this._name               = name;
     this.del_type            = del_type;
     this._add_method         = add_method;
     this._remove_method      = remove_method;
     this._raise_method       = raise_method;
     this._field_access_level = fal;
     this._polymorphic_state  = ps;
     this._cont_type          = cont_type;
     this._loc = loc;
 }
コード例 #6
0
 public common_property_node(string name, common_type_node comprehensive_type, type_node property_type,
                             function_node get_function, function_node set_function, location loc,
                             field_access_level field_access_level, polymorphic_state polymorphic_state)
 {
     _name = name;
     _comprehensive_type = comprehensive_type;
     _property_type      = property_type;
     _get_function       = get_function;
     _set_function       = set_function;
     _loc = loc;
     _field_access_level = field_access_level;
     _polymorphic_state  = polymorphic_state;
 }
コード例 #7
0
        private ElementScope CreateInterfaceClassField(string name, int offset)
        {
            ElementScope field = members[offset] as ElementScope;

            if (field != null)
            {
                return(field);
            }
            int       name_off = br.ReadInt32();
            TypeScope type     = GetTypeReference();

            field = new ElementScope(new SymInfo(name, SymbolKind.Field, name), type, cur_scope);
            field.declaringUnit = root_scope;
            AddMember(field, offset);
            object initv = null;

            if (CanReadObject())
            {
                initv = CreateExpression();
            }
            br.ReadInt32();
            field_access_level fal = (field_access_level)br.ReadByte();
            polymorphic_state  ps  = (polymorphic_state)br.ReadByte();

            switch (fal)
            {
            case field_access_level.fal_internal: field.acc_mod = access_modifer.internal_modifer; break;

            case field_access_level.fal_private: field.acc_mod = access_modifer.private_modifer; return(null);

            case field_access_level.fal_protected: field.acc_mod = access_modifer.protected_modifer; break;

            case field_access_level.fal_public: field.acc_mod = access_modifer.public_modifer; break;
            }

            switch (ps)
            {
            case polymorphic_state.ps_static: field.is_static = true; break;

            case polymorphic_state.ps_virtual: field.is_virtual = true; break;
            }

            //field = new class_field(name,type,cont,ps,fal,loc);
            field.cnst_val = initv;
            //members[offset] = field;
            AddMember(field, offset);
            return(field);
        }
コード例 #8
0
        public ICommonClassFieldNode[] GetFields(ICommonTypeNode ctn, field_access_level fal)
        {
            List <ICommonClassFieldNode> lst = new List <ICommonClassFieldNode>();

            while (ctn != null)
            {
                foreach (ICommonClassFieldNode p in ctn.fields)
                {
                    if (p.field_access_level == fal && HelpUtils.can_write(p))
                    {
                        lst.Add(p);
                    }
                }
                ctn = ctn.base_type as ICommonTypeNode;
            }
            lst.Sort(new FieldComparer());
            return(lst.ToArray());
        }
コード例 #9
0
        public ICommonMethodNode[] GetMethods(ICommonTypeNode ctn, field_access_level fal)
        {
            List <ICommonMethodNode> lst = new List <ICommonMethodNode>();

            ICommonPropertyNode[] props = GetProperties(ctn);
            while (ctn != null)
            {
                foreach (ICommonMethodNode m in ctn.methods)
                {
                    if (!m.is_constructor && m.field_access_level == fal && m.Location != null && !is_getter_or_setter(m, props) &&
                        !is_event_special_method(m) && HelpUtils.can_write(m))
                    {
                        lst.Add(m);
                    }
                }
                ctn = ctn.base_type as ICommonTypeNode;
            }
            lst.Sort(new MethodComparer());
            return(lst.ToArray());
        }
コード例 #10
0
ファイル: NETGenerator.cs プロジェクト: CSRedRat/pascalabcnet
 private FieldAttributes ConvertFALToFieldAttributes(field_access_level fal)
 {
     switch (fal)
     {
         case field_access_level.fal_public: return FieldAttributes.Public;
         case field_access_level.fal_internal: return FieldAttributes.Assembly;
         case field_access_level.fal_protected: return FieldAttributes.FamORAssem;
         case field_access_level.fal_private: return FieldAttributes.Assembly;
     }
     return FieldAttributes.Assembly;
 }
コード例 #11
0
        private ProcScope CreateInterfaceMethod(string name, int offset)
        {
            ProcScope cmn = members[offset] as ProcScope;

            if (cmn != null)
            {
                return(cmn);
            }
            cmn = new ProcScope(name, cur_scope);
            cmn.declaringUnit = root_scope;
            //members[offset] = cmn;
            AddMember(cmn, offset);

            int name_ref = br.ReadInt32();

            br.ReadByte();
            br.ReadByte();
            bool is_generic = br.ReadBoolean();

            if (is_generic)
            {
                throw new NotSupportedException();
            }
            //ssyy

            //\ssyy

            if (br.ReadByte() == 1) //return_value_type
            {
                cmn.return_type = GetTypeReference();
                if (br.ReadByte() == 1)
                {
                    GetLocalVariable(cmn);
                }
            }
            int num_par = br.ReadInt32();

            for (int i = 0; i < num_par; i++)
            {
                cmn.parameters.Add(GetParameter(cmn));
            }
            br.ReadInt32();
            br.ReadInt32();
            cmn.is_constructor = br.ReadBoolean();
            cmn.is_forward     = br.ReadBoolean();
            br.ReadBoolean();
            field_access_level fal = (field_access_level)br.ReadByte();
            polymorphic_state  ps  = (polymorphic_state)br.ReadByte();

            switch (fal)
            {
            case field_access_level.fal_internal: cmn.acc_mod = access_modifer.internal_modifer; break;

            case field_access_level.fal_private: cmn.acc_mod = access_modifer.private_modifer; return(null);

            case field_access_level.fal_protected: cmn.acc_mod = access_modifer.protected_modifer; break;

            case field_access_level.fal_public: cmn.acc_mod = access_modifer.public_modifer; break;
            }

            switch (ps)
            {
            case polymorphic_state.ps_static: cmn.is_static = true; break;

            case polymorphic_state.ps_virtual: cmn.is_virtual = true; break;
            }
            br.ReadInt32(); br.ReadInt32();
            cmn.is_override = br.ReadBoolean() == true;
            cmn.Complete();
            return(cmn);
        }
コード例 #12
0
 private EventInfo[] GetEvents(Type t, field_access_level mod)
 {
     EventInfo[] flds = t.GetEvents(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static);
     List<EventInfo> fields = new List<EventInfo>();
     foreach (EventInfo fi in flds)
     {
         MethodInfo add_meth = fi.GetAddMethod(true);
         if (add_meth != null)
         if (mod == field_access_level.fal_public && add_meth.IsPublic)
             fields.Add(fi);
         else if (mod == field_access_level.fal_protected && (add_meth.IsFamily || add_meth.IsFamilyOrAssembly))
             fields.Add(fi);
     }
     return fields.ToArray();
 }
コード例 #13
0
 private PropertyInfo[] GetProperties(Type t, field_access_level mod)
 {
     PropertyInfo[] flds = t.GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static);
     List<PropertyInfo> fields = new List<PropertyInfo>();
     foreach (PropertyInfo fi in flds)
     {
         MethodInfo get_meth = fi.GetGetMethod(true);
         if (get_meth != null)
         if (mod == field_access_level.fal_public && get_meth.IsPublic)
             fields.Add(fi);
         else if (mod == field_access_level.fal_protected && (get_meth.IsFamily || get_meth.IsFamilyOrAssembly))
             fields.Add(fi);
     }
     return fields.ToArray();
 }
コード例 #14
0
 private MethodInfo[] GetMethods(Type t, field_access_level mod)
 {
     MethodInfo[] mths = t.GetMethods(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static);
     List<MethodInfo> meths = new List<MethodInfo>();
     foreach (MethodInfo mi in mths)
     {
         if (mod == field_access_level.fal_public && mi.IsPublic)
             meths.Add(mi);
         else if (mod == field_access_level.fal_protected && (mi.IsFamily || mi.IsFamilyOrAssembly))
             meths.Add(mi);
     }
     return meths.ToArray();
 }
コード例 #15
0
 private FieldInfo[] GetFields(Type t, field_access_level mod)
 {
     FieldInfo[] flds = t.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static);
     List<FieldInfo> fields = new List<FieldInfo>();
     foreach (FieldInfo fi in flds)
     {
         if (mod == field_access_level.fal_public && fi.IsPublic)
             fields.Add(fi);
         else if (mod == field_access_level.fal_protected && (fi.IsFamily || fi.IsFamilyOrAssembly))
             fields.Add(fi);
     }
     return fields.ToArray();
 }
コード例 #16
0
ファイル: HtmlUtils.cs プロジェクト: lisiynos/pascalabcnet
		public static string get_text_for_access_level(field_access_level fal)
		{
			switch(fal)
			{
				case field_access_level.fal_public : return "public";
				case field_access_level.fal_protected : return "protected";
				case field_access_level.fal_private : return "private";
				case field_access_level.fal_internal : return "internal";
			}
			return "";
		}
コード例 #17
0
ファイル: NETGenerator.cs プロジェクト: CSRedRat/pascalabcnet
 private MethodAttributes ConvertFALToMethodAttributes(field_access_level fal)
 {
     switch (fal)
     {
         case field_access_level.fal_public: return MethodAttributes.Public;
         case field_access_level.fal_internal: return comp_opt.target == TargetType.Dll ? MethodAttributes.Public : MethodAttributes.Assembly;
         case field_access_level.fal_protected: return MethodAttributes.FamORAssem;
         case field_access_level.fal_private: return MethodAttributes.Assembly;
     }
     return MethodAttributes.Assembly;
 }