10b57cec5SDimitry Andric //===-- ExpressionSourceCode.h ----------------------------------*- C++ -*-===// 20b57cec5SDimitry Andric // 30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 60b57cec5SDimitry Andric // 70b57cec5SDimitry Andric //===----------------------------------------------------------------------===// 80b57cec5SDimitry Andric 9*5ffd83dbSDimitry Andric #ifndef LLDB_EXPRESSION_EXPRESSIONSOURCECODE_H 10*5ffd83dbSDimitry Andric #define LLDB_EXPRESSION_EXPRESSIONSOURCECODE_H 110b57cec5SDimitry Andric 120b57cec5SDimitry Andric #include "lldb/lldb-enumerations.h" 130b57cec5SDimitry Andric #include "llvm/ADT/ArrayRef.h" 14480093f4SDimitry Andric #include "llvm/ADT/StringRef.h" 150b57cec5SDimitry Andric 160b57cec5SDimitry Andric #include <string> 170b57cec5SDimitry Andric 180b57cec5SDimitry Andric namespace lldb_private { 190b57cec5SDimitry Andric 200b57cec5SDimitry Andric class ExpressionSourceCode { 219dba64beSDimitry Andric protected: 229dba64beSDimitry Andric enum Wrapping : bool { 239dba64beSDimitry Andric Wrap = true, 249dba64beSDimitry Andric NoWrap = false, 259dba64beSDimitry Andric }; 269dba64beSDimitry Andric 270b57cec5SDimitry Andric public: NeedsWrapping()289dba64beSDimitry Andric bool NeedsWrapping() const { return m_wrap == Wrap; } 290b57cec5SDimitry Andric GetName()300b57cec5SDimitry Andric const char *GetName() const { return m_name.c_str(); } 310b57cec5SDimitry Andric 320b57cec5SDimitry Andric protected: ExpressionSourceCode(llvm::StringRef name,llvm::StringRef prefix,llvm::StringRef body,Wrapping wrap)339dba64beSDimitry Andric ExpressionSourceCode(llvm::StringRef name, llvm::StringRef prefix, 349dba64beSDimitry Andric llvm::StringRef body, Wrapping wrap) 359dba64beSDimitry Andric : m_name(name.str()), m_prefix(prefix.str()), m_body(body.str()), 369dba64beSDimitry Andric m_wrap(wrap) {} 370b57cec5SDimitry Andric 380b57cec5SDimitry Andric std::string m_name; 390b57cec5SDimitry Andric std::string m_prefix; 400b57cec5SDimitry Andric std::string m_body; 419dba64beSDimitry Andric Wrapping m_wrap; 420b57cec5SDimitry Andric }; 430b57cec5SDimitry Andric 440b57cec5SDimitry Andric } // namespace lldb_private 450b57cec5SDimitry Andric 460b57cec5SDimitry Andric #endif 47