- Timestamp:
- Oct 24, 2024, 12:50:14 PM (3 months ago)
- Branches:
- master
- Children:
- d031f7f
- Parents:
- 12c4a5f
- Location:
- src/AST
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
src/AST/Decl.cpp
r12c4a5f r90be0cf 169 169 } 170 170 171 const std::string EnumDecl::getUnmangeldArrayName( const ast::EnumAttribute attr ) const {172 switch( attr ) {173 case ast::EnumAttribute::Value: return "values_" + name ;174 case ast::EnumAttribute::Label: return "labels_" + name;175 default: /* Posn does not generate array */176 return "";177 }178 }179 180 unsigned EnumDecl::calChildOffset(const std::string & target) const{181 unsigned offset = 0;182 for (auto childEnum: inlinedDecl) {183 auto childDecl = childEnum->base;184 if (childDecl->name == target) {185 return offset;186 }187 offset += childDecl->members.size();188 }189 std::cerr << "Cannot find the target enum" << std::endl;190 return 0;191 }192 193 unsigned EnumDecl::calChildOffset(const ast::EnumInstType * target) const{194 return calChildOffset(target->base->name);195 }196 197 bool EnumDecl::isSubTypeOf(const ast::EnumDecl * other) const {198 if (name == other->name) return true;199 for (auto inlined: other->inlinedDecl) {200 if (isSubTypeOf(inlined->base)) return true;201 }202 return false;203 }204 205 171 bool EnumDecl::isTyped() const { return base; } 206 172 -
src/AST/Decl.hpp
r12c4a5f r90be0cf 302 302 }; 303 303 304 /// Enumeration attribute kind. 304 305 enum class EnumAttribute{ Value, Posn, Label }; 306 305 307 /// enum declaration `enum Foo { ... };` 306 308 class EnumDecl final : public AggregateDecl { … … 328 330 const char * typeString() const override { return aggrString( Enum ); } 329 331 330 const std::string getUnmangeldArrayName( const EnumAttribute attr ) const;331 332 unsigned calChildOffset(const std::string & childEnum) const;333 unsigned calChildOffset(const ast::EnumInstType * childEnum) const;334 335 bool isSubTypeOf(const ast::EnumDecl *) const;336 332 bool isTyped() const; 337 333 bool isOpaque() const;
Note: See TracChangeset
for help on using the changeset viewer.