NewLang Project
Yet another programm language
Loading...
Searching...
No Matches
builtin.h
Go to the documentation of this file.
1#pragma once
2#ifndef INCLUDED_NEWLANG_BUILTIN_
3#define INCLUDED_NEWLANG_BUILTIN_
4
5//#include "pch.h"
6
7#include "nlc-rt.h"
8//#include "runtime.h"
9
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){\
13 ASSERT(in);\
14 return FUNC(ctx, *in);\
15 }\
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); \
21 }
22
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){\
26 ASSERT(in);\
27 return FUNC(ctx, *in);\
28 }\
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); \
34 }
35
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)
38
39#define CALSS_METHOD_NAME(CLASS, NAME) "::" TO_STR(CLASS ## _ ## NAME)
40//#define CALSS_METHOD_NAME_NS(CLASS, NAME) newlang:: CLASS ## _ ## NAME
41
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)
44
45//#define CALSS_METHOD_NS(NS, CLASS, NAME) newlang::ObjPtr NS ## _ ## CALSS_METHOD_NAME(CLASS, NAME) (newlang::Context *ctx, newlang::Obj &in)
46//#define CALSS_METHOD_NS2(NS1, NS2, CLASS, NAME) newlang::ObjPtr NS1 ## _ ## NS2 ## _ ## CALSS_METHOD_NAME(CLASS, NAME)(newlang::Context *ctx, newlang::Obj &in)
47
48
49namespace newlang {
50
54
58
59 //FUNC_DIRECT(newlang_import, import);
60 //FUNC_DIRECT(newlang_eval, eval);
61 //FUNC_DIRECT(newlang_exec, exec);
62
64
65 /*
66 *
67 *
68 */
69
71 public:
72
74
75 // bool CheckDirect(CompileInfo &ci, TermPtr &term, std::string &output);
76
78 }
79
80 private:
81
82
85
86 std::set<std::string> m_tensor_ops;
87 std::set<std::string> m_tensor_noarg;
88 std::set<std::string> m_tensor_funcs;
89 std::set<std::string> m_tensor_scalar;
90 };
91
92}
93
94#endif //INCLUDED_NEWLANG_BUILTIN_
#define FUNC_TRANSPARENT(NAME, FUNC)
Definition builtin.h:23
std::set< std::string > m_tensor_scalar
Definition builtin.h:89
std::set< std::string > m_tensor_noarg
Definition builtin.h:87
virtual ~BuiltInTorchDirect()
Definition builtin.h:77
BuiltInTorchDirect(const BuiltInTorchDirect &)=delete
std::set< std::string > m_tensor_ops
Definition builtin.h:86
std::set< std::string > m_tensor_funcs
Definition builtin.h:88
const BuiltInTorchDirect & operator=(const BuiltInTorchDirect &)=delete
Definition nlc.h:59
newlang::ObjPtr max(const newlang::Context *ctx, const newlang::Obj &in)
newlang::ObjPtr newlang_min(const newlang::Context *ctx, const newlang::ObjPtr in)
Definition builtin.h:51
newlang::ObjPtr newlang_const_(const newlang::Context *ctx, const newlang::ObjPtr in)
Definition builtin.h:56
newlang::ObjPtr clone(newlang::Context *ctx, newlang::Obj &in)
Definition builtin.cpp:39
newlang::ObjPtr newlang_maks(const newlang::Context *ctx, const newlang::ObjPtr in)
Definition builtin.h:53
newlang::ObjPtr newlang_mutable_(const newlang::Context *ctx, const newlang::ObjPtr in)
Definition builtin.h:57
newlang::ObjPtr mutable_(newlang::Context *ctx, newlang::Obj &in)
Definition builtin.cpp:53
newlang::ObjPtr newlang_help(const newlang::Context *ctx, const newlang::ObjPtr in)
Definition builtin.h:63
newlang::ObjPtr min(const newlang::Context *ctx, const newlang::Obj &in)
newlang::ObjPtr const_(newlang::Context *ctx, newlang::Obj &in)
Definition builtin.cpp:46
newlang::ObjPtr help(const newlang::Context *ctx, const newlang::Obj &in)
newlang::ObjPtr newlang_max(const newlang::Context *ctx, const newlang::ObjPtr in)
Definition builtin.h:52
newlang::ObjPtr newlang_clone(const newlang::Context *ctx, const newlang::ObjPtr in)
Definition builtin.h:55