souffle
2.0.2-371-g6315b36
|
Go to the documentation of this file.
37 class UserDefinedOperator :
public AbstractOperator {
40 bool stateful, VecOwn<Expression> args)
47 const std::string&
getName()
const {
70 res->arguments.emplace_back(arg);
76 void print(std::ostream& os)
const override {
86 bool equal(
const Node& node)
const override {
93 const std::string
name;
96 const std::vector<TypeAttribute>
argsTypes;
UserDefinedOperator(std::string n, std::vector< TypeAttribute > argsTypes, TypeAttribute returnType, bool stateful, VecOwn< Expression > args)
UserDefinedOperator * clone() const override
Create a clone (i.e.
bool equal(const Node &node) const override
Equality check for two RAM nodes.
Operator that represents an extrinsic (user-defined) functor.
const bool stateful
Stateful.
const std::vector< TypeAttribute > argsTypes
Argument types.
VecOwn< Expression > arguments
Arguments of user defined operator.
bool isStateful() const
Is functor stateful?
bool equal(const Node &node) const override
Equality check for two RAM nodes.
const TypeAttribute returnType
Return type.
AbstractOperator(VecOwn< Expression > args)
TypeAttribute getReturnType() const
Get return type.
const std::string name
Name of user-defined operator.
const std::vector< TypeAttribute > & getArgsTypes() const
Get types of arguments.
detail::joined_sequence< Iter, Printer > join(const Iter &a, const Iter &b, const std::string &sep, const Printer &p)
Creates an object to be forwarded to some output stream for printing sequences of elements interspers...
void print(std::ostream &os) const override
Print RAM node.
Expression * clone() const override=0
Create a clone (i.e.
const std::string & getName() const
Get operator name.
Abstract class for describing scalar values in RAM.