clang API Documentation

Classes | Public Types | Public Member Functions | Static Public Member Functions
clang::DesignatedInitExpr Class Reference

Represents a C99 designated initializer expression. More...

#include <Expr.h>

Inheritance diagram for clang::DesignatedInitExpr:
Inheritance graph
[legend]
Collaboration diagram for clang::DesignatedInitExpr:
Collaboration graph
[legend]

List of all members.

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 Designatordesignators_iterator
typedef const Designatorconst_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
DesignatorgetDesignator (unsigned Idx)
void setDesignators (ASTContext &C, const Designator *Desigs, unsigned NumDesigs)
ExprgetArrayIndex (const Designator &D)
ExprgetArrayRangeStart (const Designator &D)
ExprgetArrayRangeEnd (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)
ExprgetInit () 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.
ExprgetSubExpr (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 DesignatedInitExprCreate (ASTContext &C, Designator *Designators, unsigned NumDesignators, Expr **IndexExprs, unsigned NumIndexExprs, SourceLocation EqualOrColonLoc, bool GNUSyntax, Expr *Init)
static DesignatedInitExprCreateEmpty (ASTContext &C, unsigned NumIndexExprs)
static bool classof (const Stmt *T)
static bool classof (const DesignatedInitExpr *)

Detailed Description

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.

Definition at line 3682 of file Expr.h.


Member Typedef Documentation

Definition at line 3890 of file Expr.h.

Definition at line 3906 of file Expr.h.

Definition at line 3884 of file Expr.h.

Definition at line 3897 of file Expr.h.


Member Function Documentation

child_range clang::DesignatedInitExpr::children ( ) [inline]

Reimplemented from clang::Stmt.

Definition at line 3977 of file Expr.h.

static bool clang::DesignatedInitExpr::classof ( const Stmt T) [inline, static]

Reimplemented from clang::Expr.

Definition at line 3971 of file Expr.h.

static bool clang::DesignatedInitExpr::classof ( const DesignatedInitExpr ) [inline, static]

Definition at line 3974 of file Expr.h.

DesignatedInitExpr * DesignatedInitExpr::Create ( ASTContext C,
Designator Designators,
unsigned  NumDesignators,
Expr **  IndexExprs,
unsigned  NumIndexExprs,
SourceLocation  EqualOrColonLoc,
bool  GNUSyntax,
Expr Init 
) [static]
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]

Definition at line 3891 of file Expr.h.

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]

Definition at line 3892 of file Expr.h.

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)
Expr * DesignatedInitExpr::getArrayRangeEnd ( const Designator D)
Expr * DesignatedInitExpr::getArrayRangeStart ( const Designator D)
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
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
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 
)

Definition at line 3184 of file Expr.cpp.

void clang::DesignatedInitExpr::setEqualOrColonLoc ( SourceLocation  L) [inline]

Definition at line 3926 of file Expr.h.

void clang::DesignatedInitExpr::setGNUSyntax ( bool  GNU) [inline]

Definition at line 3931 of file Expr.h.

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]

Definition at line 3955 of file Expr.h.

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().


The documentation for this class was generated from the following files: