本文整理汇总了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();
}
示例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();
}
示例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();
}