//===--- ASTWriterStmt.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/Serialization/ASTWriter.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{classASTStmtWriter:publicStmtVisitor<ASTStmtWriter,void>{ASTWriter&Writer;ASTWriter::RecordData&Record;public:serialization::StmtCodeCode;ASTStmtWriter(ASTWriter&Writer,ASTWriter::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