Record Class PreprocessorFlow
- Record Components:
vertices- вершины, достижимые из входа хотя бы в одном из выбранных контекстов.edges- рёбра достижимых переходов.
Фабрика of(ControlFlowGraph, Set) обходит граф от входа, исключая ложные ветки препроцессора.
При неизвестном условии сохраняются обе ветки. Остальные условия не сужаются
дополнительно; рёбра CfgEdgeType.ADJACENT_CODE не участвуют в достижимости.
Исходный граф не изменяется. Вершины и рёбра не копируются и сравниваются по идентичности. Фабрика возвращает неизменяемые множества; прямой конструктор record сохраняет переданные множества без защитного копирования.
-
Constructor Summary
ConstructorsConstructorDescriptionPreprocessorFlow(Set<CfgVertex> vertices, Set<CfgEdge> edges) Creates an instance of aPreprocessorFlowrecord class. -
Method Summary
Modifier and TypeMethodDescriptionedges()Returns the value of theedgesrecord component.final booleanIndicates whether some other object is "equal to" this one.final inthashCode()Returns a hash code value for this object.static PreprocessorFlowof(ControlFlowGraph graph, Set<ExecutionContext> contexts) Построить представление достижимой части графа с учётом препроцессора.static PreprocessorFlowof(ControlFlowGraph graph, Set<ExecutionContext> contexts, FileType fileType) Построить достижимую часть графа по символам выбранного диалекта.final StringtoString()Returns a string representation of this record class.vertices()Returns the value of theverticesrecord component.
-
Constructor Details
-
PreprocessorFlow
-
-
Method Details
-
of
Построить представление достижимой части графа с учётом препроцессора.Условия вычисляются через
PreprocessorContexts. Исключаются и рёбра веток, и недостижимые по оставшимся рёбрам вершины: их операторы не должны влиять на типы.Контексты распространяются по рёбрам от входа: вложенная ветка не может восстановить режим, исключённый внешним условием. Это сохраняет противоречия и при объединении режимов.
- Parameters:
graph- исходный граф с вершинами условий препроцессора.contexts- возможные контексты тела; пустое множество исключает всё тело.- Returns:
- новое представление с неизменяемыми множествами объектов исходного графа.
-
of
public static PreprocessorFlow of(ControlFlowGraph graph, Set<ExecutionContext> contexts, FileType fileType) Построить достижимую часть графа по символам выбранного диалекта. -
toString
-
hashCode
-
equals
Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared withObjects::equals(Object,Object). -
vertices
-
edges
-