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

package RNAblueprint;
use base qw(Exporter);
use base qw(DynaLoader);
package RNAblueprintc;
bootstrap RNAblueprint;
package RNAblueprint;
@EXPORT = qw();

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

package RNAblueprint;

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 RNAblueprint;

*initialize_library = *RNAblueprintc::initialize_library;
*structures_to_graphml = *RNAblueprintc::structures_to_graphml;
*graph_is_bipartite = *RNAblueprintc::graph_is_bipartite;
*sequence_structure_compatible = *RNAblueprintc::sequence_structure_compatible;
*incompatible_sequence_positions = *RNAblueprintc::incompatible_sequence_positions;

############# Class : RNAblueprint::StringVector ##############

package RNAblueprint::StringVector;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( RNAblueprint );
%OWNER = ();
%ITERATORS = ();
sub new {
    my $pkg = shift;
    my $self = RNAblueprintc::new_StringVector(@_);
    bless $self, $pkg if defined($self);
}

*size = *RNAblueprintc::StringVector_size;
*empty = *RNAblueprintc::StringVector_empty;
*clear = *RNAblueprintc::StringVector_clear;
*push = *RNAblueprintc::StringVector_push;
*pop = *RNAblueprintc::StringVector_pop;
*get = *RNAblueprintc::StringVector_get;
*set = *RNAblueprintc::StringVector_set;
sub DESTROY {
    return unless $_[0]->isa('HASH');
    my $self = tied(%{$_[0]});
    return unless defined $self;
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        RNAblueprintc::delete_StringVector($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 : RNAblueprint::IntVector ##############

package RNAblueprint::IntVector;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( RNAblueprint );
%OWNER = ();
%ITERATORS = ();
sub new {
    my $pkg = shift;
    my $self = RNAblueprintc::new_IntVector(@_);
    bless $self, $pkg if defined($self);
}

*size = *RNAblueprintc::IntVector_size;
*empty = *RNAblueprintc::IntVector_empty;
*clear = *RNAblueprintc::IntVector_clear;
*push = *RNAblueprintc::IntVector_push;
*pop = *RNAblueprintc::IntVector_pop;
*get = *RNAblueprintc::IntVector_get;
*set = *RNAblueprintc::IntVector_set;
sub DESTROY {
    return unless $_[0]->isa('HASH');
    my $self = tied(%{$_[0]});
    return unless defined $self;
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        RNAblueprintc::delete_IntVector($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 : RNAblueprint::DependencyGraphMT ##############

package RNAblueprint::DependencyGraphMT;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( RNAblueprint );
%OWNER = ();
%ITERATORS = ();
sub new {
    my $pkg = shift;
    my $self = RNAblueprintc::new_DependencyGraphMT(@_);
    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}) {
        RNAblueprintc::delete_DependencyGraphMT($self);
        delete $OWNER{$self};
    }
}

*set_history_size = *RNAblueprintc::DependencyGraphMT_set_history_size;
*get_graphml = *RNAblueprintc::DependencyGraphMT_get_graphml;
*get_sequence = *RNAblueprintc::DependencyGraphMT_get_sequence;
*set_sequence = *RNAblueprintc::DependencyGraphMT_set_sequence;
*revert_sequence = *RNAblueprintc::DependencyGraphMT_revert_sequence;
*get_history = *RNAblueprintc::DependencyGraphMT_get_history;
*sample_plocal = *RNAblueprintc::DependencyGraphMT_sample_plocal;
*sample_clocal = *RNAblueprintc::DependencyGraphMT_sample_clocal;
*sample = *RNAblueprintc::DependencyGraphMT_sample;
*number_of_sequences = *RNAblueprintc::DependencyGraphMT_number_of_sequences;
*number_of_connected_components = *RNAblueprintc::DependencyGraphMT_number_of_connected_components;
*component_vertices = *RNAblueprintc::DependencyGraphMT_component_vertices;
*articulation_vertices = *RNAblueprintc::DependencyGraphMT_articulation_vertices;
*max_number_of_dimensions = *RNAblueprintc::DependencyGraphMT_max_number_of_dimensions;
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 RNAblueprint;


our $VERSION = '1.3.2';
sub VERSION () { $VERSION };
1;
