#pragma once #include "dvm.h" #include "TypedSymbol.h" #include class VarUsages { std::set reads; std::set writes; bool undefined; public: VarUsages() : undefined(false) { } void extend(const VarUsages&); void insert_undefined(const TypedSymbol&); void insert_read(const TypedSymbol&); void insert_write(const TypedSymbol&); bool is_undefined() const; std::set get_reads(const std::set) const; std::set get_writes(const std::set) const; std::set get_all(const std::set) const; std::set get_reads() const; std::set get_writes() const; std::set get_all() const; static std::set filter(const std::set&, const std::set); void print() const; };