mirror of
https://github.com/alicealys/t5-gsc-utils.git
synced 2025-04-19 20:42:54 +00:00
Support std::filesystem::path
This commit is contained in:
parent
97e39635e0
commit
7cd34d8c91
@ -50,6 +50,20 @@ namespace io
|
||||
gsc::function::add("directoryisempty", utils::io::directory_is_empty);
|
||||
gsc::function::add("listfiles", utils::io::list_files);
|
||||
gsc::function::add("removefile", utils::io::remove_file);
|
||||
|
||||
gsc::function::add("removedirectory", [](const std::filesystem::path& src, const scripting::variadic_args& va)
|
||||
{
|
||||
bool recursive = false;
|
||||
if (va.size() > 0)
|
||||
{
|
||||
recursive = va[0];
|
||||
}
|
||||
|
||||
utils::io::remove_directory(src, recursive);
|
||||
});
|
||||
|
||||
gsc::function::add("copyfolder", utils::io::copy_folder);
|
||||
gsc::function::add("copydirectory", utils::io::copy_folder);
|
||||
gsc::function::add("readfile", static_cast<std::string(*)(const std::string&)>(utils::io::read_file));
|
||||
}
|
||||
};
|
||||
|
@ -58,7 +58,6 @@ namespace scripting
|
||||
return typenames[type_];
|
||||
}
|
||||
|
||||
printf("UNKNOWN TYPE %i\n", type_);
|
||||
return "unknown";
|
||||
}
|
||||
|
||||
@ -134,8 +133,52 @@ namespace scripting
|
||||
|
||||
script_value(const vector& value);
|
||||
|
||||
private:
|
||||
template <typename T>
|
||||
bool is() const;
|
||||
T get() const
|
||||
{
|
||||
if (std::is_constructible<T, std::string>::value && this->is<std::string>()) \
|
||||
{
|
||||
return T(this->as<std::string>());
|
||||
}
|
||||
|
||||
throw std::runtime_error("Invalid type");
|
||||
}
|
||||
public:
|
||||
|
||||
#define ADD_TYPE(type) \
|
||||
template <> \
|
||||
bool is<type>() const; \
|
||||
private: \
|
||||
template <> \
|
||||
type get<>() const; \
|
||||
public: \
|
||||
|
||||
template <typename T>
|
||||
bool is() const
|
||||
{
|
||||
if (std::is_constructible<T, std::string>::value && this->is<std::string>()) \
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
ADD_TYPE(bool)
|
||||
ADD_TYPE(int)
|
||||
ADD_TYPE(unsigned int)
|
||||
ADD_TYPE(float)
|
||||
ADD_TYPE(double)
|
||||
ADD_TYPE(const char*)
|
||||
ADD_TYPE(std::string)
|
||||
|
||||
ADD_TYPE(vector)
|
||||
ADD_TYPE(array)
|
||||
ADD_TYPE(object)
|
||||
ADD_TYPE(function)
|
||||
ADD_TYPE(entity)
|
||||
ADD_TYPE(script_value)
|
||||
|
||||
template <typename T>
|
||||
T as() const
|
||||
@ -184,10 +227,6 @@ namespace scripting
|
||||
|
||||
variable_value value_{};
|
||||
|
||||
private:
|
||||
template <typename T>
|
||||
T get() const;
|
||||
|
||||
};
|
||||
|
||||
class function_argument;
|
||||
|
@ -120,4 +120,16 @@ namespace utils::io
|
||||
{
|
||||
std::filesystem::copy(src, target, std::filesystem::copy_options::overwrite_existing | std::filesystem::copy_options::recursive);
|
||||
}
|
||||
}
|
||||
|
||||
size_t remove_directory(const std::filesystem::path& src, bool recursive)
|
||||
{
|
||||
if (recursive)
|
||||
{
|
||||
return static_cast<size_t>(std::filesystem::remove_all(src));
|
||||
}
|
||||
else
|
||||
{
|
||||
return static_cast<size_t>(std::filesystem::remove(src));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -18,4 +18,5 @@ namespace utils::io
|
||||
bool directory_is_empty(const std::string& directory);
|
||||
std::vector<std::string> list_files(const std::string& directory);
|
||||
void copy_folder(const std::filesystem::path& src, const std::filesystem::path& target);
|
||||
size_t remove_directory(const std::filesystem::path& src, bool recursive = false);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user