//===- AnalysisResults.h - Shared analysis result types ---------*- 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
//
//===----------------------------------------------------------------------===//

#ifndef EXAMPLE_PLUGIN_ANALYSIS_RESULTS_H
#define EXAMPLE_PLUGIN_ANALYSIS_RESULTS_H

#include "clang/ScalableStaticAnalysis/Core/Model/EntityId.h"
#include "clang/ScalableStaticAnalysis/Core/WholeProgramAnalysis/AnalysisName.h"
#include "clang/ScalableStaticAnalysis/Core/WholeProgramAnalysis/AnalysisResult.h"
#include <string>
#include <utility>
#include <vector>

namespace example_plugin {

struct TagsAnalysisResult final : clang::ssaf::AnalysisResult {
  static clang::ssaf::AnalysisName analysisName() {
    return clang::ssaf::AnalysisName("TagsAnalysisResult");
  }

  std::vector<std::string> Tags;
};

struct PairsAnalysisResult final : clang::ssaf::AnalysisResult {
  static clang::ssaf::AnalysisName analysisName() {
    return clang::ssaf::AnalysisName("PairsAnalysisResult");
  }

  std::vector<std::pair<clang::ssaf::EntityId, int>> PairCounts;
};

} // namespace example_plugin

#endif // EXAMPLE_PLUGIN_ANALYSIS_RESULTS_H
