RetType dispatchByItemKind_gen(Code item,Visitor& vis) { switch(item.kind()) { case BRIG_KIND_DIRECTIVE_ARG_BLOCK_END: return vis(DirectiveArgBlockEnd(item)); case BRIG_KIND_DIRECTIVE_ARG_BLOCK_START: return vis(DirectiveArgBlockStart(item)); case BRIG_KIND_DIRECTIVE_COMMENT: return vis(DirectiveComment(item)); case BRIG_KIND_DIRECTIVE_CONTROL: return vis(DirectiveControl(item)); case BRIG_KIND_DIRECTIVE_EXTENSION: return vis(DirectiveExtension(item)); case BRIG_KIND_DIRECTIVE_FBARRIER: return vis(DirectiveFbarrier(item)); case BRIG_KIND_DIRECTIVE_FUNCTION: return vis(DirectiveFunction(item)); case BRIG_KIND_DIRECTIVE_INDIRECT_FUNCTION: return vis(DirectiveIndirectFunction(item)); case BRIG_KIND_DIRECTIVE_KERNEL: return vis(DirectiveKernel(item)); case BRIG_KIND_DIRECTIVE_LABEL: return vis(DirectiveLabel(item)); case BRIG_KIND_DIRECTIVE_LOC: return vis(DirectiveLoc(item)); case BRIG_KIND_DIRECTIVE_MODULE: return vis(DirectiveModule(item)); case BRIG_KIND_DIRECTIVE_PRAGMA: return vis(DirectivePragma(item)); case BRIG_KIND_DIRECTIVE_SIGNATURE: return vis(DirectiveSignature(item)); case BRIG_KIND_DIRECTIVE_VARIABLE: return vis(DirectiveVariable(item)); case BRIG_KIND_INST_ADDR: return vis(InstAddr(item)); case BRIG_KIND_INST_ATOMIC: return vis(InstAtomic(item)); case BRIG_KIND_INST_BASIC: return vis(InstBasic(item)); case BRIG_KIND_INST_BR: return vis(InstBr(item)); case BRIG_KIND_INST_CMP: return vis(InstCmp(item)); case BRIG_KIND_INST_CVT: return vis(InstCvt(item)); case BRIG_KIND_INST_IMAGE: return vis(InstImage(item)); case BRIG_KIND_INST_LANE: return vis(InstLane(item)); case BRIG_KIND_INST_MEM: return vis(InstMem(item)); case BRIG_KIND_INST_MEM_FENCE: return vis(InstMemFence(item)); case BRIG_KIND_INST_MOD: return vis(InstMod(item)); case BRIG_KIND_INST_QUERY_IMAGE: return vis(InstQueryImage(item)); case BRIG_KIND_INST_QUERY_SAMPLER: return vis(InstQuerySampler(item)); case BRIG_KIND_INST_QUEUE: return vis(InstQueue(item)); case BRIG_KIND_INST_SEG: return vis(InstSeg(item)); case BRIG_KIND_INST_SEG_CVT: return vis(InstSegCvt(item)); case BRIG_KIND_INST_SIGNAL: return vis(InstSignal(item)); case BRIG_KIND_INST_SOURCE_TYPE: return vis(InstSourceType(item)); case BRIG_KIND_NONE: return vis(DirectiveNone(item)); default: assert(false); break; } return RetType(); }