# Copyright (c) 2023 Yuki Kimoto
# MIT License
class File::Spec::Instance {
version_from File::Spec;
use Sys;
use File::Spec::Instance::Unix;
use File::Spec::Instance::Win32;
use Sys::OS;
# Class Methods
static method new : File::Spec::Instance () {
my $self : File::Spec::Instance;
if (Sys::OS->is_windows) {
$self = File::Spec::Instance::Win32->new;
}
else {
$self = File::Spec::Instance::Unix->new;
}
return $self;
}
# Instance Methods
method has_interfaces : int () { return 1; }
method canonpath : string ($path : string) { die "Not implemented"; }
method catdir : string ($parts : string[]) { die "Not implemented"; }
method catfile : string ($parts : string[]) { die "Not implemented"; }
method curdir : string () { die "Not implemented"; }
method devnull : string () { die "Not implemented"; }
method rootdir : string () { die "Not implemented"; }
method tmpdir : string () { die "Not implemented"; }
method updir : string () { die "Not implemented"; }
method no_upwards : string[] ($parts : string[]) { die "Not implemented"; }
method file_name_is_absolute : int ($path : string) { die "Not implemented"; }
method path : string[] () { die "Not implemented"; }
method join : string ($parts : string[]) { die "Not implemented"; }
method splitpath : string[] ($path : string, $no_file : int = 0) { die "Not implemented"; }
method splitdir : string[] ($path : string) { die "Not implemented"; }
method catpath : string ($volume : string, $dir : string, $file : string) { die "Not implemented"; }
method abs2rel : string ($path : string, $base : string = undef) { die "Not implemented"; }
method rel2abs : string ($path : string, $base : string = undef) { die "Not implemented"; }
}