LLVM API Documentation

OperandTraits.h File Reference

#include "llvm/User.h"

Include dependency graph for OperandTraits.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  llvm

Classes

struct  llvm::FixedNumOperandTraits< ARITY >
struct  llvm::FixedNumOperandTraits< ARITY >::prefix
struct  llvm::FixedNumOperandTraits< ARITY >::Layout< U >
struct  llvm::FixedNumOperandTraits< ARITY >::Layout< U >::overlay
struct  llvm::OptionalOperandTraits< ARITY >
struct  llvm::VariadicOperandTraits< MINARITY >
struct  llvm::HungoffOperandTraits< MINARITY >

Defines

#define DECLARE_TRANSPARENT_OPERAND_ACCESSORS(VALUECLASS)
#define DEFINE_TRANSPARENT_OPERAND_ACCESSORS(CLASS, VALUECLASS)
 Macro for generating out-of-class operand accessor definitions.
#define DEFINE_TRANSPARENT_CASTED_OPERAND_ACCESSORS(CLASS, VALUECLASS)


Define Documentation

#define DECLARE_TRANSPARENT_OPERAND_ACCESSORS ( VALUECLASS   ) 

Value:

public: \
  inline VALUECLASS *getOperand(unsigned) const; \
  inline void setOperand(unsigned, VALUECLASS*); \
  protected: \
  template <unsigned> inline Use &Op(); \
  template <unsigned> inline const Use &Op() const; \
  public: \
  inline unsigned getNumOperands() const
Macro for generating in-class operand accessor declarations. It should only be called in the public section of the interface.

Definition at line 118 of file OperandTraits.h.

#define DEFINE_TRANSPARENT_CASTED_OPERAND_ACCESSORS ( CLASS,
VALUECLASS   ) 

Value:

VALUECLASS *CLASS::getOperand(unsigned i_nocapture) const { \
  assert(i_nocapture < OperandTraits<CLASS>::operands(this) \
         && "getOperand() out of range!"); \
  return cast<VALUECLASS>( \
    OperandTraits<CLASS>::op_begin(const_cast<CLASS*>(this))[i_nocapture]); \
} \
void CLASS::setOperand(unsigned i_nocapture, VALUECLASS *Val_nocapture) { \
  assert(i_nocapture < OperandTraits<CLASS>::operands(this) \
         && "setOperand() out of range!"); \
  OperandTraits<CLASS>::op_begin(this)[i_nocapture] = Val_nocapture; \
} \
unsigned CLASS::getNumOperands() const { \
  return OperandTraits<CLASS>::operands(this); \
} \
template <unsigned Idx_nocapture> Use &CLASS::Op() { \
  return OperandTraits<CLASS>::op_begin(this)[Idx_nocapture]; \
} \
template <unsigned Idx_nocapture> const Use &CLASS::Op() const { \
  return OperandTraits<CLASS>::op_begin( \
    const_cast<CLASS*>(this))[Idx_nocapture]; \
}
Macro for generating out-of-class operand accessor definitions with casted result

Definition at line 155 of file OperandTraits.h.

#define DEFINE_TRANSPARENT_OPERAND_ACCESSORS ( CLASS,
VALUECLASS   ) 

Value:

VALUECLASS *CLASS::getOperand(unsigned i_nocapture) const { \
  assert(i_nocapture < OperandTraits<CLASS>::operands(this) \
         && "getOperand() out of range!"); \
  return static_cast<VALUECLASS*>( \
    OperandTraits<CLASS>::op_begin(const_cast<CLASS*>(this))[i_nocapture]); \
} \
void CLASS::setOperand(unsigned i_nocapture, VALUECLASS *Val_nocapture) { \
  assert(i_nocapture < OperandTraits<CLASS>::operands(this) \
         && "setOperand() out of range!"); \
  OperandTraits<CLASS>::op_begin(this)[i_nocapture] = Val_nocapture; \
} \
unsigned CLASS::getNumOperands() const { \
  return OperandTraits<CLASS>::operands(this);  \
} \
template <unsigned Idx_nocapture> Use &CLASS::Op() { \
  return OperandTraits<CLASS>::op_begin(this)[Idx_nocapture]; \
} \
template <unsigned Idx_nocapture> const Use &CLASS::Op() const { \
  return OperandTraits<CLASS>::op_begin( \
    const_cast<CLASS*>(this))[Idx_nocapture]; \
}
Macro for generating out-of-class operand accessor definitions.

Definition at line 129 of file OperandTraits.h.




This web site is hosted by the Computer Science Department at the University of Illinois at Urbana-Champaign.