#pragma once

class ZoneCodeGenerator
{
    class Impl;
    Impl* m_impl;

public:
    ZoneCodeGenerator();
    ~ZoneCodeGenerator();
    ZoneCodeGenerator(const ZoneCodeGenerator& other) = delete;
    ZoneCodeGenerator(ZoneCodeGenerator&& other) noexcept = default;
    ZoneCodeGenerator& operator=(const ZoneCodeGenerator& other) = delete;
    ZoneCodeGenerator& operator=(ZoneCodeGenerator&& other) noexcept = default;

    int Run(int argc, const char** argv) const;
};