souffle
2.0.2-371-g6315b36
|
#include "FunctorOps.h"
#include "souffle/utility/FunctionalUtil.h"
#include "souffle/utility/MiscUtil.h"
#include <cassert>
#include <cctype>
#include <map>
#include <memory>
#include <ostream>
#include <utility>
#include <vector>
Go to the source code of this file.
Namespaces | |
souffle | |
Macros | |
#define | OP_1(op, t0, tDst) { functorOpNameSymbol(FOp::op), {TAttr::t0}, TAttr::tDst, FOp::op } |
#define | OP_1_INTEGRAL(op) OP_1_MONO(op, Signed), OP_1_MONO(U##op, Unsigned) |
#define | OP_1_MONO(op, ty) OP_1(op, ty, ty) |
#define | OP_2(op, t0, t1, tDst, multi) { functorOpNameSymbol(FOp::op), {TAttr::t0, TAttr::t1}, TAttr::tDst, FOp::op, false, multi } |
#define | OP_2_INTEGRAL(op) OP_2_INTEGRAL_EX(op, false) |
#define | OP_2_INTEGRAL_EX(op, multi) OP_2_MONO(op, Signed, multi), OP_2_MONO(U##op, Unsigned, multi) |
#define | OP_2_MONO(op, ty, multi) OP_2(op, ty, ty, ty, multi) |
#define | OP_2_NUMERIC(op) OP_2_MONO(F##op, Float, false), OP_2_INTEGRAL(op) |
#define | OP_2_NUMERIC_MULTI(op) OP_2_MONO(F##op, Float, true), OP_2_INTEGRAL_EX(op, true) |
#define | OP_3(op, t0, t1, t2, tDst, multi) { functorOpNameSymbol(FOp::op), {TAttr::t0, TAttr::t1, TAttr::t2}, TAttr::tDst, FOp::op, false, multi } |
#define | OP_3_INTEGRAL_EX(op, multi) OP_3_MONO(op, Signed, multi), OP_3_MONO(U##op, Unsigned, multi) |
#define | OP_3_MONO(op, ty, multi) OP_3(op, ty, ty, ty, ty, multi) |
#define | OP_3_NUMERIC_MULTI(op) OP_3_MONO(F##op, Float, true), OP_3_INTEGRAL_EX(op, true) |
#define | VARIADIC(op, ty) { functorOpNameLegacy(FOp::op), {TAttr::ty}, TAttr::ty, FOp::op, true } |
#define | VARIADIC_ORDERED(op) VARIADIC(op, Signed), VARIADIC(U##op, Unsigned), VARIADIC(F##op, Float), VARIADIC(S##op, Symbol) |
Functions | |
IntrinsicFunctors | souffle::functorBuiltIn (FunctorOp op) |
IntrinsicFunctors | souffle::functorBuiltIn (std::string_view symbol) |
IntrinsicFunctors | souffle::functorBuiltIn (std::string_view symbol, const std::vector< TypeAttribute > ¶ms) |
FunctorOp | souffle::getMaxOp (const std::string &type) |
FunctorOp | souffle::getMinOp (const std::string &type) |
Given a type of an an attribute it returns the appropriate min/max functor operation. More... | |
bool | souffle::isFunctorMultiResult (FunctorOp op) |
bool | souffle::isInfixFunctorOp (const FunctorOp op) |
bool | souffle::isInfixFunctorOp (std::string_view symbol) |
Determines whether a functor should be written using infix notation (e.g. More... | |
bool | souffle::isValidFunctorOpArity (std::string_view symbol, size_t arity) |
std::ostream & | souffle::operator<< (std::ostream &os, FunctorOp op) |
#define OP_1 | ( | op, | |
t0, | |||
tDst | |||
) | { functorOpNameSymbol(FOp::op), {TAttr::t0}, TAttr::tDst, FOp::op } |
Definition at line 135 of file FunctorOps.cpp.
Definition at line 145 of file FunctorOps.cpp.
#define OP_1_MONO | ( | op, | |
ty | |||
) | OP_1(op, ty, ty) |
Definition at line 142 of file FunctorOps.cpp.
#define OP_2 | ( | op, | |
t0, | |||
t1, | |||
tDst, | |||
multi | |||
) | { functorOpNameSymbol(FOp::op), {TAttr::t0, TAttr::t1}, TAttr::tDst, FOp::op, false, multi } |
Definition at line 137 of file FunctorOps.cpp.
#define OP_2_INTEGRAL | ( | op | ) | OP_2_INTEGRAL_EX(op, false) |
Definition at line 148 of file FunctorOps.cpp.
#define OP_2_INTEGRAL_EX | ( | op, | |
multi | |||
) | OP_2_MONO(op, Signed, multi), OP_2_MONO(U##op, Unsigned, multi) |
Definition at line 146 of file FunctorOps.cpp.
#define OP_2_MONO | ( | op, | |
ty, | |||
multi | |||
) | OP_2(op, ty, ty, ty, multi) |
Definition at line 143 of file FunctorOps.cpp.
#define OP_2_NUMERIC | ( | op | ) | OP_2_MONO(F##op, Float, false), OP_2_INTEGRAL(op) |
Definition at line 149 of file FunctorOps.cpp.
#define OP_2_NUMERIC_MULTI | ( | op | ) | OP_2_MONO(F##op, Float, true), OP_2_INTEGRAL_EX(op, true) |
Definition at line 150 of file FunctorOps.cpp.
#define OP_3 | ( | op, | |
t0, | |||
t1, | |||
t2, | |||
tDst, | |||
multi | |||
) | { functorOpNameSymbol(FOp::op), {TAttr::t0, TAttr::t1, TAttr::t2}, TAttr::tDst, FOp::op, false, multi } |
Definition at line 139 of file FunctorOps.cpp.
#define OP_3_INTEGRAL_EX | ( | op, | |
multi | |||
) | OP_3_MONO(op, Signed, multi), OP_3_MONO(U##op, Unsigned, multi) |
Definition at line 147 of file FunctorOps.cpp.
#define OP_3_MONO | ( | op, | |
ty, | |||
multi | |||
) | OP_3(op, ty, ty, ty, ty, multi) |
Definition at line 144 of file FunctorOps.cpp.
#define OP_3_NUMERIC_MULTI | ( | op | ) | OP_3_MONO(F##op, Float, true), OP_3_INTEGRAL_EX(op, true) |
Definition at line 151 of file FunctorOps.cpp.
#define VARIADIC | ( | op, | |
ty | |||
) | { functorOpNameLegacy(FOp::op), {TAttr::ty}, TAttr::ty, FOp::op, true } |
Definition at line 152 of file FunctorOps.cpp.