clang 23.0.0git
SerializationFormat.h
Go to the documentation of this file.
1//===- SerializationFormat.h ------------------------------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// Abstract SerializationFormat interface for reading and writing
10// TUSummary and LinkUnitResolution data.
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef CLANG_ANALYSIS_SCALABLE_SERIALIZATION_SERIALIZATION_FORMAT_H
15#define CLANG_ANALYSIS_SCALABLE_SERIALIZATION_SERIALIZATION_FORMAT_H
16
18#include "llvm/ADT/SmallString.h"
19#include "llvm/ADT/StringRef.h"
20#include <vector>
21
22namespace clang::ssaf {
23
24class EntityId;
25class EntityIdTable;
26class EntityName;
27class TUSummary;
28class TUSummaryData;
29
30/// Abstract base class for serialization formats.
32protected:
33 // Helpers providing access to implementation details of basic data structures
34 // for efficient serialization/deserialization.
37 static const EntityIdTable &getIdTable(const TUSummary &S);
38 static const BuildNamespace &getTUNamespace(const TUSummary &S);
39
41 static llvm::StringRef getBuildNamespaceName(const BuildNamespace &BN);
42 static const std::vector<BuildNamespace> &
44
45 static llvm::StringRef getEntityNameUSR(const EntityName &EN);
47 static const NestedBuildNamespace &
49
50public:
51 virtual ~SerializationFormat() = default;
52
53 virtual TUSummary readTUSummary(llvm::StringRef Path) = 0;
54
55 virtual void writeTUSummary(const TUSummary &Summary,
56 llvm::StringRef OutputDir) = 0;
57};
58
59} // namespace clang::ssaf
60
61#endif // CLANG_ANALYSIS_SCALABLE_SERIALIZATION_SERIALIZATION_FORMAT_H
Represents a single namespace in the build process.
Manages entity name interning and provides efficient EntityId handles.
Lightweight opaque handle representing an entity in an EntityIdTable.
Definition EntityId.h:30
Uniquely identifies an entity in a program.
Definition EntityName.h:27
Represents a hierarchical sequence of build namespaces.
Abstract base class for serialization formats.
virtual TUSummary readTUSummary(llvm::StringRef Path)=0
static const EntityIdTable & getIdTable(const TUSummary &S)
static BuildNamespaceKind getBuildNamespaceKind(const BuildNamespace &BN)
static llvm::StringRef getBuildNamespaceName(const BuildNamespace &BN)
static const std::vector< BuildNamespace > & getNestedBuildNamespaces(const NestedBuildNamespace &NBN)
static BuildNamespace & getTUNamespaceForDeserialization(TUSummary &S)
static EntityIdTable & getIdTableForDeserialization(TUSummary &S)
static const NestedBuildNamespace & getEntityNameNamespace(const EntityName &EN)
static const BuildNamespace & getTUNamespace(const TUSummary &S)
virtual ~SerializationFormat()=default
static llvm::StringRef getEntityNameUSR(const EntityName &EN)
static const llvm::SmallString< 16 > & getEntityNameSuffix(const EntityName &EN)
virtual void writeTUSummary(const TUSummary &Summary, llvm::StringRef OutputDir)=0
Data extracted for a given translation unit and for a given set of analyses.
Definition TUSummary.h:23