- Rename `clang/{include,lib,unittests}/Analysis/Scalable/` to
`clang/{include,lib,unittests}/ScalableStaticAnalysisFramework/Core/`
- Update header-guards with their new paths
- Rename the library `clangAnalysisScalable` to
`clangScalableStaticAnalysisFrameworkCore`
- Add a new `Clang_ScalableStaticAnalysisFramework` module to
`module.modulemap`
- Update GN build files, GitHub PR labeler, and documentation
- Harmonise license comments
- Add a missing header-guard
88 lines
3.3 KiB
C++
88 lines
3.3 KiB
C++
//===- ModelStringConversions.h ---------------------------------*- C++ -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// Internal string conversion utilities for SSAF model types.
|
|
//
|
|
// These functions are shared by the model .cpp files (for operator<<) and
|
|
// JSONFormat.cpp (for serialization). They are not part of the public API.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_CLANG_LIB_SCALABLESTATICANALYSISFRAMEWORK_CORE_MODELSTRINGCONVERSIONS_H
|
|
#define LLVM_CLANG_LIB_SCALABLESTATICANALYSISFRAMEWORK_CORE_MODELSTRINGCONVERSIONS_H
|
|
|
|
#include "clang/ScalableStaticAnalysisFramework/Core/Model/BuildNamespace.h"
|
|
#include "clang/ScalableStaticAnalysisFramework/Core/Model/EntityLinkage.h"
|
|
#include "llvm/ADT/StringRef.h"
|
|
#include "llvm/Support/ErrorHandling.h"
|
|
#include <optional>
|
|
|
|
namespace clang::ssaf {
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// BuildNamespaceKind
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
/// Returns the canonical string representation of \p BNK used for
|
|
/// serialization and display (e.g. "CompilationUnit", "LinkUnit").
|
|
inline llvm::StringRef buildNamespaceKindToString(BuildNamespaceKind BNK) {
|
|
switch (BNK) {
|
|
case BuildNamespaceKind::CompilationUnit:
|
|
return "CompilationUnit";
|
|
case BuildNamespaceKind::LinkUnit:
|
|
return "LinkUnit";
|
|
}
|
|
llvm_unreachable("Unhandled BuildNamespaceKind variant");
|
|
}
|
|
|
|
/// Parses a string produced by buildNamespaceKindToString(). Returns
|
|
/// std::nullopt if \p Str does not match any known BuildNamespaceKind value.
|
|
inline std::optional<BuildNamespaceKind>
|
|
buildNamespaceKindFromString(llvm::StringRef Str) {
|
|
if (Str == "CompilationUnit")
|
|
return BuildNamespaceKind::CompilationUnit;
|
|
if (Str == "LinkUnit")
|
|
return BuildNamespaceKind::LinkUnit;
|
|
return std::nullopt;
|
|
}
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// EntityLinkageType
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
/// Returns the canonical string representation of \p LT used for
|
|
/// serialization and display (e.g. "None", "Internal", "External").
|
|
inline llvm::StringRef entityLinkageTypeToString(EntityLinkageType LT) {
|
|
switch (LT) {
|
|
case EntityLinkageType::None:
|
|
return "None";
|
|
case EntityLinkageType::Internal:
|
|
return "Internal";
|
|
case EntityLinkageType::External:
|
|
return "External";
|
|
}
|
|
llvm_unreachable("Unhandled EntityLinkageType variant");
|
|
}
|
|
|
|
/// Parses a string produced by entityLinkageTypeToString(). Returns
|
|
/// std::nullopt if \p Str does not match any known EntityLinkageType value.
|
|
inline std::optional<EntityLinkageType>
|
|
entityLinkageTypeFromString(llvm::StringRef Str) {
|
|
if (Str == "None")
|
|
return EntityLinkageType::None;
|
|
if (Str == "Internal")
|
|
return EntityLinkageType::Internal;
|
|
if (Str == "External")
|
|
return EntityLinkageType::External;
|
|
return std::nullopt;
|
|
}
|
|
|
|
} // namespace clang::ssaf
|
|
|
|
#endif // LLVM_CLANG_LIB_SCALABLESTATICANALYSISFRAMEWORK_CORE_MODELSTRINGCONVERSIONS_H
|