clang API Documentation
Represents a C99 designated initializer expression. More...
#include <Expr.h>


Classes | |
| struct | ArrayOrRangeDesignator |
| An array or GNU array-range designator, e.g., "[9]" or "[10..15]". More... | |
| class | Designator |
| Represents a single C99 designator. More... | |
| struct | FieldDesignator |
| A field designator, e.g., ".x". More... | |
Public Types | |
| typedef Designator * | designators_iterator |
| typedef const Designator * | const_designators_iterator |
| typedef std::reverse_iterator < designators_iterator > | reverse_designators_iterator |
| typedef std::reverse_iterator < const_designators_iterator > | const_reverse_designators_iterator |
Public Member Functions | |
| unsigned | size () const |
| Returns the number of designators in this initializer. | |
| designators_iterator | designators_begin () |
| designators_iterator | designators_end () |
| const_designators_iterator | designators_begin () const |
| const_designators_iterator | designators_end () const |
| reverse_designators_iterator | designators_rbegin () |
| reverse_designators_iterator | designators_rend () |
| const_reverse_designators_iterator | designators_rbegin () const |
| const_reverse_designators_iterator | designators_rend () const |
| Designator * | getDesignator (unsigned Idx) |
| void | setDesignators (ASTContext &C, const Designator *Desigs, unsigned NumDesigs) |
| Expr * | getArrayIndex (const Designator &D) |
| Expr * | getArrayRangeStart (const Designator &D) |
| Expr * | getArrayRangeEnd (const Designator &D) |
| SourceLocation | getEqualOrColonLoc () const |
| Retrieve the location of the '=' that precedes the initializer value itself, if present. | |
| void | setEqualOrColonLoc (SourceLocation L) |
| bool | usesGNUSyntax () const |
| Determines whether this designated initializer used the deprecated GNU syntax for designated initializers. | |
| void | setGNUSyntax (bool GNU) |
| Expr * | getInit () const |
| Retrieve the initializer value. | |
| void | setInit (Expr *init) |
| unsigned | getNumSubExprs () const |
| Retrieve the total number of subexpressions in this designated initializer expression, including the actual initialized value and any expressions that occur within array and array-range designators. | |
| Expr * | getSubExpr (unsigned Idx) |
| void | setSubExpr (unsigned Idx, Expr *E) |
| void | ExpandDesignator (ASTContext &C, unsigned Idx, const Designator *First, const Designator *Last) |
Replaces the designator at index Idx with the series of designators in [First, Last). | |
| SourceRange | getDesignatorsSourceRange () const |
| SourceRange | getSourceRange () const LLVM_READONLY |
| child_range | children () |
Static Public Member Functions | |
| static DesignatedInitExpr * | Create (ASTContext &C, Designator *Designators, unsigned NumDesignators, Expr **IndexExprs, unsigned NumIndexExprs, SourceLocation EqualOrColonLoc, bool GNUSyntax, Expr *Init) |
| static DesignatedInitExpr * | CreateEmpty (ASTContext &C, unsigned NumIndexExprs) |
| static bool | classof (const Stmt *T) |
| static bool | classof (const DesignatedInitExpr *) |
Represents a C99 designated initializer expression.
A designated initializer expression (C99 6.7.8) contains one or more designators (which can be field designators, array designators, or GNU array-range designators) followed by an expression that initializes the field or element(s) that the designators refer to. For example, given:
struct point { double x; double y; }; struct point ptarray[10] = { [2].y = 1.0, [2].x = 2.0, [0].x = 1.0 };
The InitListExpr contains three DesignatedInitExprs, the first of which covers [2].y=1.0. This DesignatedInitExpr will have two designators, one array designator for [2] followed by one field designator for .y. The initalization expression will be 1.0.
| typedef const Designator* clang::DesignatedInitExpr::const_designators_iterator |
| typedef std::reverse_iterator<const_designators_iterator> clang::DesignatedInitExpr::const_reverse_designators_iterator |
| typedef std::reverse_iterator<designators_iterator> clang::DesignatedInitExpr::reverse_designators_iterator |
| child_range clang::DesignatedInitExpr::children | ( | ) | [inline] |
Reimplemented from clang::Stmt.
| static bool clang::DesignatedInitExpr::classof | ( | const Stmt * | T | ) | [inline, static] |
Reimplemented from clang::Expr.
| static bool clang::DesignatedInitExpr::classof | ( | const DesignatedInitExpr * | ) | [inline, static] |
| DesignatedInitExpr * DesignatedInitExpr::Create | ( | ASTContext & | C, |
| Designator * | Designators, | ||
| unsigned | NumDesignators, | ||
| Expr ** | IndexExprs, | ||
| unsigned | NumIndexExprs, | ||
| SourceLocation | EqualOrColonLoc, | ||
| bool | GNUSyntax, | ||
| Expr * | Init | ||
| ) | [static] |
Definition at line 3165 of file Expr.cpp.
References clang::ASTContext::Allocate(), and clang::ASTContext::VoidTy.
Referenced by clang::Sema::ActOnDesignatedInitializer().
| DesignatedInitExpr * DesignatedInitExpr::CreateEmpty | ( | ASTContext & | C, |
| unsigned | NumIndexExprs | ||
| ) | [static] |
Definition at line 3177 of file Expr.cpp.
References clang::ASTContext::Allocate().
| designators_iterator clang::DesignatedInitExpr::designators_begin | ( | ) | [inline] |
Definition at line 3885 of file Expr.h.
Referenced by CloneDesignatedInitExpr(), designators_rend(), getDesignator(), and getSourceRange().
| const_designators_iterator clang::DesignatedInitExpr::designators_begin | ( | ) | const [inline] |
| designators_iterator clang::DesignatedInitExpr::designators_end | ( | ) | [inline] |
Definition at line 3886 of file Expr.h.
Referenced by designators_rbegin().
| const_designators_iterator clang::DesignatedInitExpr::designators_end | ( | ) | const [inline] |
| reverse_designators_iterator clang::DesignatedInitExpr::designators_rbegin | ( | ) | [inline] |
Definition at line 3898 of file Expr.h.
References designators_end().
| const_reverse_designators_iterator clang::DesignatedInitExpr::designators_rbegin | ( | ) | const [inline] |
Definition at line 3907 of file Expr.h.
References designators_end().
| reverse_designators_iterator clang::DesignatedInitExpr::designators_rend | ( | ) | [inline] |
Definition at line 3901 of file Expr.h.
References designators_begin().
| const_reverse_designators_iterator clang::DesignatedInitExpr::designators_rend | ( | ) | const [inline] |
Definition at line 3910 of file Expr.h.
References designators_begin().
| void DesignatedInitExpr::ExpandDesignator | ( | ASTContext & | C, |
| unsigned | Idx, | ||
| const Designator * | First, | ||
| const Designator * | Last | ||
| ) |
Replaces the designator at index Idx with the series of designators in [First, Last).
Definition at line 3244 of file Expr.cpp.
Referenced by ExpandAnonymousFieldDesignator().
| Expr * DesignatedInitExpr::getArrayIndex | ( | const Designator & | D | ) |
Definition at line 3216 of file Expr.cpp.
References clang::DesignatedInitExpr::Designator::ArrayOrRange, and clang::DesignatedInitExpr::ArrayOrRangeDesignator::Index.
| Expr * DesignatedInitExpr::getArrayRangeEnd | ( | const Designator & | D | ) |
Definition at line 3233 of file Expr.cpp.
References clang::DesignatedInitExpr::Designator::ArrayOrRange, and clang::DesignatedInitExpr::ArrayOrRangeDesignator::Index.
| Expr * DesignatedInitExpr::getArrayRangeStart | ( | const Designator & | D | ) |
Definition at line 3224 of file Expr.cpp.
References clang::DesignatedInitExpr::Designator::ArrayOrRange, and clang::DesignatedInitExpr::ArrayOrRangeDesignator::Index.
| Designator* clang::DesignatedInitExpr::getDesignator | ( | unsigned | Idx | ) | [inline] |
Definition at line 3914 of file Expr.h.
References designators_begin().
Referenced by ExpandAnonymousFieldDesignator(), and getDesignatorsSourceRange().
| SourceRange DesignatedInitExpr::getDesignatorsSourceRange | ( | ) | const |
Definition at line 3193 of file Expr.cpp.
References getDesignator(), clang::DesignatedInitExpr::Designator::getEndLocation(), clang::DesignatedInitExpr::Designator::getSourceRange(), clang::DesignatedInitExpr::Designator::getStartLocation(), and size().
| SourceLocation clang::DesignatedInitExpr::getEqualOrColonLoc | ( | ) | const [inline] |
Retrieve the location of the '=' that precedes the initializer value itself, if present.
Definition at line 3925 of file Expr.h.
Referenced by CloneDesignatedInitExpr().
| Expr* clang::DesignatedInitExpr::getInit | ( | ) | const [inline] |
Retrieve the initializer value.
Definition at line 3934 of file Expr.h.
References clang::Stmt::child_begin().
Referenced by CloneDesignatedInitExpr(), getSourceRange(), and clang::EvaluatedExprVisitor< ImplClass >::VisitDesignatedInitExpr().
| unsigned clang::DesignatedInitExpr::getNumSubExprs | ( | ) | const [inline] |
Retrieve the total number of subexpressions in this designated initializer expression, including the actual initialized value and any expressions that occur within array and array-range designators.
Definition at line 3946 of file Expr.h.
Referenced by CloneDesignatedInitExpr().
| SourceRange DesignatedInitExpr::getSourceRange | ( | ) | const |
SourceLocation tokens are not useful in isolation - they are low level value objects created/interpreted by SourceManager. We assume AST clients will have a pointer to the respective SourceManager.
Reimplemented from clang::Stmt.
Definition at line 3201 of file Expr.cpp.
References clang::DesignatedInitExpr::Designator::ArrayOrRange, designators_begin(), clang::DesignatedInitExpr::FieldDesignator::DotLoc, clang::DesignatedInitExpr::Designator::Field, clang::DesignatedInitExpr::FieldDesignator::FieldLoc, clang::SourceLocation::getFromRawEncoding(), getInit(), clang::DesignatedInitExpr::Designator::isFieldDesignator(), and clang::DesignatedInitExpr::ArrayOrRangeDesignator::LBracketLoc.
Referenced by clang::Sema::ActOnDesignatedInitializer().
| Expr* clang::DesignatedInitExpr::getSubExpr | ( | unsigned | Idx | ) | [inline] |
Definition at line 3948 of file Expr.h.
Referenced by CloneDesignatedInitExpr().
| void DesignatedInitExpr::setDesignators | ( | ASTContext & | C, |
| const Designator * | Desigs, | ||
| unsigned | NumDesigs | ||
| ) |
| void clang::DesignatedInitExpr::setEqualOrColonLoc | ( | SourceLocation | L | ) | [inline] |
| void clang::DesignatedInitExpr::setGNUSyntax | ( | bool | GNU | ) | [inline] |
| void clang::DesignatedInitExpr::setInit | ( | Expr * | init | ) | [inline] |
Definition at line 3938 of file Expr.h.
References clang::Stmt::child_begin().
| void clang::DesignatedInitExpr::setSubExpr | ( | unsigned | Idx, |
| Expr * | E | ||
| ) | [inline] |
| unsigned clang::DesignatedInitExpr::size | ( | ) | const [inline] |
Returns the number of designators in this initializer.
Definition at line 3881 of file Expr.h.
Referenced by CloneDesignatedInitExpr(), and getDesignatorsSourceRange().
| bool clang::DesignatedInitExpr::usesGNUSyntax | ( | ) | const [inline] |
Determines whether this designated initializer used the deprecated GNU syntax for designated initializers.
Definition at line 3930 of file Expr.h.
Referenced by CloneDesignatedInitExpr().