<commit_before>//=- SimulVertex.h - Local, Path-Sensitive Supergraph Vertices -*- C++ -*--=//
//
//                     The LLVM Compiler Infrastructure
//
//        This file is distributed under the University of Illinois 
//        Open Source License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
//  This file defines the template class SimulVertex which is used to
//  represent a vertex in the location*state supergraph of an intra-procedural,
//  path-sensitive dataflow analysis.
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_CLANG_ANALYSIS_PS_ANALYSISVERTEX
#define LLVM_CLANG_ANALYSIS_PS_ANALYSISVERTEX

#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/FoldingSet.h"

namespace clang {
 
class ProgramEdge;
  
template <typename StateTy>
class SimulVertex : public FoldingSetNode {
  /// VertexID - A unique ID for the vertex.  This number indicates the
  ///  creation order of vertices, with lower numbers being created first.
  ///  The first created vertex has VertexID == 0.
  const unsigned VertexID;
  
  /// Location - The program edge representing the location in the function body
  ///  that this vertex corresponds to.
  const ProgramEdge& Location;
  
  /// State - The state associated with this vertex. Normally this value
  ///  is immutable, but we anticipate there will be times when algorithms
  ///  that directly manipulate the analysis graph will need to change it.
  StateTy* State;

  /// Predecessors/Successors - Keep track of the predecessor/successor
  /// vertices.
  typedef llvm::SmallVector<1,SimulVertex*> AdjacentVertices;
  AdjacentVertices Preds;
  AdjacentVertices Succs;

public:
  typedef typename StateTy StateTy;
  <commit_msg>Converted Loc back to being of type ProgramEdge. Ultimately I believe we want the ability to refer to the vertex set for all the vertices associated with an edge. This will allow some nice queries over the graph, and (hopefully) will reduce the memory footprint of SimulVertex.<commit_after>//=- SimulVertex.h - Local, Path-Sensitive Supergraph Vertices -*- C++ -*--=//
//
//                     The LLVM Compiler Infrastructure
//
//        This file is distributed under the University of Illinois 
//        Open Source License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
//  This file defines the template class SimulVertex which is used to
//  represent a vertex in the location*state supergraph of an intra-procedural,
//  path-sensitive dataflow analysis.
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_CLANG_ANALYSIS_PS_ANALYSISVERTEX
#define LLVM_CLANG_ANALYSIS_PS_ANALYSISVERTEX

#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/FoldingSet.h"

namespace clang {
 
class ProgramEdge;
  
template <typename StateTy>
class SimulVertex : public FoldingSetNode {
  /// VertexID - A unique ID for the vertex.  This number indicates the
  ///  creation order of vertices, with lower numbers being created first.
  ///  The first created vertex has VertexID == 0.
  const unsigned VertexID;
  
  /// Location - The program edge representing the location in the function body
  ///  that this vertex corresponds to.
  const ProgramEdge Location;
  
  /// State - The state associated with this vertex. Normally this value
  ///  is immutable, but we anticipate there will be times when algorithms
  ///  that directly manipulate the analysis graph will need to change it.
  StateTy* State;

  /// Predecessors/Successors - Keep track of the predecessor/successor
  /// vertices.
  typedef llvm::SmallVector<1,SimulVertex*> AdjacentVertices;
  AdjacentVertices Preds;
  AdjacentVertices Succs;

public:
  typedef typename StateTy StateTy;
  
{'fraction_non_alphanumeric': 0.15406451612903227, 'fraction_numerical': 0.001032258064516129, 'mean_word_length': 2.4240282685512367, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2489024', 'n_tokens_mistral': 1045, 'n_tokens_neox': 1011, 'n_words': 392}