1 //===--- ExprCXX.cpp - (C++) Expression AST Node Implementation -----------===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This file implements the subclesses of Expr class declared in ExprCXX.h
12 //===----------------------------------------------------------------------===//
14 #include "clang/AST/ExprCXX.h"
15 using namespace clang;
17 //===----------------------------------------------------------------------===//
18 // Child Iterators for iterating over subexpressions/substatements
19 //===----------------------------------------------------------------------===//
23 Stmt::child_iterator CXXCastExpr::child_begin() {
24 return reinterpret_cast<Stmt**>(&Op);
26 Stmt::child_iterator CXXCastExpr::child_end() {
27 return reinterpret_cast<Stmt**>(&Op)+1;
31 Stmt::child_iterator CXXBoolLiteralExpr::child_begin() {
32 return child_iterator();
34 Stmt::child_iterator CXXBoolLiteralExpr::child_end() {
35 return child_iterator();
39 Stmt::child_iterator CXXThrowExpr::child_begin() {
40 return reinterpret_cast<Stmt**>(&Op);
42 Stmt::child_iterator CXXThrowExpr::child_end() {
43 // If Op is 0, we are processing throw; which has no children.
45 return reinterpret_cast<Stmt**>(&Op)+0;
46 return reinterpret_cast<Stmt**>(&Op)+1;