本文整理汇总了C#中GetMemberOptions.HasFlag方法的典型用法代码示例。如果您正苦于以下问题:C# GetMemberOptions.HasFlag方法的具体用法?C# GetMemberOptions.HasFlag怎么用?C# GetMemberOptions.HasFlag使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类GetMemberOptions
的用法示例。
在下文中一共展示了GetMemberOptions.HasFlag方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetAllMembers
public override IDictionary<string, IAnalysisSet> GetAllMembers(IModuleContext moduleContext, GetMemberOptions options = GetMemberOptions.None) {
var res = new Dictionary<string, IAnalysisSet>();
if (_instanceAttrs != null) {
foreach (var kvp in _instanceAttrs) {
var types = kvp.Value.TypesNoCopy;
var key = kvp.Key;
kvp.Value.ClearOldValues();
if (kvp.Value.VariableStillExists) {
MergeTypes(res, key, types);
}
}
}
// check and see if it's defined in a base class instance as well...
if (!options.HasFlag(GetMemberOptions.DeclaredOnly)) {
foreach (var b in _classInfo.Bases) {
foreach (var ns in b) {
if (ns.Push()) {
try {
ClassInfo baseClass = ns as ClassInfo;
if (baseClass != null &&
baseClass.Instance._instanceAttrs != null) {
foreach (var kvp in baseClass.Instance._instanceAttrs) {
kvp.Value.ClearOldValues();
if (kvp.Value.VariableStillExists) {
MergeTypes(res, kvp.Key, kvp.Value.TypesNoCopy);
}
}
}
} finally {
ns.Pop();
}
}
}
}
foreach (var classMem in _classInfo.GetAllMembers(moduleContext)) {
MergeTypes(res, classMem.Key, classMem.Value);
}
}
return res;
}
示例2: GetMembers
/// <summary>
/// Evaluates a given expression and returns a list of members which
/// exist in the expression.
///
/// If the expression is an empty string returns all available members
/// at that location.
/// </summary>
/// <param name="exprText">The expression to find members for.</param>
/// </param>
/// <param name="location">
/// The location in the file where the expression should be evaluated.
/// </param>
/// <remarks>New in 2.2</remarks>
public IEnumerable<MemberResult> GetMembers(
string exprText,
SourceLocation location,
GetMemberOptions options = GetMemberOptions.IntersectMultipleResults
)
{
if (exprText.Length == 0) {
return GetAllAvailableMembers(location, options);
}
var scope = FindScope(location);
var privatePrefix = GetPrivatePrefixClassName(scope);
var expr = Statement.GetExpression(GetAstFromText(exprText, privatePrefix).Body);
if (expr is ConstantExpression && ((ConstantExpression)expr).Value is int) {
// no completions on integer ., the user is typing a float
return Enumerable.Empty<MemberResult>();
}
var errorWalker = new ErrorWalker();
expr.Walk(errorWalker);
if (errorWalker.HasError) {
return null;
}
var unit = GetNearestEnclosingAnalysisUnit(scope);
var eval = new ExpressionEvaluator(unit.CopyForEval(), scope, mergeScopes: true);
IAnalysisSet lookup;
if (options.HasFlag(GetMemberOptions.NoMemberRecursion)) {
lookup = eval.EvaluateNoMemberRecursion(expr);
} else {
lookup = eval.Evaluate(expr);
}
return GetMemberResults(lookup, scope, options);
}
示例3: GetAllAvailableMembers
/// <summary>
/// Gets the available names at the given location. This includes
/// built-in variables, global variables, and locals.
/// </summary>
/// <param name="location">
/// The location in the file where the available members should be
/// looked up.
/// </param>
/// <remarks>New in 2.2</remarks>
public IEnumerable<MemberResult> GetAllAvailableMembers(SourceLocation location, GetMemberOptions options = GetMemberOptions.IntersectMultipleResults)
{
var result = new Dictionary<string, IEnumerable<AnalysisValue>>();
// collect builtins
if (!options.HasFlag(GetMemberOptions.ExcludeBuiltins)) {
foreach (var variable in ProjectState.BuiltinModule.GetAllMembers(ProjectState._defaultContext)) {
result[variable.Key] = new List<AnalysisValue>(variable.Value);
}
}
// collect variables from user defined scopes
var scope = FindScope(location);
foreach (var s in scope.EnumerateTowardsGlobal) {
foreach (var kvp in s.GetAllMergedVariables()) {
// deliberately overwrite variables from outer scopes
result[kvp.Key] = new List<AnalysisValue>(kvp.Value.TypesNoCopy);
}
}
var res = MemberDictToResultList(GetPrivatePrefix(scope), options, result);
if (options.Keywords()) {
res = GetKeywordMembers(options, scope).Union(res);
}
return res;
}
示例4: ToCompletions
private AP.Completion[] ToCompletions(MemberResult[] memberResult, GetMemberOptions options) {
AP.Completion[] res = new AP.Completion[memberResult.Length];
for (int i = 0; i < memberResult.Length; i++) {
var member = memberResult[i];
res[i] = new AP.Completion() {
name = member.Name,
completion = member.Completion,
doc = member.Documentation,
memberType = member.MemberType
};
if (options.HasFlag(GetMemberOptions.DetailedInformation)) {
List<AP.CompletionValue> values = new List<AnalysisProtocol.CompletionValue>();
foreach (var value in member.Values) {
var descComps = Array.Empty<AP.DescriptionComponent>();
var hasDesc = value as IHasRichDescription;
if (hasDesc != null) {
descComps = hasDesc
.GetRichDescription()
.Select(kv => new AP.DescriptionComponent(kv.Value, kv.Key))
.ToArray();
}
values.Add(
new AP.CompletionValue() {
description = descComps,
doc = value.Documentation,
locations = value.Locations.Select(x => MakeReference(x, VariableType.Definition)).ToArray()
}
);
}
res[i].detailedValues = values.ToArray();
}
}
return res;
}
示例5: GetAllMembers
public override IDictionary<string, IAnalysisSet> GetAllMembers(IModuleContext moduleContext, GetMemberOptions options = GetMemberOptions.None) {
if (options.HasFlag(GetMemberOptions.DeclaredOnly)) {
return new Dictionary<string, IAnalysisSet>();
}
return _builtinInfo.GetAllMembers(moduleContext, options);
}
示例6: ToCompletions
private AP.Completion[] ToCompletions(MemberResult[] memberResult, GetMemberOptions options) {
AP.Completion[] res = new AP.Completion[memberResult.Length];
for (int i = 0; i < memberResult.Length; i++) {
var member = memberResult[i];
res[i] = new AP.Completion() {
name = member.Name,
completion = member.Completion,
doc = member.Documentation,
memberType = member.MemberType
};
if (options.HasFlag(GetMemberOptions.DetailedInformation)) {
List<AP.CompletionValue> values = new List<AnalysisProtocol.CompletionValue>();
foreach (var value in member.Values) {
var descComps = new List<AP.DescriptionComponent>();
if (value is FunctionInfo) {
var def = ((FunctionInfo)value).FunctionDefinition;
((FunctionInfo)value).GetDescription((text, kind) => {
descComps.Add(new AP.DescriptionComponent(text, kind));
});
} else if (value is ClassInfo) {
FillClassDescription(descComps, ((ClassInfo)value).ClassDefinition);
}
values.Add(
new AP.CompletionValue() {
description = descComps.ToArray(),
doc = value.Documentation,
locations = value.Locations.Select(x => MakeReference(x, VariableType.Definition)).ToArray()
}
);
}
res[i].detailedValues = values.ToArray();
}
}
return res;
}
示例7: GetAllMembers
public override IDictionary<string, IAnalysisSet> GetAllMembers(IModuleContext moduleContext, GetMemberOptions options = GetMemberOptions.None)
{
var mro = ClassInfo._mro;
if (!mro.IsValid) {
return new Dictionary<string, IAnalysisSet>();
}
if (options.HasFlag(GetMemberOptions.DeclaredOnly)) {
return Values.Mro.GetAllMembersOfMro(mro.Skip(1).Take(1), moduleContext, options);
}
// First item in MRO list is always the class itself.
return Values.Mro.GetAllMembersOfMro(mro.Skip(1), moduleContext, options);
}