#pragma once #include #include inline std::ostream& operator<<(std::ostream& strm, const dml::status_code code) { switch(code) { case dml::status_code::ok: strm << "[ok]"; break; case dml::status_code::false_predicate: strm << "[false predicate]"; break; case dml::status_code::partial_completion: strm << "[partial completion]"; break; case dml::status_code::nullptr_error: strm << "[nullptr error]"; break; case dml::status_code::bad_size: strm << "[bad size]"; break; case dml::status_code::bad_length: strm << "[bad length]"; break; case dml::status_code::inconsistent_size: strm << "[inconsistent size]"; break; case dml::status_code::dualcast_bad_padding: strm << "[dualcast bad padding]"; break; case dml::status_code::bad_alignment: strm << "[bad alignment]"; break; case dml::status_code::buffers_overlapping: strm << "[buffers overlapping]"; break; case dml::status_code::delta_delta_empty: strm << "[delta delta empty]"; break; case dml::status_code::batch_overflow: strm << "[batch overflow]"; break; case dml::status_code::execution_failed: strm << "[execution failed]"; break; case dml::status_code::unsupported_operation: strm << "[unsupported operation]"; break; case dml::status_code::queue_busy: strm << "[queue busy]"; break; case dml::status_code::error: strm << "[unknown error]"; break; case dml::status_code::config_error: strm << "[config error]"; break; default: strm << "[unhandled error]"; break; } return strm; }