#ifndef LLVM_IR_PASSINSTRUMENTATION_LC_CALLBACK_H
#define LLVM_IR_PASSINSTRUMENTATION_LC_CALLBACK_H

#include "llvm/ADT/Any.h"
#include "llvm/ADT/FunctionExtras.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringMap.h"
#include <type_traits>
#include <vector>
namespace llvm {


class StringRef;


class LCCallback{
  SmallVector<StringRef>  functionPassesToDisableByName_LC;
  SmallVector<StringRef>  loopPassesToDisableByName_LC;
  SmallVector<StringRef>  modulePassesToDisableByName_LC;
  void createPassesToFilter();
  public:
   LCCallback();
   bool filterPasses(StringRef Pass, Any IR) const ;
   bool filterFunctionPasses(StringRef Pass, Any IR) const;
  //  bool filterModulePasses(StringRef Pass, Any IR) const {};
  //  bool filterLoopPasses(StringRef Pass, Any IR) const {};
};
} // namespace llvm

#endif
