Ignore:
Timestamp:
Aug 19, 2018, 11:15:47 AM (6 years ago)
Author:
Rob Schluntz <rschlunt@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, no_list, persistent-indexer, pthread-emulation, qualifiedEnum
Children:
0e73845
Parents:
2f9768f
Message:

Parse union, enum, zero_t, and one_t in demangler

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/SymTab/Demangle.cc

    r2f9768f r38587bc  
    352352                                Type * parseArray(Type::Qualifiers tq);
    353353                                Type * parseStruct(Type::Qualifiers tq);
     354                                Type * parseUnion(Type::Qualifiers tq);
     355                                Type * parseEnum(Type::Qualifiers tq);
    354356
    355357                                Type * parseType();
     
    372374                                parsers.emplace_back(Encoding::tuple, [this](Type::Qualifiers tq) { return parseTuple(tq); });
    373375                                parsers.emplace_back(Encoding::struct_t, [this](Type::Qualifiers tq) { return parseStruct(tq); });
     376                                parsers.emplace_back(Encoding::union_t, [this](Type::Qualifiers tq) { return parseUnion(tq); });
     377                                parsers.emplace_back(Encoding::enum_t, [this](Type::Qualifiers tq) { return parseEnum(tq); });
     378                                parsers.emplace_back(Encoding::zero, [this](Type::Qualifiers tq) { return new ZeroType(tq); });
     379                                parsers.emplace_back(Encoding::one, [this](Type::Qualifiers tq) { return new OneType(tq); });
    374380                        }
    375381
     
    493499                        }
    494500
     501                        Type * StringView::parseUnion(Type::Qualifiers tq) {
     502                                PRINT( std::cerr << "union..." << std::endl; )
     503                                std::string name;
     504                                if (! extractName(name)) return nullptr;
     505                                return new UnionInstType(tq, name);
     506                        }
     507
     508                        Type * StringView::parseEnum(Type::Qualifiers tq) {
     509                                PRINT( std::cerr << "enum..." << std::endl; )
     510                                std::string name;
     511                                if (! extractName(name)) return nullptr;
     512                                return new EnumInstType(tq, name);
     513                        }
     514
    495515                        Type * StringView::parseType() {
    496516                                if (done()) return nullptr;
Note: See TracChangeset for help on using the changeset viewer.