class DesignatedInitExpr

Declaration

class DesignatedInitExpr : public Expr, private TrailingObjects { /* full declaration omitted */ };

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: The InitListExpr contains three DesignatedInitExprs, the first of which covers @c [2].y=1.0. This DesignatedInitExpr will have two designators, one array designator for @c [2] followed by one field designator for @c .y. The initialization expression will be 1.0.

Declared at: clang/include/clang/AST/Expr.h:5029

Inherits from: Expr, TrailingObjects

Member Variables

private clang::SourceLocation EqualOrColonLoc
The location of the '=' or ':' prior to the actual initializer expression.
private unsigned int GNUSyntax
Whether this designated initializer used the GNU deprecated syntax rather than the C99 '=' syntax.
private unsigned int NumDesignators
The number of designators in this initializer expression.
private unsigned int NumSubExprs
The number of subexpressions of this initializer expression, which contains both the initializer and any additional expressions used by array and array-range designators.
private clang::DesignatedInitExpr::Designator* Designators
The designators in this designated initialization expression.

Inherited from Stmt:

protected

Method Overview

  • public static clang::DesignatedInitExpr * Create(const clang::ASTContext & C, llvm::ArrayRef<Designator> Designators, ArrayRef<clang::Expr *> IndexExprs, clang::SourceLocation EqualOrColonLoc, bool GNUSyntax, clang::Expr * Init)
  • public static clang::DesignatedInitExpr * CreateEmpty(const clang::ASTContext & C, unsigned int NumIndexExprs)
  • private DesignatedInitExpr(unsigned int NumSubExprs)
  • private DesignatedInitExpr(const clang::ASTContext & C, clang::QualType Ty, llvm::ArrayRef<Designator> Designators, clang::SourceLocation EqualOrColonLoc, bool GNUSyntax, ArrayRef<clang::Expr *> IndexExprs, clang::Expr * Init)
  • public void ExpandDesignator(const clang::ASTContext & C, unsigned int Idx, const clang::DesignatedInitExpr::Designator * First, const clang::DesignatedInitExpr::Designator * Last)
  • public clang::Stmt::const_child_range children() const
  • public clang::Stmt::child_range children()
  • public static bool classof(const clang::Stmt * T)
  • public llvm::MutableArrayRef<Designator> designators()
  • public llvm::ArrayRef<Designator> designators() const
  • public clang::Expr * getArrayIndex(const clang::DesignatedInitExpr::Designator & D) const
  • public clang::Expr * getArrayRangeEnd(const clang::DesignatedInitExpr::Designator & D) const
  • public clang::Expr * getArrayRangeStart(const clang::DesignatedInitExpr::Designator & D) const
  • public clang::SourceLocation getBeginLoc() const
  • public const clang::DesignatedInitExpr::Designator * getDesignator(unsigned int Idx) const
  • public clang::DesignatedInitExpr::Designator * getDesignator(unsigned int Idx)
  • public clang::SourceRange getDesignatorsSourceRange() const
  • public clang::SourceLocation getEndLoc() const
  • public clang::SourceLocation getEqualOrColonLoc() const
  • public clang::Expr * getInit() const
  • public unsigned int getNumSubExprs() const
  • public clang::Expr * getSubExpr(unsigned int Idx) const
  • public bool isDirectInit() const
  • public void setDesignators(const clang::ASTContext & C, const clang::DesignatedInitExpr::Designator * Desigs, unsigned int NumDesigs)
  • public void setEqualOrColonLoc(clang::SourceLocation L)
  • public void setGNUSyntax(bool GNU)
  • public void setInit(clang::Expr * init)
  • public void setSubExpr(unsigned int Idx, clang::Expr * E)
  • public unsigned int size() const
  • public bool usesGNUSyntax() const

Inherited from Expr:

Inherited from ValueStmt:

Inherited from Stmt:

Methods

static clang::DesignatedInitExpr* Create(
    const clang::ASTContext& C,
    llvm::ArrayRef<Designator> Designators,
    ArrayRef<clang::Expr*> IndexExprs,
    clang::SourceLocation EqualOrColonLoc,
    bool GNUSyntax,
    clang::Expr* Init)

Declared at: clang/include/clang/AST/Expr.h:5222

Parameters

const clang::ASTContext& C
llvm::ArrayRef<Designator> Designators
ArrayRef<clang::Expr*> IndexExprs
clang::SourceLocation EqualOrColonLoc
bool GNUSyntax
clang::Expr* Init

static clang::DesignatedInitExpr* CreateEmpty(
    const clang::ASTContext& C,
    unsigned int NumIndexExprs)

Declared at: clang/include/clang/AST/Expr.h:5228

Parameters

const clang::ASTContext& C
unsigned int NumIndexExprs

DesignatedInitExpr(unsigned int NumSubExprs)

Declared at: clang/include/clang/AST/Expr.h:5062

Parameters

unsigned int NumSubExprs

DesignatedInitExpr(
    const clang::ASTContext& C,
    clang::QualType Ty,
    llvm::ArrayRef<Designator> Designators,
    clang::SourceLocation EqualOrColonLoc,
    bool GNUSyntax,
    ArrayRef<clang::Expr*> IndexExprs,
    clang::Expr* Init)

Declared at: clang/include/clang/AST/Expr.h:5057

Parameters

const clang::ASTContext& C
clang::QualType Ty
llvm::ArrayRef<Designator> Designators
clang::SourceLocation EqualOrColonLoc
bool GNUSyntax
ArrayRef<clang::Expr*> IndexExprs
clang::Expr* Init

void ExpandDesignator(
    const clang::ASTContext& C,
    unsigned int Idx,
    const clang::DesignatedInitExpr::Designator*
        First,
    const clang::DesignatedInitExpr::Designator*
        Last)

Description

Replaces the designator at index @p Idx with the series of designators in [First, Last).

Declared at: clang/include/clang/AST/Expr.h:5296

Parameters

const clang::ASTContext& C
unsigned int Idx
const clang::DesignatedInitExpr::Designator* First
const clang::DesignatedInitExpr::Designator* Last

clang::Stmt::const_child_range children() const

Declared at: clang/include/clang/AST/Expr.h:5313

clang::Stmt::child_range children()

Declared at: clang/include/clang/AST/Expr.h:5309

static bool classof(const clang::Stmt* T)

Declared at: clang/include/clang/AST/Expr.h:5304

Parameters

const clang::Stmt* T

llvm::MutableArrayRef<Designator> designators()

Declared at: clang/include/clang/AST/Expr.h:5235

llvm::ArrayRef<Designator> designators() const

Declared at: clang/include/clang/AST/Expr.h:5239

clang::Expr* getArrayIndex(
    const clang::DesignatedInitExpr::Designator&
        D) const

Declared at: clang/include/clang/AST/Expr.h:5251

Parameters

const clang::DesignatedInitExpr::Designator& D

clang::Expr* getArrayRangeEnd(
    const clang::DesignatedInitExpr::Designator&
        D) const

Declared at: clang/include/clang/AST/Expr.h:5253

Parameters

const clang::DesignatedInitExpr::Designator& D

clang::Expr* getArrayRangeStart(
    const clang::DesignatedInitExpr::Designator&
        D) const

Declared at: clang/include/clang/AST/Expr.h:5252

Parameters

const clang::DesignatedInitExpr::Designator& D

clang::SourceLocation getBeginLoc() const

Declared at: clang/include/clang/AST/Expr.h:5301

const clang::DesignatedInitExpr::Designator*
getDesignator(unsigned int Idx) const

Declared at: clang/include/clang/AST/Expr.h:5244

Parameters

unsigned int Idx

clang::DesignatedInitExpr::Designator*
getDesignator(unsigned int Idx)

Declared at: clang/include/clang/AST/Expr.h:5243

Parameters

unsigned int Idx

clang::SourceRange getDesignatorsSourceRange()
    const

Declared at: clang/include/clang/AST/Expr.h:5299

clang::SourceLocation getEndLoc() const

Declared at: clang/include/clang/AST/Expr.h:5302

clang::SourceLocation getEqualOrColonLoc() const

Description

Retrieve the location of the '=' that precedes the initializer value itself, if present.

Declared at: clang/include/clang/AST/Expr.h:5257

clang::Expr* getInit() const

Description

Retrieve the initializer value.

Declared at: clang/include/clang/AST/Expr.h:5270

unsigned int getNumSubExprs() const

Description

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.

Declared at: clang/include/clang/AST/Expr.h:5282

clang::Expr* getSubExpr(unsigned int Idx) const

Declared at: clang/include/clang/AST/Expr.h:5284

Parameters

unsigned int Idx

bool isDirectInit() const

Description

Whether this designated initializer should result in direct-initialization of the designated subobject (eg, '{.foo{1, 2, 3}}').

Declared at: clang/include/clang/AST/Expr.h:5262

void setDesignators(
    const clang::ASTContext& C,
    const clang::DesignatedInitExpr::Designator*
        Desigs,
    unsigned int NumDesigs)

Declared at: clang/include/clang/AST/Expr.h:5248

Parameters

const clang::ASTContext& C
const clang::DesignatedInitExpr::Designator* Desigs
unsigned int NumDesigs

void setEqualOrColonLoc(clang::SourceLocation L)

Declared at: clang/include/clang/AST/Expr.h:5258

Parameters

clang::SourceLocation L

void setGNUSyntax(bool GNU)

Declared at: clang/include/clang/AST/Expr.h:5267

Parameters

bool GNU

void setInit(clang::Expr* init)

Declared at: clang/include/clang/AST/Expr.h:5274

Parameters

clang::Expr* init

void setSubExpr(unsigned int Idx, clang::Expr* E)

Declared at: clang/include/clang/AST/Expr.h:5289

Parameters

unsigned int Idx
clang::Expr* E

unsigned int size() const

Description

Returns the number of designators in this initializer.

Declared at: clang/include/clang/AST/Expr.h:5232

bool usesGNUSyntax() const

Description

Determines whether this designated initializer used the deprecated GNU syntax for designated initializers.

Declared at: clang/include/clang/AST/Expr.h:5266