MCPcopy Create free account
hub / github.com/MegEngine/MegEngine / EnumAttrEmitter

Class EnumAttrEmitter

imperative/tablegen/targets/python_c_extension.cpp:273–307  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

271};
272
273class EnumAttrEmitter : public EmitterBase {
274public:
275 EnumAttrEmitter(
276 llvm::StringRef parent, MgbEnumAttr* attr_, raw_ostream& os_,
277 Environment& env_)
278 : EmitterBase(os_, env_), attr(attr_) {
279 unsigned int enumID;
280 if (auto alias = llvm::dyn_cast<MgbAliasAttr>(attr)) {
281 auto&& aliasBase = alias->getAliasBase();
282 enumID = llvm::cast<MgbEnumAttr>(aliasBase).getBaseRecord()->getID();
283 } else {
284 enumID = attr->getBaseRecord()->getID();
285 }
286 ctx.addSubst(
287 "enumTpl",
288 attr->getEnumCombinedFlag() ? "BitCombinedEnumWrapper" : "EnumWrapper");
289 ctx.addSubst("opClass", parent);
290 ctx.addSubst("enumClass", attr->getEnumName());
291 firstOccur =
292 env().enumAlias
293 .emplace(enumID, std::make_pair(parent, attr->getEnumName()))
294 .second;
295 }
296
297 Initproc emit();
298
299protected:
300 void emit_trait();
301 void emit_tpl_spl();
302 Initproc emit_initproc();
303
304 MgbEnumAttr* attr;
305 bool firstOccur;
306 mlir::tblgen::FmtContext ctx;
307};
308
309Initproc EnumAttrEmitter::emit() {
310 emit_trait();

Callers 1

emitMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected