#include "alfe/main.h" #ifndef INCLUDED_STRING_FUNCTIONS_H #define INCLUDED_STRING_FUNCTIONS_H #include "alfe/function.h" class AddStringString : public Nullary { public: class Body : public Nullary::Body { public: Value evaluate(List arguments, Span span) const { auto i = arguments.begin(); String l = i->value(); ++i; return Value(l + i->value()); } Identifier identifier() const { return OperatorPlus(); } FunctionType type() const { return FunctionType(StringType(), StringType(), StringType()); } }; }; class MultiplyIntegerString : public Nullary { public: class Body : public Nullary::Body { public: Value evaluate(List arguments, Span span) const { auto i = arguments.begin(); int l = i->value(); ++i; return Value(l*i->value()); } Identifier identifier() const { return OperatorStar(); } FunctionType type() const { return FunctionType(StringType(), IntegerType(), StringType()); } }; }; class MultiplyStringInteger : public Nullary { public: class Body : public Nullary::Body { public: Value evaluate(List arguments, Span span) const { auto i = arguments.begin(); String l = i->value(); ++i; return Value(l*i->value()); } Identifier identifier() const { return OperatorStar(); } FunctionType type() const { return FunctionType(StringType(), StringType(), IntegerType()); } }; }; #endif // INCLUDED_STRING_FUNCTIONS_H