2#ifndef INCLUDED_NEWLANG_BUILTIN_
3#define INCLUDED_NEWLANG_BUILTIN_
10#define FUNC_DIRECT(NAME, FUNC) \
11 newlang::ObjPtr FUNC(newlang::Context *ctx, newlang::Obj &in);\
12 inline newlang::ObjPtr NAME(newlang::Context *ctx, newlang::ObjPtr in){\
14 return FUNC(ctx, *in);\
16 template <typename... T> \
17 typename std::enable_if<newlang::is_all<newlang::Obj::PairType, T ...>::value, newlang::ObjPtr>::type \
18 NAME(newlang::Context *ctx, T ... args) { \
19 newlang::Obj list = newlang::Obj(newlang::Obj::ArgNull(), args...); \
20 return FUNC(ctx, list); \
23#define FUNC_TRANSPARENT(NAME, FUNC) \
24 newlang::ObjPtr FUNC(const newlang::Context *ctx, const newlang::Obj &in);\
25 inline newlang::ObjPtr NAME(const newlang::Context *ctx, const newlang::ObjPtr in){\
27 return FUNC(ctx, *in);\
29 template <typename... T> \
30 typename std::enable_if<newlang::is_all<newlang::Obj::PairType, T ...>::value, newlang::ObjPtr>::type \
31 newlang_##NAME(newlang::Context *ctx, T ... args) { \
32 newlang::Obj list = newlang::Obj(newlang::Obj::ArgNull(), args...); \
33 return FUNC(ctx, list); \
36#define NEWLANG_FUNCTION(NAME) newlang::ObjPtr NAME(newlang::Context *ctx, newlang::Obj &in)
37#define NEWLANG_TRANSPARENT(NAME) newlang::ObjPtr NAME(const newlang::Context *ctx, const newlang::Obj &in)
39#define CALSS_METHOD_NAME(CLASS, NAME) "::" TO_STR(CLASS ## _ ## NAME)
42#define CALSS_METHOD_DEF(NAME) static newlang::ObjPtr NAME (newlang::Context *ctx, newlang::Obj &in)
43#define CALSS_METHOD(CLASS, NAME) newlang::ObjPtr CLASS :: NAME (newlang::Context *ctx, newlang::Obj &in)
#define FUNC_TRANSPARENT(NAME, FUNC)
std::set< std::string > m_tensor_scalar
std::set< std::string > m_tensor_noarg
virtual ~BuiltInTorchDirect()
BuiltInTorchDirect(const BuiltInTorchDirect &)=delete
std::set< std::string > m_tensor_ops
std::set< std::string > m_tensor_funcs
const BuiltInTorchDirect & operator=(const BuiltInTorchDirect &)=delete
newlang::ObjPtr max(const newlang::Context *ctx, const newlang::Obj &in)
newlang::ObjPtr newlang_min(const newlang::Context *ctx, const newlang::ObjPtr in)
newlang::ObjPtr newlang_const_(const newlang::Context *ctx, const newlang::ObjPtr in)
newlang::ObjPtr clone(newlang::Context *ctx, newlang::Obj &in)
newlang::ObjPtr newlang_maks(const newlang::Context *ctx, const newlang::ObjPtr in)
newlang::ObjPtr newlang_mutable_(const newlang::Context *ctx, const newlang::ObjPtr in)
newlang::ObjPtr mutable_(newlang::Context *ctx, newlang::Obj &in)
newlang::ObjPtr newlang_help(const newlang::Context *ctx, const newlang::ObjPtr in)
newlang::ObjPtr min(const newlang::Context *ctx, const newlang::Obj &in)
newlang::ObjPtr const_(newlang::Context *ctx, newlang::Obj &in)
newlang::ObjPtr help(const newlang::Context *ctx, const newlang::Obj &in)
newlang::ObjPtr newlang_max(const newlang::Context *ctx, const newlang::ObjPtr in)
newlang::ObjPtr newlang_clone(const newlang::Context *ctx, const newlang::ObjPtr in)