3#include <sys/sysinfo.h>
7#include <torch/torch.h>
17using namespace runtime;
83 for (
int i = 1; i < in.size(); i++) {
84 if (in.at(i).second) {
85 message += in.at(i).second->toString();
96 if (in.size() == 2 && in.at(1).second) {
99 LOG_RUNTIME(
"Unknown args '%s'!", in.toString().c_str());
103 uint64_t us = std::chrono::duration_cast<std::chrono::microseconds>(
104 std::chrono::high_resolution_clock::now().time_since_epoch())
107 if (in.size() > 1 && in.at(1).second) {
108 uint64_t diff = us - in.at(1).second->GetValueAsInteger();
109 std::string caller =
"Exec time";
110 if (in.size() > 2 && in.at(2).second) {
112 caller += in.at(2).second->GetValueAsString();
116 std::string
result = fmt::format(
"{}: {}.{} seconds.", caller, (
int) (diff / 1000000), (
int) (diff % 1000000));
118 for (
int i = 3; i < in.size(); i++) {
119 result += in.at(i).second->GetValueAsString();
178 char hostname[HOST_NAME_MAX];
179 gethostname(hostname,
sizeof (hostname));
186 char username[LOGIN_NAME_MAX];
187 getlogin_r(username,
sizeof (username));
192#define ARG_TEST_COUNT(cnt) if (in.size() != cnt + 1) { \
193 LOG_RUNTIME("Only %d argument expected!", cnt); \
203 if (!in.at(1).second || !in.at(1).second->is_string_type()) {
207 return Obj::CreateString(std::getenv(in.at(1).second->GetValueAsString().c_str()));
212 struct utsname *buf =
nullptr;
213 if (0 == uname(buf) && buf) {
231 struct sysinfo *info =
nullptr;
232 if (0 == sysinfo(info) && info) {
260 ::gettimeofday(&tp, NULL);
267 ::gettimeofday(&tp, NULL);
277 ::getcwd(dir, PATH_MAX);
282#if defined(WIN) && (_MSC_VER >= 1900)
283extern "C" __p__environ();
291#if defined(WIN) && (_MSC_VER >= 1900)
292 env = *__p__environ();
297 std::vector<std::string> split;
299 for (; env && *env; ++env) {
309 if (!in.at(1).second || !in.at(1).second->is_string_type()) {
315 std::array<char, 128> buffer;
322 std::unique_ptr<FILE,
decltype(&pclose) > pipe(popen(in.at(1).second->GetValueAsString().c_str(),
"r"), pclose);
324 while (fgets(buffer.data(), buffer.size(), pipe.get()) !=
nullptr) {
348 bool dsl_enable =
true;
350 dsl_enable = rt->m_load_dsl;
427 bool assert_enable =
true;
429 assert_enable = rt->m_assert_enable;
#define CALSS_METHOD(CLASS, NAME)
static ObjPtr CreateString(const std::string_view str, Sync *sync=nullptr)
static ObjPtr CreateDict(Sync *sync=nullptr)
static ObjPtr CreateBool(bool value, Sync *sync=nullptr)
static std::enable_if< std::is_same< T, std::string >::value||std::is_same< T, constchar * >::value, ObjPtr >::type CreateValue(T value, Sync *sync=nullptr)
static ObjPtr CreateNone(Sync *sync=nullptr)
static size_t ParseTerm(TermPtr &term, const BlockType &buffer, const size_t skip=0, bool pragma_enable=true)
static std::vector< std::string > SplitString(const std::string_view str, const std::string_view delim)
static newlang::ObjPtr __assert_abort__(newlang::Context *ctx, newlang::Obj &in)
bool CreateMethodNative(const char *proto, void *addr)
bool AddMethod(const char *name, ObjPtr obj)
bool CreateMethod(const char *proto, FunctionType &func, ObjType type=ObjType::Function)
#define LOG_RUNTIME(format,...)
#define ASSERT(condition)
std::shared_ptr< Term > TermPtr
std::shared_ptr< Obj > ObjPtr
std::shared_ptr< RunTime > RuntimePtr
const char * toString(TermID type)
ObjPtr FunctionType(Context *ctx, Obj &in)
ObjPtr CreateTensor(torch::Tensor tensor)
ObjType getSummaryTensorType(Obj *obj, ObjType start)
#define ARG_TEST_COUNT(cnt)
ObjPtr CreateTensor(torch::Tensor tensor)