/// <summary> /// Gets all members of this class that are not inherited from its base classes. /// </summary> public IDictionary <string, IAnalysisSet> GetAllImmediateMembers(IModuleContext moduleContext, GetMemberOptions options) { var result = new Dictionary <string, IAnalysisSet>(Scope.VariableCount); foreach (var v in Scope.AllVariables) { if (!options.ForEval()) { v.Value.ClearOldValues(); } if (v.Value.VariableStillExists) { result[v.Key] = v.Value.Types; } } if (!options.HasFlag(GetMemberOptions.DeclaredOnly)) { if (!result.ContainsKey("__doc__")) { result["__doc__"] = GetObjectMember(moduleContext, "__doc__"); } if (!result.ContainsKey("__class__")) { result["__class__"] = GetObjectMember(moduleContext, "__class__"); } } return(result); }
public override IDictionary<string, IAnalysisSet> GetAllMembers(IModuleContext moduleContext, GetMemberOptions options = GetMemberOptions.None) { var res = new Dictionary<string, IAnalysisSet>(); foreach (var kvp in _scope.AllVariables) { if (!options.ForEval()) { kvp.Value.ClearOldValues(); } if (kvp.Value._dependencies.Count > 0) { var types = kvp.Value.Types; if (types.Count > 0) { res[kvp.Key] = types; } } } return res; }
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; if (!options.ForEval()) { 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) { if (!options.ForEval()) { kvp.Value.ClearOldValues(); } if (kvp.Value.VariableStillExists) { MergeTypes(res, kvp.Key, kvp.Value.TypesNoCopy); } } } } finally { ns.Pop(); } } } } foreach (var classMem in _classInfo.GetAllMembers(moduleContext, options)) { MergeTypes(res, classMem.Key, classMem.Value); } } return(res); }