22 lines
427 B
C++
22 lines
427 B
C++
#pragma once
|
|
#include "ir/op.hpp"
|
|
#include "prelude/linkedlist.hpp"
|
|
#include "prelude/string.hpp"
|
|
|
|
class CodeGenerator
|
|
{
|
|
public:
|
|
CodeGenerator() = default;
|
|
virtual ~CodeGenerator() {}
|
|
|
|
public:
|
|
virtual bool Generate(const DoubleLinkedList<IR::Op*>* ops) = 0;
|
|
StringView GetOutput() { return output().view(); }
|
|
|
|
protected:
|
|
StringBuilder& output() { return m_output; }
|
|
|
|
private:
|
|
StringBuilder m_output;
|
|
};
|