# Copyright (c) 2024 Yuki Kimoto
# MIT License

class Net::SSLeay::ASN1_TIME : pointer {
  version_from Net::SSLeay;
  
  use Net::SSLeay::BIO;
  use Sys::Time::Tm;
  use Net::SSLeay::ASN1_GENERALIZEDTIME;
  
  # Class Methods
  native static method new : Net::SSLeay::ASN1_TIME ();
  
  private static method new_with_pointer : Net::SSLeay::ASN1_TIME ($pointer : Address, $options : object[] = undef) {
    
    my $self = new Net::SSLeay::ASN1_TIME;
    
    Fn->set_pointer($self, $pointer);
    
    return $self;
  }
  
  # Instance Methods
  native method set : void ($t : long);
  
  native method check : int ();
  
  native method print : int ($b : Net::SSLeay::BIO);
  
  native method to_tm : int ($tm : Sys::Time::Tm);
  
  native method to_generalizedtime : Net::SSLeay::ASN1_GENERALIZEDTIME ();
  
  native method DESTROY : void ();
  
}