//===- PreprocessorTracker.h - Tracks preprocessor activities -*- 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 // //===--------------------------------------------------------------------===// /// /// \file /// Macro expansions and preprocessor conditional consistency checker. /// //===--------------------------------------------------------------------===// #ifndef MODULARIZE_PREPROCESSOR_TRACKER_H #define MODULARIZE_PREPROCESSOR_TRACKER_H #include "clang/Lex/Preprocessor.h" namespace Modularize { /// Preprocessor tracker for modularize. /// /// The PreprocessorTracker class defines an API for /// checking macro expansions and preprocessor conditional expressions /// in a header file for consistency among one or more compilations of /// the header in a #include scenario. This is for helping a user /// find which macro expansions or conditionals might be problematic with /// respect to using the headers in the modules scenario, because they /// evaluate to different values depending on how or where a header /// is included. /// /// The handlePreprocessorEntry function implementation will register /// a PPCallbacks object in the given Preprocessor object. The calls to /// the callbacks will collect information about the macro expansions /// and preprocessor conditionals encountered, for later analysis and /// reporting of inconsistencies between runs performed by calls to /// the reportInconsistentMacros and reportInconsistentConditionals /// functions respectively. The handlePreprocessorExit informs the /// implementation that a preprocessing session is complete, allowing /// it to do any needed compilation completion activities in the checker. class PreprocessorTracker { … }; } // end namespace Modularize #endif