<commit_before>//===-- LLVMUserExpression.h ------------------------------------*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//

#ifndef liblldb_LLVMUserExpression_h
#define liblldb_LLVMUserExpression_h

// C Includes
// C++ Includes
#include <string>
#include <map>
#include <vector>

// Project includes
#include "lldb/Expression/UserExpression.h"

namespace lldb_private
{

//----------------------------------------------------------------------
/// @class LLVMUserExpression LLVMUserExpression.h "lldb/Expression/LLVMUserExpression.h"
/// @brief Encapsulates a one-time expression for use in lldb.
///
/// LLDB uses expressions for various purposes, notably to call functions
/// and as a backend for the expr command.  LLVMUserExpression is a virtual base
/// class that encapsulates the objects needed to parse and JIT an expression.
/// The actual parsing part will be provided by the specific implementations
/// of LLVMUserExpression - which will be vended through the appropriate TypeSystem.
//----------------------------------------------------------------------
class LLVMUserExpression : public UserExpression
{
  public:
      LLVMUserExpression(ExecutionContextScope &exe_scope, const char *expr, const char *expr_prefix,<commit_msg>Fix indentation for commit 263859.<commit_after>//===-- LLVMUserExpression.h ------------------------------------*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//

#ifndef liblldb_LLVMUserExpression_h
#define liblldb_LLVMUserExpression_h

// C Includes
// C++ Includes
#include <string>
#include <map>
#include <vector>

// Other libraries and framework includes
#include "llvm/IR/LegacyPassManager.h"

// Project includes
#include "lldb/Expression/UserExpression.h"

namespace lldb_private
{

//----------------------------------------------------------------------
/// @class LLVMUserExpression LLVMUserExpression.h "lldb/Expression/LLVMUserExpression.h"
/// @brief Encapsulates a one-time expression for use in lldb.
///
/// LLDB uses expressions for various purposes, notably to call functions
/// and as a backend for the expr command.  LLVMUserExpression is a virtual base
/// class that encapsulates the objects needed to parse and JIT an expression.
/// The actual parsing part will be provided by the specific implementations
/// of LLVMUserExpression - which will be vended through the appropriate TypeSystem.
//----------------------------------------------------------------------
class LLVMUserExpression : public UserExpression
{
public:
    // The IRPasses struct is filled in by a runtime after an expression is compiled and can be used to to run
    // fixups/analysis passes as required. EarlyPasses are run on the generated module before lldb runs its own IR
    // fixups and inserts instrumentation code/pointer checks. LatePasses are run after the module has been processed by
    // llvm, before the module is assembled and run in the ThreadPlan.
    struct IRPasses
    {
        IRPasses() : EarlyPasses(nullptr), LatePasses(nullptr){};
        std::shared_ptr<llvm::legacy::PassManager> EarlyPasses;
        std::shared_ptr<llvm::legacy::PassManager> LatePasses;
    };

      LLVMUserExpression(ExecutionContextScope &exe_scope, const char *expr, const char *expr_prefix,
{'fraction_non_alphanumeric': 0.21636952998379255, 'fraction_numerical': 0.0016207455429497568, 'mean_word_length': 2.1461342395921834, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 11, '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': '3621286', 'n_tokens_mistral': 895, 'n_tokens_neox': 880, 'n_words': 334}