/** @file ProcedureExprInterface.hpp * * Author: Roland Conybeare **/ #pragma once #include "Expression.hpp" //#include namespace xo { namespace scm { class ProcedureExprInterface : public Expression { public: ProcedureExprInterface(exprtype extype, TypeDescr fn_type) : Expression(extype, fn_type) {} /** downcast from Expression **/ static bp from(bp x) { return bp::from(x); } virtual const std::string & name() const = 0; virtual int n_arg() const = 0; // { return this->value_td()->n_fn_arg(); } virtual TypeDescr fn_retval() const = 0; // { return this->value_td()->fn_retval(); } virtual TypeDescr fn_arg(uint32_t i) const = 0; // { return this->value_td()->fn_arg(i); } private: }; /*FunctionInterface*/ } /*namespace scm*/ } /*namespace xo*/ /** end ProcedureExprInterface.hpp **/