14#include <boost/config/workaround.hpp>
15#include <boost/preprocessor/stringize.hpp>
18#include <range/v3/algorithm/all_of.hpp>
19#include <range/v3/algorithm/count_if.hpp>
20#include <range/v3/algorithm/fold_left.hpp>
21#include <range/v3/view/transform.hpp>
27#include <source_location>
46#if defined(__GNUC__) && !defined(__clang__)
48 compiler_info.major_version = __GNUC__;
49 compiler_info.minor_version = __GNUC_MINOR__;
50 compiler_info.patch_version = __GNUC_PATCHLEVEL__;
51#elif defined(__clang__)
53 compiler_info.major_version = __clang_major__;
54 compiler_info.minor_version = __clang_minor__;
55 compiler_info.patch_version = __clang_patchlevel__;
67 std::chrono::time_point<std::chrono::system_clock>
start_time = std::chrono::system_clock::now();
85 std::source_location
loc;
90 std::source_location location = std::source_location::current())
107 std::optional<ContextInternalError>
error;
125 using ranges::fold_left, ranges::views::transform;
131 if (total_weight == 0) {
135 return static_cast<double>(passed_weight) / total_weight * 100;
148 return ranges::fold_left(failed_view, 0, std::plus<>{});
Definition asm_buffer.hpp:20
consteval unsigned int get_version()
Definition version.hpp:26
Definition grading_session.hpp:119
int num_requirements_passed() const noexcept
Definition grading_session.hpp:151
std::vector< TestResult > test_results
Definition grading_session.hpp:121
bool all_passed() const noexcept
Definition grading_session.hpp:138
double get_percentage() const noexcept
Definition grading_session.hpp:124
int num_requirements_total
Definition grading_session.hpp:122
int num_requirements_failed() const noexcept
Definition grading_session.hpp:146
std::string name
Definition grading_session.hpp:120
int num_tests_failed() const noexcept
Definition grading_session.hpp:144
int num_tests_passed() const noexcept
Definition grading_session.hpp:140
Definition grading_session.hpp:35
Vendor
Definition grading_session.hpp:36
@ Clang
Definition grading_session.hpp:36
@ GCC
Definition grading_session.hpp:36
@ Unknown
Definition grading_session.hpp:36
int major_version
Definition grading_session.hpp:38
enum asmgrader::CompilerInfo::Vendor kind
int minor_version
Definition grading_session.hpp:39
int patch_version
Definition grading_session.hpp:40
Definition grading_session.hpp:177
std::vector< StudentResult > results
Definition grading_session.hpp:178
Definition grading_session.hpp:83
std::source_location loc
Definition grading_session.hpp:85
static constexpr std::string_view DEFAULT_MSG
Definition grading_session.hpp:87
std::string_view msg
Definition grading_session.hpp:84
DebugInfo(std::string_view message=DEFAULT_MSG, std::source_location location=std::source_location::current())
Definition grading_session.hpp:89
Definition grading_session.hpp:75
DebugInfo debug_info
Definition grading_session.hpp:95
std::optional< exprs::ExpressionRepr > expression_repr
Definition grading_session.hpp:80
std::string description
Definition grading_session.hpp:77
bool passed
Definition grading_session.hpp:76
Definition grading_session.hpp:157
bool names_known
Definition grading_session.hpp:160
std::string last_name
Definition grading_session.hpp:159
std::string subst_regex_string
Definition grading_session.hpp:165
std::optional< std::filesystem::path > assignment_path
Definition grading_session.hpp:162
std::string first_name
Definition grading_session.hpp:158
Definition grading_session.hpp:171
StudentInfo info
Definition grading_session.hpp:172
AssignmentResult result
Definition grading_session.hpp:173
Definition grading_session.hpp:99
int weight
Definition grading_session.hpp:105
std::optional< ContextInternalError > error
Definition grading_session.hpp:107
std::string name
Definition grading_session.hpp:100
constexpr int total_weighted() const noexcept
Definition grading_session.hpp:113
constexpr int num_failed() const noexcept
Definition grading_session.hpp:111
constexpr bool passed() const noexcept
Definition grading_session.hpp:109
int num_passed
Definition grading_session.hpp:103
int num_total
Definition grading_session.hpp:104
constexpr int passed_weighted() const noexcept
Definition grading_session.hpp:115
std::vector< RequirementResult > requirement_results
Definition grading_session.hpp:101
#define ASMGRADER_VERSION_STRING
Definition version.hpp:20
#define ASMGRADER_VERSION_GIT_HASH
Definition version.hpp:17