Static Value-Flow Analysis
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | List of all members
SVF::GrammarBase::Symbol Struct Reference

#include <CFGrammar.h>

Public Member Functions

 Symbol ()
 Default Value for Symbol is 0.
 
 Symbol (const u32_t &num)
 Construct from u32_t move the bit to right field.
 
 operator u32_t ()
 Conversion of u32_t.
 
 operator u32_t () const
 
bool operator< (const Symbol &rhs)
 
void operator= (const u32_t &i)
 
void operator= (unsigned long long num)
 
bool operator== (const Symbol &s)
 
bool operator== (const Symbol &s) const
 
bool operator!= (const Symbol &s) const
 
bool operator== (const u32_t &i)
 
bool operator== (const Kind &k) const
 

Public Attributes

Kind kind: 8
 
Attribute attribute: 16
 
VariableAttribute variableAttribute: 8
 

Detailed Description

Definition at line 46 of file CFGrammar.h.

Constructor & Destructor Documentation

◆ Symbol() [1/2]

SVF::GrammarBase::Symbol::Symbol ( )
inline

Default Value for Symbol is 0.

Definition at line 53 of file CFGrammar.h.

53: kind(0), attribute(0), variableAttribute(0) {}
VariableAttribute variableAttribute
Definition CFGrammar.h:50

◆ Symbol() [2/2]

SVF::GrammarBase::Symbol::Symbol ( const u32_t num)
inline

Construct from u32_t move the bit to right field.

Definition at line 56 of file CFGrammar.h.

56: kind(num & 0xFF), attribute((num >> 8 ) & 0xFFFF), variableAttribute((num >> 24)) {}
llvm::IRBuilder IRBuilder
Definition BasicTypes.h:76

Member Function Documentation

◆ operator u32_t() [1/2]

SVF::GrammarBase::Symbol::operator u32_t ( )
inline

Conversion of u32_t.

Definition at line 59 of file CFGrammar.h.

60 {
61 static_assert(sizeof(struct Symbol)==sizeof(u32_t), "sizeof(struct Symbol)!=sizeof(u32_t)");
62 u32_t num = 0;
63 num += this->variableAttribute << 24;
64 num += this->attribute << 8;
65 num += this->kind;
66 return num;
67 }
unsigned u32_t
Definition CommandLine.h:18
unsigned u32_t
Definition GeneralType.h:67
Symbol()
Default Value for Symbol is 0.
Definition CFGrammar.h:53

◆ operator u32_t() [2/2]

SVF::GrammarBase::Symbol::operator u32_t ( ) const
inline

Definition at line 69 of file CFGrammar.h.

70 {
71 static_assert(sizeof(struct Symbol)==sizeof(u32_t), "sizeof(struct Symbol)!=sizeof(u32_t)");
72 u32_t num = 0;
73 num += this->variableAttribute << 24;
74 num += this->attribute << 8;
75 num += this->kind;
76 return num;
77 }

◆ operator!=()

bool SVF::GrammarBase::Symbol::operator!= ( const Symbol s) const
inline

Definition at line 108 of file CFGrammar.h.

109 {
110 return ! (*this == s) ;
111 }

◆ operator<()

bool SVF::GrammarBase::Symbol::operator< ( const Symbol rhs)
inline

Definition at line 79 of file CFGrammar.h.

80 {
81 return u32_t(*this) < u32_t(rhs);
82 }

◆ operator=() [1/2]

void SVF::GrammarBase::Symbol::operator= ( const u32_t i)
inline

Definition at line 84 of file CFGrammar.h.

85 {
86 this->kind = EdgeKindMask & i;
87 this->attribute = i >> EdgeKindMaskBits;
89 }
static constexpr unsigned char AttributedKindMaskBits
We use the lower 24 bits to denote attributed kind.
Definition CFGrammar.h:281
static constexpr u64_t EdgeKindMask
Definition CFGrammar.h:282
static constexpr unsigned char EdgeKindMaskBits
We use the lower 8 bits to denote edge kind.
Definition CFGrammar.h:280

◆ operator=() [2/2]

void SVF::GrammarBase::Symbol::operator= ( unsigned long long  num)
inline

Definition at line 91 of file CFGrammar.h.

92 {
93 this->kind = num & 0xFF;
94 this->attribute = (num >> 8 ) & 0xFFFF;
95 this->variableAttribute = num >> 24;
96 }

◆ operator==() [1/4]

bool SVF::GrammarBase::Symbol::operator== ( const Kind k) const
inline

Definition at line 118 of file CFGrammar.h.

119 {
120 return (this->kind == k);
121 }

◆ operator==() [2/4]

bool SVF::GrammarBase::Symbol::operator== ( const Symbol s)
inline

Definition at line 98 of file CFGrammar.h.

99 {
100 return ((this->kind == s.kind) && (this->attribute == s.attribute) && (this->variableAttribute == s.variableAttribute));
101 }

◆ operator==() [3/4]

bool SVF::GrammarBase::Symbol::operator== ( const Symbol s) const
inline

Definition at line 103 of file CFGrammar.h.

104 {
105 return ((kind == s.kind) && (attribute == s.attribute) && (variableAttribute == s.variableAttribute));
106 }

◆ operator==() [4/4]

bool SVF::GrammarBase::Symbol::operator== ( const u32_t i)
inline

Definition at line 113 of file CFGrammar.h.

114 {
115 return u32_t(*this) == u32_t(i);
116 }

Member Data Documentation

◆ attribute

Attribute SVF::GrammarBase::Symbol::attribute

Definition at line 49 of file CFGrammar.h.

◆ kind

Kind SVF::GrammarBase::Symbol::kind

Definition at line 48 of file CFGrammar.h.

◆ variableAttribute

VariableAttribute SVF::GrammarBase::Symbol::variableAttribute

Definition at line 50 of file CFGrammar.h.


The documentation for this struct was generated from the following file: