#pragma once #include "unit_schema.hpp" #include "unit_transform.hpp" #include namespace saw { template class data, encode::Native> { public: using Schema = schema::Unit; private: data dat_; public: data() = default; data(const data& dat__): dat_{dat__} {} data(data&& dat__): dat_{std::move(dat__)} {} data operator+(const data& rhs) const; data operator-(const data& rhs) const; bool operator==(const data& rhs) const; template data::Schema, encode::Native> operator*(const data& rhs) const; template data::Schema, encode::Native> operator/(const data& rhs) const; /** * Mostly for multiplication and division operator use */ const data& handle() const { return dat_; } }; } #include "unit.tmpl.hpp"