6#include "IRAdaptor.hpp"
10 #error ARG is used as a temporary preprocessor macro
13#define ARG(x) std::declval<x>()
17template <
typename T, IRAdaptor Adaptor>
18concept Assembler =
requires(T a) {
30 { a.label_create() } -> std::same_as<typename T::Label>;
31 { a.label_is_pending(ARG(
typename T::Label)) } -> std::convertible_to<bool>;
32 { a.label_offset(ARG(
typename T::Label)) } -> std::convertible_to<u32>;
33 { a.label_place(ARG(
typename T::Label)) };
38 a.sym_predef_func(ARG(std::string_view), ARG(
bool), ARG(
bool))
39 } -> std::same_as<typename T::SymRef>;
43 { a.sym_add_undef(ARG(std::string_view), ARG(
bool), ARG(
bool)) };