# Copyright (c) 2023 Yuki Kimoto
# MIT License

class File::Basename::Instance {
  version_from File::Basename;
  
  allow File::Basename;
  
  use File::Basename::Instance::Win32;
  use File::Basename::Instance::Unix;
  use Sys;
  use Sys::OS;
  
  # Class Methods
  private static method new : File::Basename::Instance () {
    
    my $self : File::Basename::Instance;
    
    if (Sys::OS->is_windows) {
      $self = File::Basename::Instance::Win32->new;
    }
    else {
      $self = File::Basename::Instance::Unix->new;
    }
    
    return $self;
  }
  
  # Instance Methods
  protected method fileparse : string[] ($path : string) { die "Not implemented"; }
  
  protected method basename : string ($path : string) { die "Not implemented"; }
  
  protected method dirname : string ($path : string) { die "Not implemented"; }
  
}