# This file was automatically generated by SWIG (https://www.swig.org).
# Version 4.5.1
#
# Do not make changes to this file unless you know what you are doing - modify
# the SWIG interface file instead.

package libdnf5::advisory;
use base qw(Exporter);
use base qw(DynaLoader);
require libdnf5::common;
require libdnf5::exception;
package libdnf5::advisoryc;
bootstrap libdnf5::advisory;
package libdnf5::advisory;
@EXPORT = qw();

# ---------- BASE METHODS -------------

package libdnf5::advisory;

sub TIEHASH {
    my ($classname,$obj) = @_;
    return bless $obj, $classname;
}

sub CLEAR { }

sub FIRSTKEY { }

sub NEXTKEY { }

sub FETCH {
    my ($self,$field) = @_;
    my $member_func = "swig_${field}_get";
    $self->$member_func();
}

sub STORE {
    my ($self,$field,$newval) = @_;
    my $member_func = "swig_${field}_set";
    $self->$member_func($newval);
}

sub this {
    my $ptr = shift;
    return tied(%$ptr);
}


# ------- FUNCTION WRAPPERS --------

package libdnf5::advisory;


############# Class : libdnf5::advisory::AdvisoryId ##############

package libdnf5::advisory::AdvisoryId;
use overload
    "!=" => sub { $_[0]->__ne__($_[1])},
    "==" => sub { $_[0]->__eq__($_[1])},
    "=" => sub { my $class = ref($_[0]); $class->new($_[0]) },
    "fallback" => 1;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( libdnf5::advisory );
%OWNER = ();
%ITERATORS = ();
sub new {
    my $pkg = shift;
    my $self = libdnf5::advisoryc::new_AdvisoryId(@_);
    bless $self, $pkg if defined($self);
}

*__eq__ = *libdnf5::advisoryc::AdvisoryId___eq__;
*__ne__ = *libdnf5::advisoryc::AdvisoryId___ne__;
*swig_id_get = *libdnf5::advisoryc::AdvisoryId_id_get;
*swig_id_set = *libdnf5::advisoryc::AdvisoryId_id_set;
sub DESTROY {
    return unless $_[0]->isa('HASH');
    my $self = tied(%{$_[0]});
    return unless defined $self;
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        libdnf5::advisoryc::delete_AdvisoryId($self);
        delete $OWNER{$self};
    }
}

sub DISOWN {
    my $self = shift;
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
}

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
}


############# Class : libdnf5::advisory::Advisory ##############

package libdnf5::advisory::Advisory;
use overload
    "!=" => sub { $_[0]->__ne__($_[1])},
    "==" => sub { $_[0]->__eq__($_[1])},
    "=" => sub { my $class = ref($_[0]); $class->new($_[0]) },
    "fallback" => 1;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( libdnf5::advisory );
%OWNER = ();
%ITERATORS = ();
sub new {
    my $pkg = shift;
    my $self = libdnf5::advisoryc::new_Advisory(@_);
    bless $self, $pkg if defined($self);
}

*__eq__ = *libdnf5::advisoryc::Advisory___eq__;
*__ne__ = *libdnf5::advisoryc::Advisory___ne__;
sub DESTROY {
    return unless $_[0]->isa('HASH');
    my $self = tied(%{$_[0]});
    return unless defined $self;
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        libdnf5::advisoryc::delete_Advisory($self);
        delete $OWNER{$self};
    }
}

*get_name = *libdnf5::advisoryc::Advisory_get_name;
*get_severity = *libdnf5::advisoryc::Advisory_get_severity;
*get_type = *libdnf5::advisoryc::Advisory_get_type;
*get_buildtime = *libdnf5::advisoryc::Advisory_get_buildtime;
*get_vendor = *libdnf5::advisoryc::Advisory_get_vendor;
*get_description = *libdnf5::advisoryc::Advisory_get_description;
*get_title = *libdnf5::advisoryc::Advisory_get_title;
*get_status = *libdnf5::advisoryc::Advisory_get_status;
*get_rights = *libdnf5::advisoryc::Advisory_get_rights;
*get_message = *libdnf5::advisoryc::Advisory_get_message;
*get_id = *libdnf5::advisoryc::Advisory_get_id;
*get_references = *libdnf5::advisoryc::Advisory_get_references;
*get_collections = *libdnf5::advisoryc::Advisory_get_collections;
*is_applicable = *libdnf5::advisoryc::Advisory_is_applicable;
sub DISOWN {
    my $self = shift;
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
}

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
}


############# Class : libdnf5::advisory::AdvisoryPackage ##############

package libdnf5::advisory::AdvisoryPackage;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( libdnf5::advisory );
%OWNER = ();
%ITERATORS = ();
sub new {
    my $pkg = shift;
    my $self = libdnf5::advisoryc::new_AdvisoryPackage(@_);
    bless $self, $pkg if defined($self);
}

sub DESTROY {
    return unless $_[0]->isa('HASH');
    my $self = tied(%{$_[0]});
    return unless defined $self;
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        libdnf5::advisoryc::delete_AdvisoryPackage($self);
        delete $OWNER{$self};
    }
}

*get_name = *libdnf5::advisoryc::AdvisoryPackage_get_name;
*get_epoch = *libdnf5::advisoryc::AdvisoryPackage_get_epoch;
*get_version = *libdnf5::advisoryc::AdvisoryPackage_get_version;
*get_release = *libdnf5::advisoryc::AdvisoryPackage_get_release;
*get_evr = *libdnf5::advisoryc::AdvisoryPackage_get_evr;
*get_arch = *libdnf5::advisoryc::AdvisoryPackage_get_arch;
*get_nevra = *libdnf5::advisoryc::AdvisoryPackage_get_nevra;
*get_advisory_id = *libdnf5::advisoryc::AdvisoryPackage_get_advisory_id;
*get_reboot_suggested = *libdnf5::advisoryc::AdvisoryPackage_get_reboot_suggested;
*get_restart_suggested = *libdnf5::advisoryc::AdvisoryPackage_get_restart_suggested;
*get_relogin_suggested = *libdnf5::advisoryc::AdvisoryPackage_get_relogin_suggested;
*get_advisory = *libdnf5::advisoryc::AdvisoryPackage_get_advisory;
*get_advisory_collection = *libdnf5::advisoryc::AdvisoryPackage_get_advisory_collection;
sub DISOWN {
    my $self = shift;
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
}

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
}


############# Class : libdnf5::advisory::AdvisorySet ##############

package libdnf5::advisory::AdvisorySet;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( libdnf5::advisory );
%OWNER = ();
%ITERATORS = ();
sub new {
    my $pkg = shift;
    my $self = libdnf5::advisoryc::new_AdvisorySet(@_);
    bless $self, $pkg if defined($self);
}

sub DESTROY {
    return unless $_[0]->isa('HASH');
    my $self = tied(%{$_[0]});
    return unless defined $self;
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        libdnf5::advisoryc::delete_AdvisorySet($self);
        delete $OWNER{$self};
    }
}

*begin = *libdnf5::advisoryc::AdvisorySet_begin;
*end = *libdnf5::advisoryc::AdvisorySet_end;
*__isub__ = *libdnf5::advisoryc::AdvisorySet___isub__;
*update = *libdnf5::advisoryc::AdvisorySet_update;
*intersection = *libdnf5::advisoryc::AdvisorySet_intersection;
*difference = *libdnf5::advisoryc::AdvisorySet_difference;
*clear = *libdnf5::advisoryc::AdvisorySet_clear;
*empty = *libdnf5::advisoryc::AdvisorySet_empty;
*add = *libdnf5::advisoryc::AdvisorySet_add;
*contains = *libdnf5::advisoryc::AdvisorySet_contains;
*remove = *libdnf5::advisoryc::AdvisorySet_remove;
*get_base = *libdnf5::advisoryc::AdvisorySet_get_base;
*size = *libdnf5::advisoryc::AdvisorySet_size;
*swap = *libdnf5::advisoryc::AdvisorySet_swap;
*get_advisory_packages_sorted_by_name_arch_evr = *libdnf5::advisoryc::AdvisorySet_get_advisory_packages_sorted_by_name_arch_evr;
*get_advisory_packages_sorted_by_name_arch_evr_string = *libdnf5::advisoryc::AdvisorySet_get_advisory_packages_sorted_by_name_arch_evr_string;
sub DISOWN {
    my $self = shift;
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
}

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
}


############# Class : libdnf5::advisory::AdvisorySetIterator ##############

package libdnf5::advisory::AdvisorySetIterator;
use overload
    "!=" => sub { $_[0]->__ne__($_[1])},
    "++" => sub { $_[0]->__plusplus__()},
    "==" => sub { $_[0]->__eq__($_[1])},
    "=" => sub { my $class = ref($_[0]); $class->new($_[0]) },
    "fallback" => 1;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( libdnf5::advisory );
%OWNER = ();
%ITERATORS = ();
sub new {
    my $pkg = shift;
    my $self = libdnf5::advisoryc::new_AdvisorySetIterator(@_);
    bless $self, $pkg if defined($self);
}

sub DESTROY {
    return unless $_[0]->isa('HASH');
    my $self = tied(%{$_[0]});
    return unless defined $self;
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        libdnf5::advisoryc::delete_AdvisorySetIterator($self);
        delete $OWNER{$self};
    }
}

*value = *libdnf5::advisoryc::AdvisorySetIterator_value;
*next = *libdnf5::advisoryc::AdvisorySetIterator_next;
*__plusplus__ = *libdnf5::advisoryc::AdvisorySetIterator___plusplus__;
*__eq__ = *libdnf5::advisoryc::AdvisorySetIterator___eq__;
*__ne__ = *libdnf5::advisoryc::AdvisorySetIterator___ne__;
*begin = *libdnf5::advisoryc::AdvisorySetIterator_begin;
*end = *libdnf5::advisoryc::AdvisorySetIterator_end;
sub DISOWN {
    my $self = shift;
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
}

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
}


############# Class : libdnf5::advisory::AdvisoryModule ##############

package libdnf5::advisory::AdvisoryModule;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( libdnf5::advisory );
%OWNER = ();
%ITERATORS = ();
sub new {
    my $pkg = shift;
    my $self = libdnf5::advisoryc::new_AdvisoryModule(@_);
    bless $self, $pkg if defined($self);
}

sub DESTROY {
    return unless $_[0]->isa('HASH');
    my $self = tied(%{$_[0]});
    return unless defined $self;
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        libdnf5::advisoryc::delete_AdvisoryModule($self);
        delete $OWNER{$self};
    }
}

*get_name = *libdnf5::advisoryc::AdvisoryModule_get_name;
*get_stream = *libdnf5::advisoryc::AdvisoryModule_get_stream;
*get_version = *libdnf5::advisoryc::AdvisoryModule_get_version;
*get_context = *libdnf5::advisoryc::AdvisoryModule_get_context;
*get_arch = *libdnf5::advisoryc::AdvisoryModule_get_arch;
*get_nsvca = *libdnf5::advisoryc::AdvisoryModule_get_nsvca;
*get_advisory_id = *libdnf5::advisoryc::AdvisoryModule_get_advisory_id;
*get_advisory = *libdnf5::advisoryc::AdvisoryModule_get_advisory;
*get_advisory_collection = *libdnf5::advisoryc::AdvisoryModule_get_advisory_collection;
sub DISOWN {
    my $self = shift;
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
}

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
}


############# Class : libdnf5::advisory::AdvisoryCollection ##############

package libdnf5::advisory::AdvisoryCollection;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( libdnf5::advisory );
%OWNER = ();
%ITERATORS = ();
sub new {
    my $pkg = shift;
    my $self = libdnf5::advisoryc::new_AdvisoryCollection(@_);
    bless $self, $pkg if defined($self);
}

sub DESTROY {
    return unless $_[0]->isa('HASH');
    my $self = tied(%{$_[0]});
    return unless defined $self;
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        libdnf5::advisoryc::delete_AdvisoryCollection($self);
        delete $OWNER{$self};
    }
}

*is_applicable = *libdnf5::advisoryc::AdvisoryCollection_is_applicable;
*get_advisory_id = *libdnf5::advisoryc::AdvisoryCollection_get_advisory_id;
*get_packages = *libdnf5::advisoryc::AdvisoryCollection_get_packages;
*get_modules = *libdnf5::advisoryc::AdvisoryCollection_get_modules;
*get_advisory = *libdnf5::advisoryc::AdvisoryCollection_get_advisory;
sub DISOWN {
    my $self = shift;
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
}

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
}


############# Class : libdnf5::advisory::AdvisoryQuery ##############

package libdnf5::advisory::AdvisoryQuery;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( libdnf5::advisory::AdvisorySet libdnf5::advisory );
%OWNER = ();
%ITERATORS = ();
sub new {
    my $pkg = shift;
    my $self = libdnf5::advisoryc::new_AdvisoryQuery(@_);
    bless $self, $pkg if defined($self);
}

sub DESTROY {
    return unless $_[0]->isa('HASH');
    my $self = tied(%{$_[0]});
    return unless defined $self;
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        libdnf5::advisoryc::delete_AdvisoryQuery($self);
        delete $OWNER{$self};
    }
}

*filter_name = *libdnf5::advisoryc::AdvisoryQuery_filter_name;
*filter_type = *libdnf5::advisoryc::AdvisoryQuery_filter_type;
*filter_reference = *libdnf5::advisoryc::AdvisoryQuery_filter_reference;
*filter_severity = *libdnf5::advisoryc::AdvisoryQuery_filter_severity;
*filter_packages = *libdnf5::advisoryc::AdvisoryQuery_filter_packages;
*get_advisory_packages_sorted = *libdnf5::advisoryc::AdvisoryQuery_get_advisory_packages_sorted;
sub DISOWN {
    my $self = shift;
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
}

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
}


############# Class : libdnf5::advisory::AdvisoryReference ##############

package libdnf5::advisory::AdvisoryReference;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( libdnf5::advisory );
%OWNER = ();
%ITERATORS = ();
sub new {
    my $pkg = shift;
    my $self = libdnf5::advisoryc::new_AdvisoryReference(@_);
    bless $self, $pkg if defined($self);
}

sub DESTROY {
    return unless $_[0]->isa('HASH');
    my $self = tied(%{$_[0]});
    return unless defined $self;
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        libdnf5::advisoryc::delete_AdvisoryReference($self);
        delete $OWNER{$self};
    }
}

*get_id = *libdnf5::advisoryc::AdvisoryReference_get_id;
*get_type = *libdnf5::advisoryc::AdvisoryReference_get_type;
*get_type_cstring = *libdnf5::advisoryc::AdvisoryReference_get_type_cstring;
*get_title = *libdnf5::advisoryc::AdvisoryReference_get_title;
*get_url = *libdnf5::advisoryc::AdvisoryReference_get_url;
sub DISOWN {
    my $self = shift;
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
}

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
}


############# Class : libdnf5::advisory::VectorAdvisoryModule ##############

package libdnf5::advisory::VectorAdvisoryModule;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( libdnf5::advisory );
%OWNER = ();
%ITERATORS = ();
sub new {
    my $pkg = shift;
    my $self = libdnf5::advisoryc::new_VectorAdvisoryModule(@_);
    bless $self, $pkg if defined($self);
}

*size = *libdnf5::advisoryc::VectorAdvisoryModule_size;
*empty = *libdnf5::advisoryc::VectorAdvisoryModule_empty;
*clear = *libdnf5::advisoryc::VectorAdvisoryModule_clear;
*push = *libdnf5::advisoryc::VectorAdvisoryModule_push;
*pop = *libdnf5::advisoryc::VectorAdvisoryModule_pop;
*get = *libdnf5::advisoryc::VectorAdvisoryModule_get;
*set = *libdnf5::advisoryc::VectorAdvisoryModule_set;
sub DESTROY {
    return unless $_[0]->isa('HASH');
    my $self = tied(%{$_[0]});
    return unless defined $self;
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        libdnf5::advisoryc::delete_VectorAdvisoryModule($self);
        delete $OWNER{$self};
    }
}

sub DISOWN {
    my $self = shift;
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
}

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
}


############# Class : libdnf5::advisory::VectorAdvisoryCollection ##############

package libdnf5::advisory::VectorAdvisoryCollection;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( libdnf5::advisory );
%OWNER = ();
%ITERATORS = ();
sub new {
    my $pkg = shift;
    my $self = libdnf5::advisoryc::new_VectorAdvisoryCollection(@_);
    bless $self, $pkg if defined($self);
}

*size = *libdnf5::advisoryc::VectorAdvisoryCollection_size;
*empty = *libdnf5::advisoryc::VectorAdvisoryCollection_empty;
*clear = *libdnf5::advisoryc::VectorAdvisoryCollection_clear;
*push = *libdnf5::advisoryc::VectorAdvisoryCollection_push;
*pop = *libdnf5::advisoryc::VectorAdvisoryCollection_pop;
*get = *libdnf5::advisoryc::VectorAdvisoryCollection_get;
*set = *libdnf5::advisoryc::VectorAdvisoryCollection_set;
sub DESTROY {
    return unless $_[0]->isa('HASH');
    my $self = tied(%{$_[0]});
    return unless defined $self;
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        libdnf5::advisoryc::delete_VectorAdvisoryCollection($self);
        delete $OWNER{$self};
    }
}

sub DISOWN {
    my $self = shift;
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
}

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
}


############# Class : libdnf5::advisory::VectorAdvisoryPackage ##############

package libdnf5::advisory::VectorAdvisoryPackage;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( libdnf5::advisory );
%OWNER = ();
%ITERATORS = ();
sub new {
    my $pkg = shift;
    my $self = libdnf5::advisoryc::new_VectorAdvisoryPackage(@_);
    bless $self, $pkg if defined($self);
}

*size = *libdnf5::advisoryc::VectorAdvisoryPackage_size;
*empty = *libdnf5::advisoryc::VectorAdvisoryPackage_empty;
*clear = *libdnf5::advisoryc::VectorAdvisoryPackage_clear;
*push = *libdnf5::advisoryc::VectorAdvisoryPackage_push;
*pop = *libdnf5::advisoryc::VectorAdvisoryPackage_pop;
*get = *libdnf5::advisoryc::VectorAdvisoryPackage_get;
*set = *libdnf5::advisoryc::VectorAdvisoryPackage_set;
sub DESTROY {
    return unless $_[0]->isa('HASH');
    my $self = tied(%{$_[0]});
    return unless defined $self;
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        libdnf5::advisoryc::delete_VectorAdvisoryPackage($self);
        delete $OWNER{$self};
    }
}

sub DISOWN {
    my $self = shift;
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
}

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
}


############# Class : libdnf5::advisory::VectorAdvisoryReference ##############

package libdnf5::advisory::VectorAdvisoryReference;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( libdnf5::advisory );
%OWNER = ();
%ITERATORS = ();
sub new {
    my $pkg = shift;
    my $self = libdnf5::advisoryc::new_VectorAdvisoryReference(@_);
    bless $self, $pkg if defined($self);
}

*size = *libdnf5::advisoryc::VectorAdvisoryReference_size;
*empty = *libdnf5::advisoryc::VectorAdvisoryReference_empty;
*clear = *libdnf5::advisoryc::VectorAdvisoryReference_clear;
*push = *libdnf5::advisoryc::VectorAdvisoryReference_push;
*pop = *libdnf5::advisoryc::VectorAdvisoryReference_pop;
*get = *libdnf5::advisoryc::VectorAdvisoryReference_get;
*set = *libdnf5::advisoryc::VectorAdvisoryReference_set;
sub DESTROY {
    return unless $_[0]->isa('HASH');
    my $self = tied(%{$_[0]});
    return unless defined $self;
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        libdnf5::advisoryc::delete_VectorAdvisoryReference($self);
        delete $OWNER{$self};
    }
}

sub DISOWN {
    my $self = shift;
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
}

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
}


# ------- VARIABLE STUBS --------

package libdnf5::advisory;

1;
