当前位置: 首页>>代码示例>>C#>>正文


C# ExpressionVisitor.CheckPrivateForBaseAccess方法代码示例

本文整理汇总了C#中CodeCompletion.ExpressionVisitor.CheckPrivateForBaseAccess方法的典型用法代码示例。如果您正苦于以下问题:C# ExpressionVisitor.CheckPrivateForBaseAccess方法的具体用法?C# ExpressionVisitor.CheckPrivateForBaseAccess怎么用?C# ExpressionVisitor.CheckPrivateForBaseAccess使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在CodeCompletion.ExpressionVisitor的用法示例。


在下文中一共展示了ExpressionVisitor.CheckPrivateForBaseAccess方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: GetNames

        //poluchit imena s klassa s kluchevym slovom
        //vyzyvaetsja, kogda procedure TClass. tut vse ekzemplarnye i staticheskie
        public virtual SymInfo[] GetNames(ExpressionVisitor ev, PascalABCCompiler.Parsers.KeywordKind keyword, bool called_in_base)
        {
            List<SymInfo> lst = new List<SymInfo>();
            foreach (SymScope ss in members)
            {
                if (!ss.si.name.StartsWith("$"))
                {
                    if (keyword != PascalABCCompiler.Parsers.KeywordKind.Function && keyword != PascalABCCompiler.Parsers.KeywordKind.Constructor && keyword != PascalABCCompiler.Parsers.KeywordKind.Destructor/*!(ev.entry_scope is InterfaceUnitScope) && !(ev.entry_scope is ImplementationUnitScope)*/)
                    {
                        if (ss.si.acc_mod == access_modifer.private_modifer)
                        {
                            if (ss.is_static && ev.CheckPrivateForBaseAccess(ev.entry_scope, this))
                                lst.Add(ss.si);
                        }
                        else if (ss.si.acc_mod == access_modifer.protected_modifer)
                        {
                            if (ss.is_static && ev.CheckForBaseAccess(ev.entry_scope, this))
                                lst.Add(ss.si);
                        }
                        else
                            if (ss.is_static)
                                lst.Add(ss.si);
                            else if ((ss is ProcScope) && (ss as ProcScope).IsConstructor())
                                if (!((ss as ProcScope).parameters == null || (ss as ProcScope).parameters.Count == 0) || !called_in_base)
                                    lst.Add(ss.si);
                    }
                    else
                    {
                        if (ss is ProcScope && !(ss as ProcScope).already_defined)
                        {
                            if (keyword == PascalABCCompiler.Parsers.KeywordKind.Function || keyword == PascalABCCompiler.Parsers.KeywordKind.Destructor)
                                lst.Add(ss.si);
                            else if ((ss as ProcScope).IsConstructor())
                                lst.Add(ss.si);
                        }
                    }
                    if (!ss.si.has_doc)
                        UnitDocCache.AddDescribeToComplete(ss);
                }
            }

            if (baseScope != null && keyword != PascalABCCompiler.Parsers.KeywordKind.Constructor && keyword != PascalABCCompiler.Parsers.KeywordKind.Destructor)
                lst.AddRange(baseScope.GetNames(ev, keyword, true));
            /*if (topScope != null)
                lst.AddRange(topScope.GetNames());*/
            return lst.ToArray();
        }
开发者ID:Slav76,项目名称:pascalabcnet,代码行数:49,代码来源:SymTable.cs

示例2: GetNamesAsInObject

 //poluchit vse imena kak po tochke iz objektnoj peremennoj, sootv. ekzemplarnye chleny klassa i nadklassov
 public override SymInfo[] GetNamesAsInObject(ExpressionVisitor ev)
 {
     //if (original_type != null)
     //	return original_type.GetNamesAsInObject(ev);
     List<SymInfo> lst = new List<SymInfo>();
     foreach (SymScope ss in members)
     {
         if (ss is ProcScope && (ss as ProcScope).IsConstructor()) continue;
         if (!ss.si.name.StartsWith("$") && !ss.is_static && !(ss is TemplateParameterScope))
         {
             if (ss.si.acc_mod == access_modifer.private_modifer)
             {
                 if (ev.CheckPrivateForBaseAccess(ev.entry_scope, this))
                     lst.Add(ss.si);
             }
             else if (ss.si.acc_mod == access_modifer.protected_modifer)
             {
                 if (ev.CheckForBaseAccess(ev.entry_scope, this))
                     lst.Add(ss.si);
             }
             else
                 lst.Add(ss.si);
             if (!ss.si.has_doc)
                 UnitDocCache.AddDescribeToComplete(ss);
         }
     }
     if (this.documentation != null && this.documentation.Contains("!#") && baseScope is CompiledScope)
         return lst.ToArray();
     if (baseScope != null)
     {
         lst.AddRange(baseScope.GetNamesAsInObject(ev));
     }
     if (implemented_interfaces != null && !(this is ArrayScope && (this as ArrayScope).IsMultiDynArray))
         foreach (TypeScope ts in implemented_interfaces)
             lst.AddRange(ts.GetNamesAsInObject(ev));
     return lst.ToArray();
 }
开发者ID:Slav76,项目名称:pascalabcnet,代码行数:38,代码来源:SymTable.cs

示例3: GetNamesInAllTopScopes

        //esli naprimer nazhali ctrl-probel(all_name = treu) ili shift-probel (all_names = false)
        //visitor vsegda nuzhen tak kak hranit scope, gde my nazhali
        public override SymInfo[] GetNamesInAllTopScopes(bool all_names, ExpressionVisitor ev, bool is_static)
        {
            List<SymInfo> lst = new List<SymInfo>();
            foreach (SymScope ss in members)
            {
                if (ss is ProcScope && (ss as ProcScope).IsConstructor())
                    continue;
                if (!ss.si.name.StartsWith("$"))
                {
                    if (ss.si.acc_mod == access_modifer.private_modifer)
                    {
                        if (ev.CheckPrivateForBaseAccess(ev.entry_scope, this))
                            if (!is_static) lst.Add(ss.si);
                            else if (ss.is_static) lst.Add(ss.si);
                    }
                    else if (ss.si.acc_mod == access_modifer.protected_modifer)
                    {
                        if (ev.CheckForBaseAccess(ev.entry_scope, this))
                            if (!is_static) lst.Add(ss.si);
                            else if (ss.is_static) lst.Add(ss.si);
                    }
                    else
                        if (!is_static) lst.Add(ss.si);
                        else if (ss.is_static) lst.Add(ss.si);
                    if (!ss.si.has_doc)
                        UnitDocCache.AddDescribeToComplete(ss);
                }
            }
            if (baseScope != null)
                lst.AddRange(baseScope.GetNamesAsInBaseClass(ev, is_static));
            if (topScope != null)
                lst.AddRange(topScope.GetNamesInAllTopScopes(all_names, ev, is_static));

            return lst.ToArray();
        }
开发者ID:Slav76,项目名称:pascalabcnet,代码行数:37,代码来源:SymTable.cs


注:本文中的CodeCompletion.ExpressionVisitor.CheckPrivateForBaseAccess方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。