//===--- PCHWriterStmt.cpp - Statement and Expression Serialization -------===////// The LLVM Compiler Infrastructure//// This file is distributed under the University of Illinois Open Source// License. See LICENSE.TXT for details.////===----------------------------------------------------------------------===////// This file implements serialization for Statements and Expressions.////===----------------------------------------------------------------------===//#include"clang/Frontend/PCHWriter.h"#include"clang/AST/DeclCXX.h"#include"clang/AST/DeclObjC.h"#include"clang/AST/StmtVisitor.h"#include"llvm/Bitcode/BitstreamWriter.h"usingnamespaceclang;//===----------------------------------------------------------------------===//// Statement/expression serialization//===----------------------------------------------------------------------===//namespaceclang{classPCHStmtWriter:publicStmtVisitor<PCHStmtWriter,void>{PCHWriter&Writer;PCHWriter::RecordData&Record;public:pch::StmtCodeCode;PCHStmtWriter(PCHWriter&Writer,PCHWriter::RecordData&Record):Writer(Writer),Record(Record){}voidAddExplicitTemplateArgumentList(constExplicitTemplateArgumentList&Args);voidVisitStmt(Stmt*S);voidVisitNullStmt(NullStmt*S);voidVisitCompoundStmt(CompoundStmt*S);voidVisitSwitchCase(SwitchCase*S);voidVisitCaseStmt(CaseStmt*S);voidVisitDefaultStmt(DefaultStmt*S);voidVisitLabelStmt(LabelStmt*S);voidVisitIfStmt(IfStmt*S);voidVisitSwitchStmt(SwitchStmt*S);voidVisitWhileStmt(WhileStmt*S);voidVisitDoStmt(DoStmt*S);voidVisitForStmt(ForStmt*S);voidVisitGotoStmt(GotoStmt*S);voidVisitIndirectGotoStmt(IndirectGotoStmt*S);voidVisitContinueStmt(ContinueStmt*S);voidVisitBreakStmt(BreakStmt*S);voidVisitReturnStmt(ReturnStmt*S);voidVisitDeclStmt(DeclStmt*S);voidVisitAsmStmt(AsmStmt*S);voidVisitExpr(Expr*E);voidVisitPredefinedExpr(PredefinedExpr*E);voidVisitDeclRefExpr(DeclRefExpr*E);voidVisitIntegerLiteral(IntegerLiteral*E);voidVisitFloatingLiteral(FloatingLiteral*E);voidVisitImaginaryLiteral(ImaginaryLiteral*E);voidVisitStringLiteral(StringLiteral*E);voidVisitCharacterLiteral(CharacterLiteral*E);voidVisitParenExpr(ParenExpr*E);voidVisitParenListExpr(ParenListExpr*E);voidVisitUnaryOperator(UnaryOperator*E);void