//= OSLog.h - Analysis of calls to os_log builtins --*- 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 // //===----------------------------------------------------------------------===// // // This file defines APIs for determining the layout of the data buffer for // os_log() and os_trace(). // //===----------------------------------------------------------------------===// #ifndef LLVM_CLANG_AST_OSLOG_H #define LLVM_CLANG_AST_OSLOG_H #include "clang/AST/ASTContext.h" #include "clang/AST/Expr.h" namespace clang { namespace analyze_os_log { /// An OSLogBufferItem represents a single item in the data written by a call /// to os_log() or os_trace(). class OSLogBufferItem { … }; class OSLogBufferLayout { … }; // Given a call 'E' to one of the builtins __builtin_os_log_format() or // __builtin_os_log_format_buffer_size(), compute the layout of the buffer that // the call will write into and store it in 'layout'. Returns 'false' if there // was some error encountered while computing the layout, and 'true' otherwise. bool computeOSLogBufferLayout(clang::ASTContext &Ctx, const clang::CallExpr *E, OSLogBufferLayout &layout); } // namespace analyze_os_log } // namespace clang #endif