AsmGrader 0.0.0
Loading...
Searching...
No Matches
asmgrader::exprs Namespace Reference

Types and other utilities for representing expressions used in REQUIRE* statements. More...

Namespaces

namespace  detail
 

Classes

struct  ExpressionRepr
 Representation of an expression with all components stringized. More...
 
struct  NAryOp
 

Concepts

concept  Operator
 

Typedefs

template<typename Args >
using Noop = NAryOp<std::identity, "", Args>
 
template<typename Arg >
using LogicalNot = NAryOp<std::logical_not<>, "!", Arg>
 
template<typename Lhs , typename Rhs >
using Equal = NAryOp<std::equal_to<>, "==", Lhs, Rhs>
 
template<typename Lhs , typename Rhs >
using NotEqual = NAryOp<std::not_equal_to<>, "!=", Lhs, Rhs>
 
template<typename Lhs , typename Rhs >
using Less = NAryOp<std::less<>, "<", Lhs, Rhs>
 
template<typename Lhs , typename Rhs >
using LessEqual = NAryOp<std::less_equal<>, "<=", Lhs, Rhs>
 
template<typename Lhs , typename Rhs >
using Greater = NAryOp<std::greater<>, ">", Lhs, Rhs>
 
template<typename Lhs , typename Rhs >
using GreaterEqual = NAryOp<std::greater_equal<>, ">=", Lhs, Rhs>
 
template<StaticString OpStr, typename T , typename U >
using OpStrToType = boost::mp11::mp_second<boost::mp11::mp_map_find<detail::StrToOpTMap<T, U>, detail::MapKeyT<OpStr>>>
 

Enumerations

enum class  ArityKind { Nullary = 0 , Unary , Binary , Ternary }
 

Functions

template<template< typename... > typename Op, typename... Args>
constexpr auto make (std::array< inspection::Tokenizer<>, sizeof...(Args)> arg_tokens, Args &&... args)
 For argument deduction purposes.
 

Detailed Description

Types and other utilities for representing expressions used in REQUIRE* statements.

Typedef Documentation

◆ Equal

template<typename Lhs , typename Rhs >
using asmgrader::exprs::Equal = NAryOp<std::equal_to<>, "==", Lhs, Rhs>

◆ Greater

template<typename Lhs , typename Rhs >
using asmgrader::exprs::Greater = NAryOp<std::greater<>, ">", Lhs, Rhs>

◆ GreaterEqual

template<typename Lhs , typename Rhs >
using asmgrader::exprs::GreaterEqual = NAryOp<std::greater_equal<>, ">=", Lhs, Rhs>

◆ Less

template<typename Lhs , typename Rhs >
using asmgrader::exprs::Less = NAryOp<std::less<>, "<", Lhs, Rhs>

◆ LessEqual

template<typename Lhs , typename Rhs >
using asmgrader::exprs::LessEqual = NAryOp<std::less_equal<>, "<=", Lhs, Rhs>

◆ LogicalNot

template<typename Arg >
using asmgrader::exprs::LogicalNot = NAryOp<std::logical_not<>, "!", Arg>

◆ Noop

template<typename Args >
using asmgrader::exprs::Noop = NAryOp<std::identity, "", Args>

◆ NotEqual

template<typename Lhs , typename Rhs >
using asmgrader::exprs::NotEqual = NAryOp<std::not_equal_to<>, "!=", Lhs, Rhs>

◆ OpStrToType

template<StaticString OpStr, typename T , typename U >
using asmgrader::exprs::OpStrToType = boost::mp11::mp_second<boost::mp11::mp_map_find<detail::StrToOpTMap<T, U>, detail::MapKeyT<OpStr>>>

Enumeration Type Documentation

◆ ArityKind

enum class asmgrader::exprs::ArityKind
strong
Enumerator
Nullary 
Unary 
Binary 
Ternary 

Function Documentation

◆ make()

template<template< typename... > typename Op, typename... Args>
auto asmgrader::exprs::make ( std::array< inspection::Tokenizer<>, sizeof...(Args)> arg_tokens,
Args &&... args )
constexpr

For argument deduction purposes.