Skip to content

Commit 99ff37a

Browse files
committed
Added access through the RubberduckParserState.
1 parent ad6b9c0 commit 99ff37a

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

Rubberduck.Parsing/VBA/RubberduckParserState.cs

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1090,6 +1090,63 @@ public void RemoveBuiltInDeclarations(IReference reference)
10901090
}
10911091
}
10921092

1093+
public void AddModuleToModuleReference(QualifiedModuleName referencedModule, QualifiedModuleName referencingModule)
1094+
{
1095+
ModuleState referencedModuleState;
1096+
ModuleState referencingModuleState;
1097+
if (!_moduleStates.TryGetValue(referencedModule, out referencedModuleState) || !_moduleStates.TryGetValue(referencingModule, out referencingModuleState))
1098+
{
1099+
return;
1100+
}
1101+
if (referencingModuleState.HasReferenceToModule.Contains(referencedModule))
1102+
{
1103+
return;
1104+
}
1105+
referencedModuleState.IsReferencedByModule.AddOrUpdate(referencingModule, 1, (key,value) => value);
1106+
referencingModuleState.HasReferenceToModule.Add(referencedModule);
1107+
}
1108+
1109+
public void ClearModuleToModuleReferencesFromModule(QualifiedModuleName referencingModule)
1110+
{
1111+
ModuleState referencingModuleState;
1112+
if (!_moduleStates.TryGetValue(referencingModule, out referencingModuleState))
1113+
{
1114+
return;
1115+
}
1116+
1117+
ModuleState referencedModuleState;
1118+
byte dummyOutValue;
1119+
foreach (var referencedModule in referencingModuleState.HasReferenceToModule)
1120+
{
1121+
if (!_moduleStates.TryGetValue(referencedModule,out referencedModuleState))
1122+
{
1123+
continue;
1124+
}
1125+
referencedModuleState.IsReferencedByModule.TryRemove(referencingModule,out dummyOutValue);
1126+
}
1127+
referencingModuleState.RefreshHasReferenceToModule();
1128+
}
1129+
1130+
public HashSet<QualifiedModuleName> ModulesReferencedBy(QualifiedModuleName referencingModule)
1131+
{
1132+
ModuleState referencingModuleState;
1133+
if (!_moduleStates.TryGetValue(referencingModule, out referencingModuleState))
1134+
{
1135+
return new HashSet<QualifiedModuleName>();
1136+
}
1137+
return new HashSet<QualifiedModuleName>(referencingModuleState.HasReferenceToModule);
1138+
}
1139+
1140+
public HashSet<QualifiedModuleName> ModulesReferencing(QualifiedModuleName referencedModule)
1141+
{
1142+
ModuleState referencedModuleState;
1143+
if (!_moduleStates.TryGetValue(referencedModule, out referencedModuleState))
1144+
{
1145+
return new HashSet<QualifiedModuleName>();
1146+
}
1147+
return new HashSet<QualifiedModuleName>(referencedModuleState.IsReferencedByModule.Keys);
1148+
}
1149+
10931150
private bool _isDisposed;
10941151

10951152
public void Dispose()

0 commit comments

Comments
 (0)