📝 move functions from nasal_misc => util
This commit is contained in:
parent
c840d70a9c
commit
05605c3570
9
makefile
9
makefile
|
@ -92,7 +92,7 @@ build:
|
||||||
build/main.o: $(NASAL_HEADER) src/main.cpp | build
|
build/main.o: $(NASAL_HEADER) src/main.cpp | build
|
||||||
$(CXX) $(CXXFLAGS) src/main.cpp -o build/main.o
|
$(CXX) $(CXXFLAGS) src/main.cpp -o build/main.o
|
||||||
|
|
||||||
build/nasal_misc.o: src/nasal.h src/nasal_misc.cpp | build
|
build/nasal_misc.o: src/nasal.h src/util/util.h src/nasal_misc.cpp | build
|
||||||
$(CXX) $(CXXFLAGS) src/nasal_misc.cpp -o build/nasal_misc.o
|
$(CXX) $(CXXFLAGS) src/nasal_misc.cpp -o build/nasal_misc.o
|
||||||
|
|
||||||
build/cli.o: src/cli/cli.h src/cli/cli.cpp | build
|
build/cli.o: src/cli/cli.h src/cli/cli.cpp | build
|
||||||
|
@ -101,7 +101,7 @@ build/cli.o: src/cli/cli.h src/cli/cli.cpp | build
|
||||||
build/util.o: src/util/util.h src/util/util.cpp | build
|
build/util.o: src/util/util.h src/util/util.cpp | build
|
||||||
$(CXX) $(CXXFLAGS) src/util/util.cpp -o build/util.o
|
$(CXX) $(CXXFLAGS) src/util/util.cpp -o build/util.o
|
||||||
|
|
||||||
build/fs.o: src/nasal.h src/util/fs.h src/util/fs.cpp | build
|
build/fs.o: src/nasal.h src/util/util.h src/util/fs.h src/util/fs.cpp | build
|
||||||
$(CXX) $(CXXFLAGS) src/util/fs.cpp -o build/fs.o
|
$(CXX) $(CXXFLAGS) src/util/fs.cpp -o build/fs.o
|
||||||
|
|
||||||
build/repl.o: $(NASAL_HEADER) src/repl/repl.h src/repl/repl.cpp | build
|
build/repl.o: $(NASAL_HEADER) src/repl/repl.h src/repl/repl.cpp | build
|
||||||
|
@ -121,6 +121,7 @@ build/nasal_import.o: \
|
||||||
src/nasal_ast.h\
|
src/nasal_ast.h\
|
||||||
src/nasal_lexer.h\
|
src/nasal_lexer.h\
|
||||||
src/nasal_parse.h\
|
src/nasal_parse.h\
|
||||||
|
src/util/util.h\
|
||||||
src/util/fs.h\
|
src/util/fs.h\
|
||||||
src/nasal_import.h src/nasal_import.cpp | build
|
src/nasal_import.h src/nasal_import.cpp | build
|
||||||
$(CXX) $(CXXFLAGS) src/nasal_import.cpp -o build/nasal_import.o
|
$(CXX) $(CXXFLAGS) src/nasal_import.cpp -o build/nasal_import.o
|
||||||
|
@ -143,7 +144,9 @@ build/builtin.o: \
|
||||||
src/nasal.h\
|
src/nasal.h\
|
||||||
src/nasal_type.h\
|
src/nasal_type.h\
|
||||||
src/nasal_gc.h\
|
src/nasal_gc.h\
|
||||||
src/natives/builtin.h src/natives/builtin.cpp | build
|
src/util/util.h\
|
||||||
|
src/natives/builtin.h\
|
||||||
|
src/natives/builtin.cpp | build
|
||||||
$(CXX) $(CXXFLAGS) src/natives/builtin.cpp -o build/builtin.o
|
$(CXX) $(CXXFLAGS) src/natives/builtin.cpp -o build/builtin.o
|
||||||
|
|
||||||
build/coroutine.o: \
|
build/coroutine.o: \
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
#include "nasal_vm.h"
|
#include "nasal_vm.h"
|
||||||
#include "nasal_dbg.h"
|
#include "nasal_dbg.h"
|
||||||
|
|
||||||
|
#include "util/util.h"
|
||||||
#include "repl/repl.h"
|
#include "repl/repl.h"
|
||||||
#include "cli/cli.h"
|
#include "cli/cli.h"
|
||||||
|
|
||||||
|
@ -66,7 +67,7 @@ std::ostream& logo(std::ostream& out) {
|
||||||
<< " \\_\\ \\/ \\__,_|___/\\__,_|_|\n"
|
<< " \\_\\ \\/ \\__,_|___/\\__,_|_|\n"
|
||||||
<< "\n"
|
<< "\n"
|
||||||
<< "ver : " << __nasver__
|
<< "ver : " << __nasver__
|
||||||
<< " " << nasal::get_platform() << " " << nasal::get_arch()
|
<< " " << nasal::util::get_platform() << " " << nasal::util::get_arch()
|
||||||
<< " (" << __DATE__ << " " << __TIME__ << ")\n"
|
<< " (" << __DATE__ << " " << __TIME__ << ")\n"
|
||||||
<< "std : c++ " << __cplusplus << "\n"
|
<< "std : c++ " << __cplusplus << "\n"
|
||||||
<< "core : " << std::thread::hardware_concurrency() << " core(s)\n"
|
<< "core : " << std::thread::hardware_concurrency() << " core(s)\n"
|
||||||
|
@ -95,7 +96,7 @@ std::ostream& version(std::ostream& out) {
|
||||||
}
|
}
|
||||||
|
|
||||||
out << "nasal version " << __nasver__;
|
out << "nasal version " << __nasver__;
|
||||||
out << " " << nasal::get_platform() << " " << nasal::get_arch();
|
out << " " << nasal::util::get_platform() << " " << nasal::util::get_arch();
|
||||||
out << " (" << __DATE__ << " " << __TIME__ << ")\n";
|
out << " (" << __DATE__ << " " << __TIME__ << ")\n";
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
14
src/nasal.h
14
src/nasal.h
|
@ -23,20 +23,6 @@ using f64 = double;
|
||||||
|
|
||||||
namespace nasal {
|
namespace nasal {
|
||||||
|
|
||||||
bool is_windows();
|
|
||||||
bool is_linux();
|
|
||||||
bool is_macos();
|
|
||||||
bool is_x86();
|
|
||||||
bool is_amd64();
|
|
||||||
bool is_x86_64();
|
|
||||||
bool is_arm();
|
|
||||||
bool is_aarch64();
|
|
||||||
bool is_ia64();
|
|
||||||
bool is_powerpc();
|
|
||||||
bool is_superh();
|
|
||||||
const char* get_platform();
|
|
||||||
const char* get_arch();
|
|
||||||
|
|
||||||
// virtual machine stack depth, both global depth and value stack depth
|
// virtual machine stack depth, both global depth and value stack depth
|
||||||
const u32 VM_STACK_DEPTH = UINT16_MAX;
|
const u32 VM_STACK_DEPTH = UINT16_MAX;
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
#include "nasal_import.h"
|
#include "nasal_import.h"
|
||||||
#include "symbol_finder.h"
|
#include "symbol_finder.h"
|
||||||
|
#include "util/util.h"
|
||||||
#include "util/fs.h"
|
#include "util/fs.h"
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
@ -8,7 +9,7 @@
|
||||||
namespace nasal {
|
namespace nasal {
|
||||||
|
|
||||||
linker::linker(): show_path_flag(false), this_file("") {
|
linker::linker(): show_path_flag(false), this_file("") {
|
||||||
const auto seperator = is_windows()? ';':':';
|
const auto seperator = util::is_windows()? ';':':';
|
||||||
const auto PATH = std::string(getenv("PATH"));
|
const auto PATH = std::string(getenv("PATH"));
|
||||||
usize last = 0, position = PATH.find(seperator, 0);
|
usize last = 0, position = PATH.find(seperator, 0);
|
||||||
while(position!=std::string::npos) {
|
while(position!=std::string::npos) {
|
||||||
|
@ -31,7 +32,7 @@ std::string linker::get_path(expr* node) {
|
||||||
for(auto i : path) {
|
for(auto i : path) {
|
||||||
file_relative_path += i->get_name();
|
file_relative_path += i->get_name();
|
||||||
if (i!=path.back()) {
|
if (i!=path.back()) {
|
||||||
file_relative_path += (is_windows()? "\\":"/");
|
file_relative_path += (util::is_windows()? "\\":"/");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return file_relative_path + ".nas";
|
return file_relative_path + ".nas";
|
||||||
|
@ -61,7 +62,7 @@ std::string linker::find_real_file_path(const std::string& filename,
|
||||||
|
|
||||||
// we will find lib.nas in nasal std directory
|
// we will find lib.nas in nasal std directory
|
||||||
if (filename=="lib.nas") {
|
if (filename=="lib.nas") {
|
||||||
return is_windows()?
|
return util::is_windows()?
|
||||||
find_real_file_path("std\\lib.nas", location):
|
find_real_file_path("std\\lib.nas", location):
|
||||||
find_real_file_path("std/lib.nas", location);
|
find_real_file_path("std/lib.nas", location);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,127 +1,8 @@
|
||||||
#include "nasal.h"
|
#include "nasal.h"
|
||||||
|
#include "util/util.h"
|
||||||
#ifdef _MSC_VER
|
|
||||||
#pragma warning (disable:4996)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace nasal {
|
namespace nasal {
|
||||||
|
|
||||||
bool is_windows() {
|
|
||||||
#if defined(_WIN32) || defined(_WIN64)
|
|
||||||
return true;
|
|
||||||
#else
|
|
||||||
return false;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
bool is_linux() {
|
|
||||||
#if defined __linux__
|
|
||||||
return true;
|
|
||||||
#else
|
|
||||||
return false;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
bool is_macos() {
|
|
||||||
#if defined __APPLE__
|
|
||||||
return true;
|
|
||||||
#else
|
|
||||||
return false;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
bool is_x86() {
|
|
||||||
#if defined(__i386__) || defined(_M_IX86)
|
|
||||||
return true;
|
|
||||||
#else
|
|
||||||
return false;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
bool is_amd64() {
|
|
||||||
#if defined(__amd64__) || defined(_M_X64)
|
|
||||||
return true;
|
|
||||||
#else
|
|
||||||
return false;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
bool is_x86_64() {
|
|
||||||
return is_amd64();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool is_arm() {
|
|
||||||
#if defined(__arm__) || defined(_M_ARM)
|
|
||||||
return true;
|
|
||||||
#else
|
|
||||||
return false;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
bool is_aarch64() {
|
|
||||||
#if defined(__aarch64__) || defined(_M_ARM64)
|
|
||||||
return true;
|
|
||||||
#else
|
|
||||||
return false;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
bool is_ia64() {
|
|
||||||
#if defined(__ia64__)
|
|
||||||
return true;
|
|
||||||
#else
|
|
||||||
return false;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
bool is_powerpc() {
|
|
||||||
#if defined(__powerpc__)
|
|
||||||
return true;
|
|
||||||
#else
|
|
||||||
return false;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
bool is_superh() {
|
|
||||||
#if defined(__sh__)
|
|
||||||
return true;
|
|
||||||
#else
|
|
||||||
return false;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
const char* get_platform() {
|
|
||||||
if (is_windows()) {
|
|
||||||
return "windows";
|
|
||||||
} else if (is_linux()) {
|
|
||||||
return "linux";
|
|
||||||
} else if (is_macos()) {
|
|
||||||
return "macOS";
|
|
||||||
}
|
|
||||||
return "unknown";
|
|
||||||
}
|
|
||||||
|
|
||||||
const char* get_arch() {
|
|
||||||
if (is_x86()) {
|
|
||||||
return "x86";
|
|
||||||
} else if (is_x86_64()) {
|
|
||||||
return "x86-64";
|
|
||||||
} else if (is_amd64()) {
|
|
||||||
return "amd64";
|
|
||||||
} else if (is_arm()) {
|
|
||||||
return "arm";
|
|
||||||
} else if (is_aarch64()) {
|
|
||||||
return "aarch64";
|
|
||||||
} else if (is_ia64()) {
|
|
||||||
return "ia64";
|
|
||||||
} else if (is_powerpc()) {
|
|
||||||
return "powerpc";
|
|
||||||
} else if (is_superh()) {
|
|
||||||
return "superh";
|
|
||||||
}
|
|
||||||
return "unknown";
|
|
||||||
}
|
|
||||||
|
|
||||||
f64 hex_to_f64(const char* str) {
|
f64 hex_to_f64(const char* str) {
|
||||||
f64 ret = 0;
|
f64 ret = 0;
|
||||||
for(; *str; ++str) {
|
for(; *str; ++str) {
|
||||||
|
@ -244,7 +125,7 @@ std::string rawstr(const std::string& str, const usize maxlen) {
|
||||||
std::string ret("");
|
std::string ret("");
|
||||||
for(auto i : str) {
|
for(auto i : str) {
|
||||||
// windows doesn't output unicode normally, so we output the hex
|
// windows doesn't output unicode normally, so we output the hex
|
||||||
if (is_windows() && i<=0) {
|
if (util::is_windows() && i<=0) {
|
||||||
ret += "\\x" + char_to_hex(i);
|
ret += "\\x" + char_to_hex(i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
#include "natives/builtin.h"
|
#include "natives/builtin.h"
|
||||||
|
#include "util/util.h"
|
||||||
|
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
@ -463,11 +465,11 @@ var builtin_sleep(context* ctx, gc* ngc) {
|
||||||
}
|
}
|
||||||
|
|
||||||
var builtin_platform(context* ctx, gc* ngc) {
|
var builtin_platform(context* ctx, gc* ngc) {
|
||||||
return ngc->newstr(get_platform());
|
return ngc->newstr(util::get_platform());
|
||||||
}
|
}
|
||||||
|
|
||||||
var builtin_arch(context* ctx, gc* ngc) {
|
var builtin_arch(context* ctx, gc* ngc) {
|
||||||
return ngc->newstr(get_arch());
|
return ngc->newstr(util::get_arch());
|
||||||
}
|
}
|
||||||
|
|
||||||
// md5 related functions
|
// md5 related functions
|
||||||
|
|
|
@ -4,15 +4,20 @@
|
||||||
#include <io.h>
|
#include <io.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#pragma warning (disable:4996)
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
|
||||||
|
#include "util/util.h"
|
||||||
#include "util/fs.h"
|
#include "util/fs.h"
|
||||||
#include "nasal.h"
|
#include "nasal.h"
|
||||||
|
|
||||||
namespace nasal::fs {
|
namespace nasal::fs {
|
||||||
|
|
||||||
path& path::operator/(const path& another) {
|
path& path::operator/(const path& another) {
|
||||||
this->file_system_path += is_windows()? "\\":"/";
|
this->file_system_path += util::is_windows()? "\\":"/";
|
||||||
this->file_system_path += another.file_system_path;
|
this->file_system_path += another.file_system_path;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,121 @@
|
||||||
#include "util/util.h"
|
#include "util/util.h"
|
||||||
|
|
||||||
namespace nasal::util {}
|
namespace nasal::util {
|
||||||
|
|
||||||
|
bool is_windows() {
|
||||||
|
#if defined(_WIN32) || defined(_WIN64)
|
||||||
|
return true;
|
||||||
|
#else
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
bool is_linux() {
|
||||||
|
#if defined __linux__
|
||||||
|
return true;
|
||||||
|
#else
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
bool is_macos() {
|
||||||
|
#if defined __APPLE__
|
||||||
|
return true;
|
||||||
|
#else
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
bool is_x86() {
|
||||||
|
#if defined(__i386__) || defined(_M_IX86)
|
||||||
|
return true;
|
||||||
|
#else
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
bool is_amd64() {
|
||||||
|
#if defined(__amd64__) || defined(_M_X64)
|
||||||
|
return true;
|
||||||
|
#else
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
bool is_x86_64() {
|
||||||
|
return is_amd64();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool is_arm() {
|
||||||
|
#if defined(__arm__) || defined(_M_ARM)
|
||||||
|
return true;
|
||||||
|
#else
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
bool is_aarch64() {
|
||||||
|
#if defined(__aarch64__) || defined(_M_ARM64)
|
||||||
|
return true;
|
||||||
|
#else
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
bool is_ia64() {
|
||||||
|
#if defined(__ia64__)
|
||||||
|
return true;
|
||||||
|
#else
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
bool is_powerpc() {
|
||||||
|
#if defined(__powerpc__)
|
||||||
|
return true;
|
||||||
|
#else
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
bool is_superh() {
|
||||||
|
#if defined(__sh__)
|
||||||
|
return true;
|
||||||
|
#else
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* get_platform() {
|
||||||
|
if (is_windows()) {
|
||||||
|
return "windows";
|
||||||
|
} else if (is_linux()) {
|
||||||
|
return "linux";
|
||||||
|
} else if (is_macos()) {
|
||||||
|
return "macOS";
|
||||||
|
}
|
||||||
|
return "unknown";
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* get_arch() {
|
||||||
|
if (is_x86()) {
|
||||||
|
return "x86";
|
||||||
|
} else if (is_x86_64()) {
|
||||||
|
return "x86-64";
|
||||||
|
} else if (is_amd64()) {
|
||||||
|
return "amd64";
|
||||||
|
} else if (is_arm()) {
|
||||||
|
return "arm";
|
||||||
|
} else if (is_aarch64()) {
|
||||||
|
return "aarch64";
|
||||||
|
} else if (is_ia64()) {
|
||||||
|
return "ia64";
|
||||||
|
} else if (is_powerpc()) {
|
||||||
|
return "powerpc";
|
||||||
|
} else if (is_superh()) {
|
||||||
|
return "superh";
|
||||||
|
}
|
||||||
|
return "unknown";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,3 +1,19 @@
|
||||||
#pragma
|
#pragma
|
||||||
|
|
||||||
namespace nasal::util {}
|
namespace nasal::util {
|
||||||
|
|
||||||
|
bool is_windows();
|
||||||
|
bool is_linux();
|
||||||
|
bool is_macos();
|
||||||
|
bool is_x86();
|
||||||
|
bool is_amd64();
|
||||||
|
bool is_x86_64();
|
||||||
|
bool is_arm();
|
||||||
|
bool is_aarch64();
|
||||||
|
bool is_ia64();
|
||||||
|
bool is_powerpc();
|
||||||
|
bool is_superh();
|
||||||
|
const char* get_platform();
|
||||||
|
const char* get_arch();
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue