Changeset f135b50 for src/AST/Decl.cpp
- Timestamp:
- Feb 28, 2022, 3:41:44 AM (3 years ago)
- Branches:
- ADT, ast-experimental, enum, master, pthread-emulation, qualifiedEnum
- Children:
- 786c438
- Parents:
- a8ef59e
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/AST/Decl.cpp
ra8ef59e rf135b50 133 133 134 134 auto it = enumValues.find( enumerator->name ); 135 135 136 if ( it != enumValues.end() ) { 136 value = it->second; 137 138 // Handle typed enum by casting the value in (C++) compiler 139 if ( base ) { // A typed enum 140 if ( const BasicType * bt = dynamic_cast<const BasicType *>(base) ) { 141 switch( bt->kind ) { 142 case BasicType::Kind::Bool: value = (bool) it->second; break; 143 case BasicType::Kind::Char: value = (char) it->second; break; 144 case BasicType::Kind::SignedChar: value = (signed char) it->second; break; 145 case BasicType::Kind::UnsignedChar: value = (unsigned char) it->second; break; 146 case BasicType::Kind::ShortSignedInt: value = (short signed int) it->second; break; 147 case BasicType::Kind::SignedInt: value = (signed int) it->second; break; 148 case BasicType::Kind::UnsignedInt: value = (unsigned int) it->second; break; 149 case BasicType::Kind::LongSignedInt: value = (long signed int) it->second; break; 150 case BasicType::Kind::LongUnsignedInt: value = (long unsigned int) it->second; break; 151 case BasicType::Kind::LongLongSignedInt: value = (long long signed int) it->second; break; 152 case BasicType::Kind::LongLongUnsignedInt: value = (long long unsigned int) it->second; break; 153 // TODO: value should be able to handle long long unsigned int 154 155 default: 156 value = it->second; 157 } 158 } 159 } else { 160 value = it->second; 161 } 162 137 163 return true; 138 164 }
Note: See TracChangeset
for help on using the changeset viewer.