# This file was automatically generated by SWIG (http://www.swig.org).
# Version 1.3.36
#
# Don't modify this file, modify the SWIG interface instead.

package mapscript;
use base qw(Exporter);
use base qw(DynaLoader);
package mapscriptc;
bootstrap mapscript;
package mapscript;
@EXPORT = qw();

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

package mapscript;

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

*msSaveImage = *mapscriptc::msSaveImage;
*msFreeImage = *mapscriptc::msFreeImage;
*msSetup = *mapscriptc::msSetup;
*msCleanup = *mapscriptc::msCleanup;
*msLoadMapFromString = *mapscriptc::msLoadMapFromString;
*msGetErrorObj = *mapscriptc::msGetErrorObj;
*msResetErrorList = *mapscriptc::msResetErrorList;
*msGetVersion = *mapscriptc::msGetVersion;
*msGetVersionInt = *mapscriptc::msGetVersionInt;
*msGetErrorString = *mapscriptc::msGetErrorString;
*msConnPoolCloseUnreferenced = *mapscriptc::msConnPoolCloseUnreferenced;
*msIO_resetHandlers = *mapscriptc::msIO_resetHandlers;
*msIO_installStdoutToBuffer = *mapscriptc::msIO_installStdoutToBuffer;
*msIO_installStdinFromBuffer = *mapscriptc::msIO_installStdinFromBuffer;
*msIO_stripStdoutBufferContentType = *mapscriptc::msIO_stripStdoutBufferContentType;
*msIO_getStdoutBufferString = *mapscriptc::msIO_getStdoutBufferString;
*msIO_getStdoutBufferBytes = *mapscriptc::msIO_getStdoutBufferBytes;

############# Class : mapscript::intarray ##############

package mapscript::intarray;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_intarray(@_);
    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}) {
        mapscriptc::delete_intarray($self);
        delete $OWNER{$self};
    }
}

*getitem = *mapscriptc::intarray_getitem;
*setitem = *mapscriptc::intarray_setitem;
*cast = *mapscriptc::intarray_cast;
*frompointer = *mapscriptc::intarray_frompointer;
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 : mapscript::fontSetObj ##############

package mapscript::fontSetObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_filename_get = *mapscriptc::fontSetObj_filename_get;
*swig_filename_set = *mapscriptc::fontSetObj_filename_set;
*swig_numfonts_get = *mapscriptc::fontSetObj_numfonts_get;
*swig_numfonts_set = *mapscriptc::fontSetObj_numfonts_set;
*swig_fonts_get = *mapscriptc::fontSetObj_fonts_get;
*swig_fonts_set = *mapscriptc::fontSetObj_fonts_set;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_fontSetObj(@_);
    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}) {
        mapscriptc::delete_fontSetObj($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 : mapscript::outputFormatObj ##############

package mapscript::outputFormatObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_name_get = *mapscriptc::outputFormatObj_name_get;
*swig_name_set = *mapscriptc::outputFormatObj_name_set;
*swig_mimetype_get = *mapscriptc::outputFormatObj_mimetype_get;
*swig_mimetype_set = *mapscriptc::outputFormatObj_mimetype_set;
*swig_driver_get = *mapscriptc::outputFormatObj_driver_get;
*swig_driver_set = *mapscriptc::outputFormatObj_driver_set;
*swig_extension_get = *mapscriptc::outputFormatObj_extension_get;
*swig_extension_set = *mapscriptc::outputFormatObj_extension_set;
*swig_renderer_get = *mapscriptc::outputFormatObj_renderer_get;
*swig_renderer_set = *mapscriptc::outputFormatObj_renderer_set;
*swig_imagemode_get = *mapscriptc::outputFormatObj_imagemode_get;
*swig_imagemode_set = *mapscriptc::outputFormatObj_imagemode_set;
*swig_transparent_get = *mapscriptc::outputFormatObj_transparent_get;
*swig_transparent_set = *mapscriptc::outputFormatObj_transparent_set;
*swig_bands_get = *mapscriptc::outputFormatObj_bands_get;
*swig_bands_set = *mapscriptc::outputFormatObj_bands_set;
*swig_numformatoptions_get = *mapscriptc::outputFormatObj_numformatoptions_get;
*swig_numformatoptions_set = *mapscriptc::outputFormatObj_numformatoptions_set;
*swig_formatoptions_get = *mapscriptc::outputFormatObj_formatoptions_get;
*swig_formatoptions_set = *mapscriptc::outputFormatObj_formatoptions_set;
*swig_refcount_get = *mapscriptc::outputFormatObj_refcount_get;
*swig_refcount_set = *mapscriptc::outputFormatObj_refcount_set;
*swig_inmapfile_get = *mapscriptc::outputFormatObj_inmapfile_get;
*swig_inmapfile_set = *mapscriptc::outputFormatObj_inmapfile_set;
*swig_vtable_get = *mapscriptc::outputFormatObj_vtable_get;
*swig_vtable_set = *mapscriptc::outputFormatObj_vtable_set;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_outputFormatObj(@_);
    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}) {
        mapscriptc::delete_outputFormatObj($self);
        delete $OWNER{$self};
    }
}

*setExtension = *mapscriptc::outputFormatObj_setExtension;
*setMimetype = *mapscriptc::outputFormatObj_setMimetype;
*setOption = *mapscriptc::outputFormatObj_setOption;
*validate = *mapscriptc::outputFormatObj_validate;
*getOption = *mapscriptc::outputFormatObj_getOption;
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 : mapscript::queryMapObj ##############

package mapscript::queryMapObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_height_get = *mapscriptc::queryMapObj_height_get;
*swig_height_set = *mapscriptc::queryMapObj_height_set;
*swig_width_get = *mapscriptc::queryMapObj_width_get;
*swig_width_set = *mapscriptc::queryMapObj_width_set;
*swig_status_get = *mapscriptc::queryMapObj_status_get;
*swig_status_set = *mapscriptc::queryMapObj_status_set;
*swig_style_get = *mapscriptc::queryMapObj_style_get;
*swig_style_set = *mapscriptc::queryMapObj_style_set;
*swig_color_get = *mapscriptc::queryMapObj_color_get;
*swig_color_set = *mapscriptc::queryMapObj_color_set;
*updateFromString = *mapscriptc::queryMapObj_updateFromString;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_queryMapObj(@_);
    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}) {
        mapscriptc::delete_queryMapObj($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 : mapscript::labelObj ##############

package mapscript::labelObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_font_get = *mapscriptc::labelObj_font_get;
*swig_font_set = *mapscriptc::labelObj_font_set;
*swig_type_get = *mapscriptc::labelObj_type_get;
*swig_type_set = *mapscriptc::labelObj_type_set;
*swig_color_get = *mapscriptc::labelObj_color_get;
*swig_color_set = *mapscriptc::labelObj_color_set;
*swig_outlinecolor_get = *mapscriptc::labelObj_outlinecolor_get;
*swig_outlinecolor_set = *mapscriptc::labelObj_outlinecolor_set;
*swig_outlinewidth_get = *mapscriptc::labelObj_outlinewidth_get;
*swig_outlinewidth_set = *mapscriptc::labelObj_outlinewidth_set;
*swig_shadowcolor_get = *mapscriptc::labelObj_shadowcolor_get;
*swig_shadowcolor_set = *mapscriptc::labelObj_shadowcolor_set;
*swig_shadowsizex_get = *mapscriptc::labelObj_shadowsizex_get;
*swig_shadowsizex_set = *mapscriptc::labelObj_shadowsizex_set;
*swig_shadowsizey_get = *mapscriptc::labelObj_shadowsizey_get;
*swig_shadowsizey_set = *mapscriptc::labelObj_shadowsizey_set;
*swig_backgroundcolor_get = *mapscriptc::labelObj_backgroundcolor_get;
*swig_backgroundcolor_set = *mapscriptc::labelObj_backgroundcolor_set;
*swig_backgroundshadowcolor_get = *mapscriptc::labelObj_backgroundshadowcolor_get;
*swig_backgroundshadowcolor_set = *mapscriptc::labelObj_backgroundshadowcolor_set;
*swig_backgroundshadowsizex_get = *mapscriptc::labelObj_backgroundshadowsizex_get;
*swig_backgroundshadowsizex_set = *mapscriptc::labelObj_backgroundshadowsizex_set;
*swig_backgroundshadowsizey_get = *mapscriptc::labelObj_backgroundshadowsizey_get;
*swig_backgroundshadowsizey_set = *mapscriptc::labelObj_backgroundshadowsizey_set;
*swig_size_get = *mapscriptc::labelObj_size_get;
*swig_size_set = *mapscriptc::labelObj_size_set;
*swig_minsize_get = *mapscriptc::labelObj_minsize_get;
*swig_minsize_set = *mapscriptc::labelObj_minsize_set;
*swig_maxsize_get = *mapscriptc::labelObj_maxsize_get;
*swig_maxsize_set = *mapscriptc::labelObj_maxsize_set;
*swig_position_get = *mapscriptc::labelObj_position_get;
*swig_position_set = *mapscriptc::labelObj_position_set;
*swig_offsetx_get = *mapscriptc::labelObj_offsetx_get;
*swig_offsetx_set = *mapscriptc::labelObj_offsetx_set;
*swig_offsety_get = *mapscriptc::labelObj_offsety_get;
*swig_offsety_set = *mapscriptc::labelObj_offsety_set;
*swig_angle_get = *mapscriptc::labelObj_angle_get;
*swig_angle_set = *mapscriptc::labelObj_angle_set;
*swig_autoangle_get = *mapscriptc::labelObj_autoangle_get;
*swig_autoangle_set = *mapscriptc::labelObj_autoangle_set;
*swig_autofollow_get = *mapscriptc::labelObj_autofollow_get;
*swig_autofollow_set = *mapscriptc::labelObj_autofollow_set;
*swig_buffer_get = *mapscriptc::labelObj_buffer_get;
*swig_buffer_set = *mapscriptc::labelObj_buffer_set;
*swig_antialias_get = *mapscriptc::labelObj_antialias_get;
*swig_antialias_set = *mapscriptc::labelObj_antialias_set;
*swig_align_get = *mapscriptc::labelObj_align_get;
*swig_align_set = *mapscriptc::labelObj_align_set;
*swig_wrap_get = *mapscriptc::labelObj_wrap_get;
*swig_wrap_set = *mapscriptc::labelObj_wrap_set;
*swig_maxlength_get = *mapscriptc::labelObj_maxlength_get;
*swig_maxlength_set = *mapscriptc::labelObj_maxlength_set;
*swig_minlength_get = *mapscriptc::labelObj_minlength_get;
*swig_minlength_set = *mapscriptc::labelObj_minlength_set;
*swig_space_size_10_get = *mapscriptc::labelObj_space_size_10_get;
*swig_space_size_10_set = *mapscriptc::labelObj_space_size_10_set;
*swig_minfeaturesize_get = *mapscriptc::labelObj_minfeaturesize_get;
*swig_minfeaturesize_set = *mapscriptc::labelObj_minfeaturesize_set;
*swig_autominfeaturesize_get = *mapscriptc::labelObj_autominfeaturesize_get;
*swig_autominfeaturesize_set = *mapscriptc::labelObj_autominfeaturesize_set;
*swig_minscaledenom_get = *mapscriptc::labelObj_minscaledenom_get;
*swig_minscaledenom_set = *mapscriptc::labelObj_minscaledenom_set;
*swig_maxscaledenom_get = *mapscriptc::labelObj_maxscaledenom_get;
*swig_maxscaledenom_set = *mapscriptc::labelObj_maxscaledenom_set;
*swig_mindistance_get = *mapscriptc::labelObj_mindistance_get;
*swig_mindistance_set = *mapscriptc::labelObj_mindistance_set;
*swig_repeatdistance_get = *mapscriptc::labelObj_repeatdistance_get;
*swig_repeatdistance_set = *mapscriptc::labelObj_repeatdistance_set;
*swig_partials_get = *mapscriptc::labelObj_partials_get;
*swig_partials_set = *mapscriptc::labelObj_partials_set;
*swig_force_get = *mapscriptc::labelObj_force_get;
*swig_force_set = *mapscriptc::labelObj_force_set;
*swig_encoding_get = *mapscriptc::labelObj_encoding_get;
*swig_encoding_set = *mapscriptc::labelObj_encoding_set;
*swig_priority_get = *mapscriptc::labelObj_priority_get;
*swig_priority_set = *mapscriptc::labelObj_priority_set;
*updateFromString = *mapscriptc::labelObj_updateFromString;
*removeBinding = *mapscriptc::labelObj_removeBinding;
*getBinding = *mapscriptc::labelObj_getBinding;
*setBinding = *mapscriptc::labelObj_setBinding;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_labelObj(@_);
    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}) {
        mapscriptc::delete_labelObj($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 : mapscript::webObj ##############

package mapscript::webObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_log_get = *mapscriptc::webObj_log_get;
*swig_log_set = *mapscriptc::webObj_log_set;
*swig_imagepath_get = *mapscriptc::webObj_imagepath_get;
*swig_imagepath_set = *mapscriptc::webObj_imagepath_set;
*swig_imageurl_get = *mapscriptc::webObj_imageurl_get;
*swig_imageurl_set = *mapscriptc::webObj_imageurl_set;
*swig_map_get = *mapscriptc::webObj_map_get;
*swig_map_set = *mapscriptc::webObj_map_set;
*swig_template_get = *mapscriptc::webObj_template_get;
*swig_template_set = *mapscriptc::webObj_template_set;
*swig_header_get = *mapscriptc::webObj_header_get;
*swig_header_set = *mapscriptc::webObj_header_set;
*swig_footer_get = *mapscriptc::webObj_footer_get;
*swig_footer_set = *mapscriptc::webObj_footer_set;
*swig_empty_get = *mapscriptc::webObj_empty_get;
*swig_empty_set = *mapscriptc::webObj_empty_set;
*swig_error_get = *mapscriptc::webObj_error_get;
*swig_error_set = *mapscriptc::webObj_error_set;
*swig_extent_get = *mapscriptc::webObj_extent_get;
*swig_extent_set = *mapscriptc::webObj_extent_set;
*swig_minscaledenom_get = *mapscriptc::webObj_minscaledenom_get;
*swig_minscaledenom_set = *mapscriptc::webObj_minscaledenom_set;
*swig_maxscaledenom_get = *mapscriptc::webObj_maxscaledenom_get;
*swig_maxscaledenom_set = *mapscriptc::webObj_maxscaledenom_set;
*swig_mintemplate_get = *mapscriptc::webObj_mintemplate_get;
*swig_mintemplate_set = *mapscriptc::webObj_mintemplate_set;
*swig_maxtemplate_get = *mapscriptc::webObj_maxtemplate_get;
*swig_maxtemplate_set = *mapscriptc::webObj_maxtemplate_set;
*swig_queryformat_get = *mapscriptc::webObj_queryformat_get;
*swig_queryformat_set = *mapscriptc::webObj_queryformat_set;
*swig_legendformat_get = *mapscriptc::webObj_legendformat_get;
*swig_legendformat_set = *mapscriptc::webObj_legendformat_set;
*swig_browseformat_get = *mapscriptc::webObj_browseformat_get;
*swig_browseformat_set = *mapscriptc::webObj_browseformat_set;
*swig_metadata_get = *mapscriptc::webObj_metadata_get;
*swig_metadata_set = *mapscriptc::webObj_metadata_set;
*swig_validation_get = *mapscriptc::webObj_validation_get;
*swig_validation_set = *mapscriptc::webObj_validation_set;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_webObj(@_);
    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}) {
        mapscriptc::delete_webObj($self);
        delete $OWNER{$self};
    }
}

*updateFromString = *mapscriptc::webObj_updateFromString;
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 : mapscript::styleObj ##############

package mapscript::styleObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_refcount_get = *mapscriptc::styleObj_refcount_get;
*swig_refcount_set = *mapscriptc::styleObj_refcount_set;
*swig__geomtransformexpression_get = *mapscriptc::styleObj__geomtransformexpression_get;
*swig__geomtransformexpression_set = *mapscriptc::styleObj__geomtransformexpression_set;
*swig__geomtransform_get = *mapscriptc::styleObj__geomtransform_get;
*swig__geomtransform_set = *mapscriptc::styleObj__geomtransform_set;
*swig_autoangle_get = *mapscriptc::styleObj_autoangle_get;
*swig_autoangle_set = *mapscriptc::styleObj_autoangle_set;
*swig_color_get = *mapscriptc::styleObj_color_get;
*swig_color_set = *mapscriptc::styleObj_color_set;
*swig_backgroundcolor_get = *mapscriptc::styleObj_backgroundcolor_get;
*swig_backgroundcolor_set = *mapscriptc::styleObj_backgroundcolor_set;
*swig_outlinecolor_get = *mapscriptc::styleObj_outlinecolor_get;
*swig_outlinecolor_set = *mapscriptc::styleObj_outlinecolor_set;
*swig_opacity_get = *mapscriptc::styleObj_opacity_get;
*swig_opacity_set = *mapscriptc::styleObj_opacity_set;
*swig_mincolor_get = *mapscriptc::styleObj_mincolor_get;
*swig_mincolor_set = *mapscriptc::styleObj_mincolor_set;
*swig_maxcolor_get = *mapscriptc::styleObj_maxcolor_get;
*swig_maxcolor_set = *mapscriptc::styleObj_maxcolor_set;
*swig_minvalue_get = *mapscriptc::styleObj_minvalue_get;
*swig_minvalue_set = *mapscriptc::styleObj_minvalue_set;
*swig_maxvalue_get = *mapscriptc::styleObj_maxvalue_get;
*swig_maxvalue_set = *mapscriptc::styleObj_maxvalue_set;
*swig_rangeitem_get = *mapscriptc::styleObj_rangeitem_get;
*swig_rangeitem_set = *mapscriptc::styleObj_rangeitem_set;
*swig_rangeitemindex_get = *mapscriptc::styleObj_rangeitemindex_get;
*swig_rangeitemindex_set = *mapscriptc::styleObj_rangeitemindex_set;
*swig_symbol_get = *mapscriptc::styleObj_symbol_get;
*swig_symbol_set = *mapscriptc::styleObj_symbol_set;
*swig_symbolname_get = *mapscriptc::styleObj_symbolname_get;
*swig_symbolname_set = *mapscriptc::styleObj_symbolname_set;
*swig_size_get = *mapscriptc::styleObj_size_get;
*swig_size_set = *mapscriptc::styleObj_size_set;
*swig_minsize_get = *mapscriptc::styleObj_minsize_get;
*swig_minsize_set = *mapscriptc::styleObj_minsize_set;
*swig_maxsize_get = *mapscriptc::styleObj_maxsize_get;
*swig_maxsize_set = *mapscriptc::styleObj_maxsize_set;
*swig_patternlength_get = *mapscriptc::styleObj_patternlength_get;
*swig_patternlength_set = *mapscriptc::styleObj_patternlength_set;
*swig_pattern_get = *mapscriptc::styleObj_pattern_get;
*swig_pattern_set = *mapscriptc::styleObj_pattern_set;
*swig_gap_get = *mapscriptc::styleObj_gap_get;
*swig_gap_set = *mapscriptc::styleObj_gap_set;
*swig_position_get = *mapscriptc::styleObj_position_get;
*swig_position_set = *mapscriptc::styleObj_position_set;
*swig_linecap_get = *mapscriptc::styleObj_linecap_get;
*swig_linecap_set = *mapscriptc::styleObj_linecap_set;
*swig_linejoin_get = *mapscriptc::styleObj_linejoin_get;
*swig_linejoin_set = *mapscriptc::styleObj_linejoin_set;
*swig_linejoinmaxsize_get = *mapscriptc::styleObj_linejoinmaxsize_get;
*swig_linejoinmaxsize_set = *mapscriptc::styleObj_linejoinmaxsize_set;
*swig_width_get = *mapscriptc::styleObj_width_get;
*swig_width_set = *mapscriptc::styleObj_width_set;
*swig_outlinewidth_get = *mapscriptc::styleObj_outlinewidth_get;
*swig_outlinewidth_set = *mapscriptc::styleObj_outlinewidth_set;
*swig_minwidth_get = *mapscriptc::styleObj_minwidth_get;
*swig_minwidth_set = *mapscriptc::styleObj_minwidth_set;
*swig_maxwidth_get = *mapscriptc::styleObj_maxwidth_get;
*swig_maxwidth_set = *mapscriptc::styleObj_maxwidth_set;
*swig_offsetx_get = *mapscriptc::styleObj_offsetx_get;
*swig_offsetx_set = *mapscriptc::styleObj_offsetx_set;
*swig_offsety_get = *mapscriptc::styleObj_offsety_get;
*swig_offsety_set = *mapscriptc::styleObj_offsety_set;
*swig_angle_get = *mapscriptc::styleObj_angle_get;
*swig_angle_set = *mapscriptc::styleObj_angle_set;
*swig_antialias_get = *mapscriptc::styleObj_antialias_get;
*swig_antialias_set = *mapscriptc::styleObj_antialias_set;
*swig_minscaledenom_get = *mapscriptc::styleObj_minscaledenom_get;
*swig_minscaledenom_set = *mapscriptc::styleObj_minscaledenom_set;
*swig_maxscaledenom_get = *mapscriptc::styleObj_maxscaledenom_get;
*swig_maxscaledenom_set = *mapscriptc::styleObj_maxscaledenom_set;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_styleObj(@_);
    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}) {
        mapscriptc::delete_styleObj($self);
        delete $OWNER{$self};
    }
}

*updateFromString = *mapscriptc::styleObj_updateFromString;
*clone = *mapscriptc::styleObj_clone;
*setSymbolByName = *mapscriptc::styleObj_setSymbolByName;
*removeBinding = *mapscriptc::styleObj_removeBinding;
*setBinding = *mapscriptc::styleObj_setBinding;
*getBinding = *mapscriptc::styleObj_getBinding;
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 : mapscript::classObj ##############

package mapscript::classObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_status_get = *mapscriptc::classObj_status_get;
*swig_status_set = *mapscriptc::classObj_status_set;
*swig_numstyles_get = *mapscriptc::classObj_numstyles_get;
*swig_numstyles_set = *mapscriptc::classObj_numstyles_set;
*swig_label_get = *mapscriptc::classObj_label_get;
*swig_label_set = *mapscriptc::classObj_label_set;
*swig_name_get = *mapscriptc::classObj_name_get;
*swig_name_set = *mapscriptc::classObj_name_set;
*swig_title_get = *mapscriptc::classObj_title_get;
*swig_title_set = *mapscriptc::classObj_title_set;
*swig_template_get = *mapscriptc::classObj_template_get;
*swig_template_set = *mapscriptc::classObj_template_set;
*swig_type_get = *mapscriptc::classObj_type_get;
*swig_type_set = *mapscriptc::classObj_type_set;
*swig_metadata_get = *mapscriptc::classObj_metadata_get;
*swig_metadata_set = *mapscriptc::classObj_metadata_set;
*swig_validation_get = *mapscriptc::classObj_validation_get;
*swig_validation_set = *mapscriptc::classObj_validation_set;
*swig_minscaledenom_get = *mapscriptc::classObj_minscaledenom_get;
*swig_minscaledenom_set = *mapscriptc::classObj_minscaledenom_set;
*swig_maxscaledenom_get = *mapscriptc::classObj_maxscaledenom_get;
*swig_maxscaledenom_set = *mapscriptc::classObj_maxscaledenom_set;
*swig_refcount_get = *mapscriptc::classObj_refcount_get;
*swig_refcount_set = *mapscriptc::classObj_refcount_set;
*swig_layer_get = *mapscriptc::classObj_layer_get;
*swig_layer_set = *mapscriptc::classObj_layer_set;
*swig_debug_get = *mapscriptc::classObj_debug_get;
*swig_debug_set = *mapscriptc::classObj_debug_set;
*swig_keyimage_get = *mapscriptc::classObj_keyimage_get;
*swig_keyimage_set = *mapscriptc::classObj_keyimage_set;
*swig_group_get = *mapscriptc::classObj_group_get;
*swig_group_set = *mapscriptc::classObj_group_set;
sub new {
        my $pkg = shift;
        my $self = mapscriptc::new_classObj(@_);
        bless $self, $pkg if defined($self);
        if (defined($_[0])) {
                # parent reference
                mapscript::RFC24_ADD_PARENT_REF( tied(%$self), $_[0]);
        }
        return $self;
}

sub DESTROY {
        return unless $_[0]->isa('HASH');
        my $self = tied(%{$_[0]});
        return unless defined $self;
        delete $ITERATORS{$self};
        mapscriptc::delete_classObj($self);
        # remove parent reference
        mapscript::RFC24_DEL_PARENT_REF($self);
}

*updateFromString = *mapscriptc::classObj_updateFromString;
*clone = *mapscriptc::classObj_clone;
*setExpression = *mapscriptc::classObj_setExpression;
*getExpressionString = *mapscriptc::classObj_getExpressionString;
*setText = *mapscriptc::classObj_setText;
*getTextString = *mapscriptc::classObj_getTextString;
*getMetaData = *mapscriptc::classObj_getMetaData;
*setMetaData = *mapscriptc::classObj_setMetaData;
*getFirstMetaDataKey = *mapscriptc::classObj_getFirstMetaDataKey;
*getNextMetaDataKey = *mapscriptc::classObj_getNextMetaDataKey;
*drawLegendIcon = *mapscriptc::classObj_drawLegendIcon;
*createLegendIcon = *mapscriptc::classObj_createLegendIcon;
*getStyle = *mapscriptc::classObj_getStyle;
*insertStyle = *mapscriptc::classObj_insertStyle;
*removeStyle = *mapscriptc::classObj_removeStyle;
*moveStyleUp = *mapscriptc::classObj_moveStyleUp;
*moveStyleDown = *mapscriptc::classObj_moveStyleDown;
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 : mapscript::labelCacheMemberObj ##############

package mapscript::labelCacheMemberObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_text_get = *mapscriptc::labelCacheMemberObj_text_get;
*swig_text_set = *mapscriptc::labelCacheMemberObj_text_set;
*swig_featuresize_get = *mapscriptc::labelCacheMemberObj_featuresize_get;
*swig_featuresize_set = *mapscriptc::labelCacheMemberObj_featuresize_set;
*swig_styles_get = *mapscriptc::labelCacheMemberObj_styles_get;
*swig_styles_set = *mapscriptc::labelCacheMemberObj_styles_set;
*swig_numstyles_get = *mapscriptc::labelCacheMemberObj_numstyles_get;
*swig_numstyles_set = *mapscriptc::labelCacheMemberObj_numstyles_set;
*swig_label_get = *mapscriptc::labelCacheMemberObj_label_get;
*swig_label_set = *mapscriptc::labelCacheMemberObj_label_set;
*swig_layerindex_get = *mapscriptc::labelCacheMemberObj_layerindex_get;
*swig_layerindex_set = *mapscriptc::labelCacheMemberObj_layerindex_set;
*swig_classindex_get = *mapscriptc::labelCacheMemberObj_classindex_get;
*swig_classindex_set = *mapscriptc::labelCacheMemberObj_classindex_set;
*swig_tileindex_get = *mapscriptc::labelCacheMemberObj_tileindex_get;
*swig_tileindex_set = *mapscriptc::labelCacheMemberObj_tileindex_set;
*swig_shapeindex_get = *mapscriptc::labelCacheMemberObj_shapeindex_get;
*swig_shapeindex_set = *mapscriptc::labelCacheMemberObj_shapeindex_set;
*swig_shapetype_get = *mapscriptc::labelCacheMemberObj_shapetype_get;
*swig_shapetype_set = *mapscriptc::labelCacheMemberObj_shapetype_set;
*swig_point_get = *mapscriptc::labelCacheMemberObj_point_get;
*swig_point_set = *mapscriptc::labelCacheMemberObj_point_set;
*swig_poly_get = *mapscriptc::labelCacheMemberObj_poly_get;
*swig_poly_set = *mapscriptc::labelCacheMemberObj_poly_set;
*swig_status_get = *mapscriptc::labelCacheMemberObj_status_get;
*swig_status_set = *mapscriptc::labelCacheMemberObj_status_set;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_labelCacheMemberObj(@_);
    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}) {
        mapscriptc::delete_labelCacheMemberObj($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 : mapscript::markerCacheMemberObj ##############

package mapscript::markerCacheMemberObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_id_get = *mapscriptc::markerCacheMemberObj_id_get;
*swig_id_set = *mapscriptc::markerCacheMemberObj_id_set;
*swig_poly_get = *mapscriptc::markerCacheMemberObj_poly_get;
*swig_poly_set = *mapscriptc::markerCacheMemberObj_poly_set;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_markerCacheMemberObj(@_);
    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}) {
        mapscriptc::delete_markerCacheMemberObj($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 : mapscript::labelCacheSlotObj ##############

package mapscript::labelCacheSlotObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_labels_get = *mapscriptc::labelCacheSlotObj_labels_get;
*swig_labels_set = *mapscriptc::labelCacheSlotObj_labels_set;
*swig_numlabels_get = *mapscriptc::labelCacheSlotObj_numlabels_get;
*swig_numlabels_set = *mapscriptc::labelCacheSlotObj_numlabels_set;
*swig_cachesize_get = *mapscriptc::labelCacheSlotObj_cachesize_get;
*swig_cachesize_set = *mapscriptc::labelCacheSlotObj_cachesize_set;
*swig_markers_get = *mapscriptc::labelCacheSlotObj_markers_get;
*swig_markers_set = *mapscriptc::labelCacheSlotObj_markers_set;
*swig_nummarkers_get = *mapscriptc::labelCacheSlotObj_nummarkers_get;
*swig_nummarkers_set = *mapscriptc::labelCacheSlotObj_nummarkers_set;
*swig_markercachesize_get = *mapscriptc::labelCacheSlotObj_markercachesize_get;
*swig_markercachesize_set = *mapscriptc::labelCacheSlotObj_markercachesize_set;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_labelCacheSlotObj(@_);
    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}) {
        mapscriptc::delete_labelCacheSlotObj($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 : mapscript::labelCacheObj ##############

package mapscript::labelCacheObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_slots_get = *mapscriptc::labelCacheObj_slots_get;
*swig_slots_set = *mapscriptc::labelCacheObj_slots_set;
*swig_numlabels_get = *mapscriptc::labelCacheObj_numlabels_get;
*swig_numlabels_set = *mapscriptc::labelCacheObj_numlabels_set;
*freeCache = *mapscriptc::labelCacheObj_freeCache;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_labelCacheObj(@_);
    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}) {
        mapscriptc::delete_labelCacheObj($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 : mapscript::resultCacheMemberObj ##############

package mapscript::resultCacheMemberObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_shapeindex_get = *mapscriptc::resultCacheMemberObj_shapeindex_get;
*swig_shapeindex_set = *mapscriptc::resultCacheMemberObj_shapeindex_set;
*swig_tileindex_get = *mapscriptc::resultCacheMemberObj_tileindex_get;
*swig_tileindex_set = *mapscriptc::resultCacheMemberObj_tileindex_set;
*swig_classindex_get = *mapscriptc::resultCacheMemberObj_classindex_get;
*swig_classindex_set = *mapscriptc::resultCacheMemberObj_classindex_set;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_resultCacheMemberObj(@_);
    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}) {
        mapscriptc::delete_resultCacheMemberObj($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 : mapscript::resultCacheObj ##############

package mapscript::resultCacheObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_numresults_get = *mapscriptc::resultCacheObj_numresults_get;
*swig_numresults_set = *mapscriptc::resultCacheObj_numresults_set;
*swig_bounds_get = *mapscriptc::resultCacheObj_bounds_get;
*swig_bounds_set = *mapscriptc::resultCacheObj_bounds_set;
*getResult = *mapscriptc::resultCacheObj_getResult;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_resultCacheObj(@_);
    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}) {
        mapscriptc::delete_resultCacheObj($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 : mapscript::symbolSetObj ##############

package mapscript::symbolSetObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_filename_get = *mapscriptc::symbolSetObj_filename_get;
*swig_filename_set = *mapscriptc::symbolSetObj_filename_set;
*swig_imagecachesize_get = *mapscriptc::symbolSetObj_imagecachesize_get;
*swig_imagecachesize_set = *mapscriptc::symbolSetObj_imagecachesize_set;
*swig_numsymbols_get = *mapscriptc::symbolSetObj_numsymbols_get;
*swig_numsymbols_set = *mapscriptc::symbolSetObj_numsymbols_set;
*swig_maxsymbols_get = *mapscriptc::symbolSetObj_maxsymbols_get;
*swig_maxsymbols_set = *mapscriptc::symbolSetObj_maxsymbols_set;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_symbolSetObj(@_);
    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}) {
        mapscriptc::delete_symbolSetObj($self);
        delete $OWNER{$self};
    }
}

*getSymbol = *mapscriptc::symbolSetObj_getSymbol;
*getSymbolByName = *mapscriptc::symbolSetObj_getSymbolByName;
*index = *mapscriptc::symbolSetObj_index;
*appendSymbol = *mapscriptc::symbolSetObj_appendSymbol;
*removeSymbol = *mapscriptc::symbolSetObj_removeSymbol;
*save = *mapscriptc::symbolSetObj_save;
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 : mapscript::referenceMapObj ##############

package mapscript::referenceMapObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_extent_get = *mapscriptc::referenceMapObj_extent_get;
*swig_extent_set = *mapscriptc::referenceMapObj_extent_set;
*swig_height_get = *mapscriptc::referenceMapObj_height_get;
*swig_height_set = *mapscriptc::referenceMapObj_height_set;
*swig_width_get = *mapscriptc::referenceMapObj_width_get;
*swig_width_set = *mapscriptc::referenceMapObj_width_set;
*swig_color_get = *mapscriptc::referenceMapObj_color_get;
*swig_color_set = *mapscriptc::referenceMapObj_color_set;
*swig_outlinecolor_get = *mapscriptc::referenceMapObj_outlinecolor_get;
*swig_outlinecolor_set = *mapscriptc::referenceMapObj_outlinecolor_set;
*swig_image_get = *mapscriptc::referenceMapObj_image_get;
*swig_image_set = *mapscriptc::referenceMapObj_image_set;
*swig_status_get = *mapscriptc::referenceMapObj_status_get;
*swig_status_set = *mapscriptc::referenceMapObj_status_set;
*swig_marker_get = *mapscriptc::referenceMapObj_marker_get;
*swig_marker_set = *mapscriptc::referenceMapObj_marker_set;
*swig_markername_get = *mapscriptc::referenceMapObj_markername_get;
*swig_markername_set = *mapscriptc::referenceMapObj_markername_set;
*swig_markersize_get = *mapscriptc::referenceMapObj_markersize_get;
*swig_markersize_set = *mapscriptc::referenceMapObj_markersize_set;
*swig_minboxsize_get = *mapscriptc::referenceMapObj_minboxsize_get;
*swig_minboxsize_set = *mapscriptc::referenceMapObj_minboxsize_set;
*swig_maxboxsize_get = *mapscriptc::referenceMapObj_maxboxsize_get;
*swig_maxboxsize_set = *mapscriptc::referenceMapObj_maxboxsize_set;
*swig_map_get = *mapscriptc::referenceMapObj_map_get;
*swig_map_set = *mapscriptc::referenceMapObj_map_set;
*updateFromString = *mapscriptc::referenceMapObj_updateFromString;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_referenceMapObj(@_);
    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}) {
        mapscriptc::delete_referenceMapObj($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 : mapscript::scalebarObj ##############

package mapscript::scalebarObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_imagecolor_get = *mapscriptc::scalebarObj_imagecolor_get;
*swig_imagecolor_set = *mapscriptc::scalebarObj_imagecolor_set;
*swig_height_get = *mapscriptc::scalebarObj_height_get;
*swig_height_set = *mapscriptc::scalebarObj_height_set;
*swig_width_get = *mapscriptc::scalebarObj_width_get;
*swig_width_set = *mapscriptc::scalebarObj_width_set;
*swig_style_get = *mapscriptc::scalebarObj_style_get;
*swig_style_set = *mapscriptc::scalebarObj_style_set;
*swig_intervals_get = *mapscriptc::scalebarObj_intervals_get;
*swig_intervals_set = *mapscriptc::scalebarObj_intervals_set;
*swig_label_get = *mapscriptc::scalebarObj_label_get;
*swig_label_set = *mapscriptc::scalebarObj_label_set;
*swig_color_get = *mapscriptc::scalebarObj_color_get;
*swig_color_set = *mapscriptc::scalebarObj_color_set;
*swig_backgroundcolor_get = *mapscriptc::scalebarObj_backgroundcolor_get;
*swig_backgroundcolor_set = *mapscriptc::scalebarObj_backgroundcolor_set;
*swig_outlinecolor_get = *mapscriptc::scalebarObj_outlinecolor_get;
*swig_outlinecolor_set = *mapscriptc::scalebarObj_outlinecolor_set;
*swig_units_get = *mapscriptc::scalebarObj_units_get;
*swig_units_set = *mapscriptc::scalebarObj_units_set;
*swig_status_get = *mapscriptc::scalebarObj_status_get;
*swig_status_set = *mapscriptc::scalebarObj_status_set;
*swig_position_get = *mapscriptc::scalebarObj_position_get;
*swig_position_set = *mapscriptc::scalebarObj_position_set;
*swig_postlabelcache_get = *mapscriptc::scalebarObj_postlabelcache_get;
*swig_postlabelcache_set = *mapscriptc::scalebarObj_postlabelcache_set;
*swig_align_get = *mapscriptc::scalebarObj_align_get;
*swig_align_set = *mapscriptc::scalebarObj_align_set;
*updateFromString = *mapscriptc::scalebarObj_updateFromString;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_scalebarObj(@_);
    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}) {
        mapscriptc::delete_scalebarObj($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 : mapscript::legendObj ##############

package mapscript::legendObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_imagecolor_get = *mapscriptc::legendObj_imagecolor_get;
*swig_imagecolor_set = *mapscriptc::legendObj_imagecolor_set;
*swig_label_get = *mapscriptc::legendObj_label_get;
*swig_label_set = *mapscriptc::legendObj_label_set;
*swig_keysizex_get = *mapscriptc::legendObj_keysizex_get;
*swig_keysizex_set = *mapscriptc::legendObj_keysizex_set;
*swig_keysizey_get = *mapscriptc::legendObj_keysizey_get;
*swig_keysizey_set = *mapscriptc::legendObj_keysizey_set;
*swig_keyspacingx_get = *mapscriptc::legendObj_keyspacingx_get;
*swig_keyspacingx_set = *mapscriptc::legendObj_keyspacingx_set;
*swig_keyspacingy_get = *mapscriptc::legendObj_keyspacingy_get;
*swig_keyspacingy_set = *mapscriptc::legendObj_keyspacingy_set;
*swig_outlinecolor_get = *mapscriptc::legendObj_outlinecolor_get;
*swig_outlinecolor_set = *mapscriptc::legendObj_outlinecolor_set;
*swig_status_get = *mapscriptc::legendObj_status_get;
*swig_status_set = *mapscriptc::legendObj_status_set;
*swig_height_get = *mapscriptc::legendObj_height_get;
*swig_height_set = *mapscriptc::legendObj_height_set;
*swig_width_get = *mapscriptc::legendObj_width_get;
*swig_width_set = *mapscriptc::legendObj_width_set;
*swig_position_get = *mapscriptc::legendObj_position_get;
*swig_position_set = *mapscriptc::legendObj_position_set;
*swig_postlabelcache_get = *mapscriptc::legendObj_postlabelcache_get;
*swig_postlabelcache_set = *mapscriptc::legendObj_postlabelcache_set;
*swig_template_get = *mapscriptc::legendObj_template_get;
*swig_template_set = *mapscriptc::legendObj_template_set;
*swig_map_get = *mapscriptc::legendObj_map_get;
*swig_map_set = *mapscriptc::legendObj_map_set;
*updateFromString = *mapscriptc::legendObj_updateFromString;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_legendObj(@_);
    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}) {
        mapscriptc::delete_legendObj($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 : mapscript::layerObj ##############

package mapscript::layerObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_classitem_get = *mapscriptc::layerObj_classitem_get;
*swig_classitem_set = *mapscriptc::layerObj_classitem_set;
*swig_refcount_get = *mapscriptc::layerObj_refcount_get;
*swig_refcount_set = *mapscriptc::layerObj_refcount_set;
*swig_numclasses_get = *mapscriptc::layerObj_numclasses_get;
*swig_numclasses_set = *mapscriptc::layerObj_numclasses_set;
*swig_maxclasses_get = *mapscriptc::layerObj_maxclasses_get;
*swig_maxclasses_set = *mapscriptc::layerObj_maxclasses_set;
*swig_index_get = *mapscriptc::layerObj_index_get;
*swig_index_set = *mapscriptc::layerObj_index_set;
*swig_map_get = *mapscriptc::layerObj_map_get;
*swig_map_set = *mapscriptc::layerObj_map_set;
*swig_header_get = *mapscriptc::layerObj_header_get;
*swig_header_set = *mapscriptc::layerObj_header_set;
*swig_footer_get = *mapscriptc::layerObj_footer_get;
*swig_footer_set = *mapscriptc::layerObj_footer_set;
*swig_template_get = *mapscriptc::layerObj_template_get;
*swig_template_set = *mapscriptc::layerObj_template_set;
*swig_name_get = *mapscriptc::layerObj_name_get;
*swig_name_set = *mapscriptc::layerObj_name_set;
*swig_group_get = *mapscriptc::layerObj_group_get;
*swig_group_set = *mapscriptc::layerObj_group_set;
*swig_status_get = *mapscriptc::layerObj_status_get;
*swig_status_set = *mapscriptc::layerObj_status_set;
*swig_data_get = *mapscriptc::layerObj_data_get;
*swig_data_set = *mapscriptc::layerObj_data_set;
*swig_type_get = *mapscriptc::layerObj_type_get;
*swig_type_set = *mapscriptc::layerObj_type_set;
*swig_tolerance_get = *mapscriptc::layerObj_tolerance_get;
*swig_tolerance_set = *mapscriptc::layerObj_tolerance_set;
*swig_toleranceunits_get = *mapscriptc::layerObj_toleranceunits_get;
*swig_toleranceunits_set = *mapscriptc::layerObj_toleranceunits_set;
*swig_symbolscaledenom_get = *mapscriptc::layerObj_symbolscaledenom_get;
*swig_symbolscaledenom_set = *mapscriptc::layerObj_symbolscaledenom_set;
*swig_minscaledenom_get = *mapscriptc::layerObj_minscaledenom_get;
*swig_minscaledenom_set = *mapscriptc::layerObj_minscaledenom_set;
*swig_maxscaledenom_get = *mapscriptc::layerObj_maxscaledenom_get;
*swig_maxscaledenom_set = *mapscriptc::layerObj_maxscaledenom_set;
*swig_labelminscaledenom_get = *mapscriptc::layerObj_labelminscaledenom_get;
*swig_labelminscaledenom_set = *mapscriptc::layerObj_labelminscaledenom_set;
*swig_labelmaxscaledenom_get = *mapscriptc::layerObj_labelmaxscaledenom_get;
*swig_labelmaxscaledenom_set = *mapscriptc::layerObj_labelmaxscaledenom_set;
*swig_mingeowidth_get = *mapscriptc::layerObj_mingeowidth_get;
*swig_mingeowidth_set = *mapscriptc::layerObj_mingeowidth_set;
*swig_maxgeowidth_get = *mapscriptc::layerObj_maxgeowidth_get;
*swig_maxgeowidth_set = *mapscriptc::layerObj_maxgeowidth_set;
*swig_sizeunits_get = *mapscriptc::layerObj_sizeunits_get;
*swig_sizeunits_set = *mapscriptc::layerObj_sizeunits_set;
*swig_maxfeatures_get = *mapscriptc::layerObj_maxfeatures_get;
*swig_maxfeatures_set = *mapscriptc::layerObj_maxfeatures_set;
*swig_offsite_get = *mapscriptc::layerObj_offsite_get;
*swig_offsite_set = *mapscriptc::layerObj_offsite_set;
*swig_transform_get = *mapscriptc::layerObj_transform_get;
*swig_transform_set = *mapscriptc::layerObj_transform_set;
*swig_labelcache_get = *mapscriptc::layerObj_labelcache_get;
*swig_labelcache_set = *mapscriptc::layerObj_labelcache_set;
*swig_postlabelcache_get = *mapscriptc::layerObj_postlabelcache_get;
*swig_postlabelcache_set = *mapscriptc::layerObj_postlabelcache_set;
*swig_labelitem_get = *mapscriptc::layerObj_labelitem_get;
*swig_labelitem_set = *mapscriptc::layerObj_labelitem_set;
*swig_tileitem_get = *mapscriptc::layerObj_tileitem_get;
*swig_tileitem_set = *mapscriptc::layerObj_tileitem_set;
*swig_tileindex_get = *mapscriptc::layerObj_tileindex_get;
*swig_tileindex_set = *mapscriptc::layerObj_tileindex_set;
*swig_units_get = *mapscriptc::layerObj_units_get;
*swig_units_set = *mapscriptc::layerObj_units_set;
*swig_connection_get = *mapscriptc::layerObj_connection_get;
*swig_connection_set = *mapscriptc::layerObj_connection_set;
*swig_plugin_library_get = *mapscriptc::layerObj_plugin_library_get;
*swig_plugin_library_set = *mapscriptc::layerObj_plugin_library_set;
*swig_plugin_library_original_get = *mapscriptc::layerObj_plugin_library_original_get;
*swig_plugin_library_original_set = *mapscriptc::layerObj_plugin_library_original_set;
*swig_connectiontype_get = *mapscriptc::layerObj_connectiontype_get;
*swig_connectiontype_set = *mapscriptc::layerObj_connectiontype_set;
*swig_numitems_get = *mapscriptc::layerObj_numitems_get;
*swig_numitems_set = *mapscriptc::layerObj_numitems_set;
*swig_bandsitem_get = *mapscriptc::layerObj_bandsitem_get;
*swig_bandsitem_set = *mapscriptc::layerObj_bandsitem_set;
*swig_filteritem_get = *mapscriptc::layerObj_filteritem_get;
*swig_filteritem_set = *mapscriptc::layerObj_filteritem_set;
*swig_styleitem_get = *mapscriptc::layerObj_styleitem_get;
*swig_styleitem_set = *mapscriptc::layerObj_styleitem_set;
*swig_requires_get = *mapscriptc::layerObj_requires_get;
*swig_requires_set = *mapscriptc::layerObj_requires_set;
*swig_labelrequires_get = *mapscriptc::layerObj_labelrequires_get;
*swig_labelrequires_set = *mapscriptc::layerObj_labelrequires_set;
*swig_metadata_get = *mapscriptc::layerObj_metadata_get;
*swig_metadata_set = *mapscriptc::layerObj_metadata_set;
*swig_validation_get = *mapscriptc::layerObj_validation_get;
*swig_validation_set = *mapscriptc::layerObj_validation_set;
*swig_opacity_get = *mapscriptc::layerObj_opacity_get;
*swig_opacity_set = *mapscriptc::layerObj_opacity_set;
*swig_dump_get = *mapscriptc::layerObj_dump_get;
*swig_dump_set = *mapscriptc::layerObj_dump_set;
*swig_debug_get = *mapscriptc::layerObj_debug_get;
*swig_debug_set = *mapscriptc::layerObj_debug_set;
*swig_extent_get = *mapscriptc::layerObj_extent_get;
*swig_extent_set = *mapscriptc::layerObj_extent_set;
*swig_numprocessing_get = *mapscriptc::layerObj_numprocessing_get;
*swig_numprocessing_set = *mapscriptc::layerObj_numprocessing_set;
*swig_numjoins_get = *mapscriptc::layerObj_numjoins_get;
*swig_numjoins_set = *mapscriptc::layerObj_numjoins_set;
*swig_classgroup_get = *mapscriptc::layerObj_classgroup_get;
*swig_classgroup_set = *mapscriptc::layerObj_classgroup_set;
sub new {
        my $pkg = shift;
        my $self = mapscriptc::new_layerObj(@_);
        bless $self, $pkg if defined($self);
        if (defined($_[0])) {
                # parent reference
                mapscript::RFC24_ADD_PARENT_REF( tied(%$self), $_[0]);
        }
        return $self;
}

sub DESTROY {
        return unless $_[0]->isa('HASH');
        my $self = tied(%{$_[0]});
        return unless defined $self;
        delete $ITERATORS{$self};
        mapscriptc::delete_layerObj($self);
        # remove parent reference
        mapscript::RFC24_DEL_PARENT_REF($self);
}

*clone = *mapscriptc::layerObj_clone;
*updateFromString = *mapscriptc::layerObj_updateFromString;
sub insertClass {
        my $idx = mapscriptc::layerObj_insertClass(@_);
        my $clazz=$_[1];
        # parent reference
        mapscript::RFC24_ADD_PARENT_REF(tied(%$clazz), $_[0]);
        return $idx;
}

*removeClass = *mapscriptc::layerObj_removeClass;
*open = *mapscriptc::layerObj_open;
*whichShapes = *mapscriptc::layerObj_whichShapes;
*nextShape = *mapscriptc::layerObj_nextShape;
*close = *mapscriptc::layerObj_close;
*getFeature = *mapscriptc::layerObj_getFeature;
*getShape = *mapscriptc::layerObj_getShape;
*resultsGetShape = *mapscriptc::layerObj_resultsGetShape;
*getNumResults = *mapscriptc::layerObj_getNumResults;
*getResult = *mapscriptc::layerObj_getResult;
sub getClass {
        my $clazz = mapscriptc::layerObj_getClass(@_);
        if (defined($clazz)) {
                # parent reference
                mapscript::RFC24_ADD_PARENT_REF( tied(%$clazz) , $_[0]);
        }
        return $clazz;
}

*getItem = *mapscriptc::layerObj_getItem;
*draw = *mapscriptc::layerObj_draw;
*drawQuery = *mapscriptc::layerObj_drawQuery;
*queryByAttributes = *mapscriptc::layerObj_queryByAttributes;
*queryByPoint = *mapscriptc::layerObj_queryByPoint;
*queryByRect = *mapscriptc::layerObj_queryByRect;
*queryByFeatures = *mapscriptc::layerObj_queryByFeatures;
*queryByShape = *mapscriptc::layerObj_queryByShape;
*queryByIndex = *mapscriptc::layerObj_queryByIndex;
*getResults = *mapscriptc::layerObj_getResults;
*setFilter = *mapscriptc::layerObj_setFilter;
*getFilterString = *mapscriptc::layerObj_getFilterString;
*setWKTProjection = *mapscriptc::layerObj_setWKTProjection;
*getProjection = *mapscriptc::layerObj_getProjection;
*setProjection = *mapscriptc::layerObj_setProjection;
*addFeature = *mapscriptc::layerObj_addFeature;
*getNumFeatures = *mapscriptc::layerObj_getNumFeatures;
*getExtent = *mapscriptc::layerObj_getExtent;
*setExtent = *mapscriptc::layerObj_setExtent;
*getMetaData = *mapscriptc::layerObj_getMetaData;
*setMetaData = *mapscriptc::layerObj_setMetaData;
*removeMetaData = *mapscriptc::layerObj_removeMetaData;
*getFirstMetaDataKey = *mapscriptc::layerObj_getFirstMetaDataKey;
*getNextMetaDataKey = *mapscriptc::layerObj_getNextMetaDataKey;
*getWMSFeatureInfoURL = *mapscriptc::layerObj_getWMSFeatureInfoURL;
*executeWFSGetFeature = *mapscriptc::layerObj_executeWFSGetFeature;
*applySLD = *mapscriptc::layerObj_applySLD;
*applySLDURL = *mapscriptc::layerObj_applySLDURL;
*generateSLD = *mapscriptc::layerObj_generateSLD;
*isVisible = *mapscriptc::layerObj_isVisible;
*moveClassUp = *mapscriptc::layerObj_moveClassUp;
*moveClassDown = *mapscriptc::layerObj_moveClassDown;
*setProcessingKey = *mapscriptc::layerObj_setProcessingKey;
*setProcessing = *mapscriptc::layerObj_setProcessing;
*addProcessing = *mapscriptc::layerObj_addProcessing;
*getProcessing = *mapscriptc::layerObj_getProcessing;
*getProcessingKey = *mapscriptc::layerObj_getProcessingKey;
*clearProcessing = *mapscriptc::layerObj_clearProcessing;
*setConnectionType = *mapscriptc::layerObj_setConnectionType;
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 : mapscript::mapObj ##############

package mapscript::mapObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_name_get = *mapscriptc::mapObj_name_get;
*swig_name_set = *mapscriptc::mapObj_name_set;
*swig_status_get = *mapscriptc::mapObj_status_get;
*swig_status_set = *mapscriptc::mapObj_status_set;
*swig_height_get = *mapscriptc::mapObj_height_get;
*swig_height_set = *mapscriptc::mapObj_height_set;
*swig_width_get = *mapscriptc::mapObj_width_get;
*swig_width_set = *mapscriptc::mapObj_width_set;
*swig_maxsize_get = *mapscriptc::mapObj_maxsize_get;
*swig_maxsize_set = *mapscriptc::mapObj_maxsize_set;
*swig_refcount_get = *mapscriptc::mapObj_refcount_get;
*swig_refcount_set = *mapscriptc::mapObj_refcount_set;
*swig_numlayers_get = *mapscriptc::mapObj_numlayers_get;
*swig_numlayers_set = *mapscriptc::mapObj_numlayers_set;
*swig_maxlayers_get = *mapscriptc::mapObj_maxlayers_get;
*swig_maxlayers_set = *mapscriptc::mapObj_maxlayers_set;
*swig_symbolset_get = *mapscriptc::mapObj_symbolset_get;
*swig_symbolset_set = *mapscriptc::mapObj_symbolset_set;
*swig_fontset_get = *mapscriptc::mapObj_fontset_get;
*swig_fontset_set = *mapscriptc::mapObj_fontset_set;
*swig_labelcache_get = *mapscriptc::mapObj_labelcache_get;
*swig_labelcache_set = *mapscriptc::mapObj_labelcache_set;
*swig_transparent_get = *mapscriptc::mapObj_transparent_get;
*swig_transparent_set = *mapscriptc::mapObj_transparent_set;
*swig_interlace_get = *mapscriptc::mapObj_interlace_get;
*swig_interlace_set = *mapscriptc::mapObj_interlace_set;
*swig_imagequality_get = *mapscriptc::mapObj_imagequality_get;
*swig_imagequality_set = *mapscriptc::mapObj_imagequality_set;
*swig_extent_get = *mapscriptc::mapObj_extent_get;
*swig_extent_set = *mapscriptc::mapObj_extent_set;
*swig_cellsize_get = *mapscriptc::mapObj_cellsize_get;
*swig_cellsize_set = *mapscriptc::mapObj_cellsize_set;
*swig_units_get = *mapscriptc::mapObj_units_get;
*swig_units_set = *mapscriptc::mapObj_units_set;
*swig_scaledenom_get = *mapscriptc::mapObj_scaledenom_get;
*swig_scaledenom_set = *mapscriptc::mapObj_scaledenom_set;
*swig_resolution_get = *mapscriptc::mapObj_resolution_get;
*swig_resolution_set = *mapscriptc::mapObj_resolution_set;
*swig_defresolution_get = *mapscriptc::mapObj_defresolution_get;
*swig_defresolution_set = *mapscriptc::mapObj_defresolution_set;
*swig_shapepath_get = *mapscriptc::mapObj_shapepath_get;
*swig_shapepath_set = *mapscriptc::mapObj_shapepath_set;
*swig_mappath_get = *mapscriptc::mapObj_mappath_get;
*swig_mappath_set = *mapscriptc::mapObj_mappath_set;
*swig_imagecolor_get = *mapscriptc::mapObj_imagecolor_get;
*swig_imagecolor_set = *mapscriptc::mapObj_imagecolor_set;
*swig_numoutputformats_get = *mapscriptc::mapObj_numoutputformats_get;
*swig_numoutputformats_set = *mapscriptc::mapObj_numoutputformats_set;
*swig_outputformatlist_get = *mapscriptc::mapObj_outputformatlist_get;
*swig_outputformatlist_set = *mapscriptc::mapObj_outputformatlist_set;
*swig_outputformat_get = *mapscriptc::mapObj_outputformat_get;
*swig_outputformat_set = *mapscriptc::mapObj_outputformat_set;
*swig_imagetype_get = *mapscriptc::mapObj_imagetype_get;
*swig_imagetype_set = *mapscriptc::mapObj_imagetype_set;
*swig_reference_get = *mapscriptc::mapObj_reference_get;
*swig_reference_set = *mapscriptc::mapObj_reference_set;
*swig_scalebar_get = *mapscriptc::mapObj_scalebar_get;
*swig_scalebar_set = *mapscriptc::mapObj_scalebar_set;
*swig_legend_get = *mapscriptc::mapObj_legend_get;
*swig_legend_set = *mapscriptc::mapObj_legend_set;
*swig_querymap_get = *mapscriptc::mapObj_querymap_get;
*swig_querymap_set = *mapscriptc::mapObj_querymap_set;
*swig_web_get = *mapscriptc::mapObj_web_get;
*swig_web_set = *mapscriptc::mapObj_web_set;
*swig_layerorder_get = *mapscriptc::mapObj_layerorder_get;
*swig_layerorder_set = *mapscriptc::mapObj_layerorder_set;
*swig_debug_get = *mapscriptc::mapObj_debug_get;
*swig_debug_set = *mapscriptc::mapObj_debug_set;
*swig_datapattern_get = *mapscriptc::mapObj_datapattern_get;
*swig_datapattern_set = *mapscriptc::mapObj_datapattern_set;
*swig_templatepattern_get = *mapscriptc::mapObj_templatepattern_get;
*swig_templatepattern_set = *mapscriptc::mapObj_templatepattern_set;
*swig_configoptions_get = *mapscriptc::mapObj_configoptions_get;
*swig_configoptions_set = *mapscriptc::mapObj_configoptions_set;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_mapObj(@_);
    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}) {
        mapscriptc::delete_mapObj($self);
        delete $OWNER{$self};
    }
}

*clone = *mapscriptc::mapObj_clone;
sub insertLayer {
        my $idx = mapscriptc::mapObj_insertLayer(@_);
        my $layer=$_[1];
        # parent reference
        mapscript::RFC24_ADD_PARENT_REF(tied(%$layer), $_[0]);
        return $idx;
}

*removeLayer = *mapscriptc::mapObj_removeLayer;
*setExtent = *mapscriptc::mapObj_setExtent;
*offsetExtent = *mapscriptc::mapObj_offsetExtent;
*scaleExtent = *mapscriptc::mapObj_scaleExtent;
*setCenter = *mapscriptc::mapObj_setCenter;
*setSize = *mapscriptc::mapObj_setSize;
*setRotation = *mapscriptc::mapObj_setRotation;
sub getLayer {
        my $layer = mapscriptc::mapObj_getLayer(@_);
        if (defined($layer)) {
                # parent reference
                #print "l=$layer,m=$_[0]\n";
                mapscript::RFC24_ADD_PARENT_REF( tied(%$layer) , $_[0]);
        }
        return $layer;
}

sub getLayerByName {
        my $layer = mapscriptc::mapObj_getLayerByName(@_);
        if (defined($layer)) {
                # parent reference
                #print "l=$layer,m=$_[0]\n";
                mapscript::RFC24_ADD_PARENT_REF( tied(%$layer) , $_[0]);
        }
        return $layer;
}

*getSymbolByName = *mapscriptc::mapObj_getSymbolByName;
*prepareQuery = *mapscriptc::mapObj_prepareQuery;
*prepareImage = *mapscriptc::mapObj_prepareImage;
*setImageType = *mapscriptc::mapObj_setImageType;
*selectOutputFormat = *mapscriptc::mapObj_selectOutputFormat;
*setOutputFormat = *mapscriptc::mapObj_setOutputFormat;
*draw = *mapscriptc::mapObj_draw;
*drawQuery = *mapscriptc::mapObj_drawQuery;
*drawLegend = *mapscriptc::mapObj_drawLegend;
*drawScalebar = *mapscriptc::mapObj_drawScalebar;
*drawReferenceMap = *mapscriptc::mapObj_drawReferenceMap;
*embedScalebar = *mapscriptc::mapObj_embedScalebar;
*embedLegend = *mapscriptc::mapObj_embedLegend;
*drawLabelCache = *mapscriptc::mapObj_drawLabelCache;
*getLabel = *mapscriptc::mapObj_getLabel;
*nextLabel = *mapscriptc::mapObj_nextLabel;
*queryByPoint = *mapscriptc::mapObj_queryByPoint;
*queryByRect = *mapscriptc::mapObj_queryByRect;
*queryByFeatures = *mapscriptc::mapObj_queryByFeatures;
*queryByShape = *mapscriptc::mapObj_queryByShape;
*setWKTProjection = *mapscriptc::mapObj_setWKTProjection;
*getProjection = *mapscriptc::mapObj_getProjection;
*setProjection = *mapscriptc::mapObj_setProjection;
*save = *mapscriptc::mapObj_save;
*saveQuery = *mapscriptc::mapObj_saveQuery;
*loadQuery = *mapscriptc::mapObj_loadQuery;
*freeQuery = *mapscriptc::mapObj_freeQuery;
*saveQueryAsGML = *mapscriptc::mapObj_saveQueryAsGML;
*getMetaData = *mapscriptc::mapObj_getMetaData;
*setMetaData = *mapscriptc::mapObj_setMetaData;
*removeMetaData = *mapscriptc::mapObj_removeMetaData;
*getFirstMetaDataKey = *mapscriptc::mapObj_getFirstMetaDataKey;
*getNextMetaDataKey = *mapscriptc::mapObj_getNextMetaDataKey;
*setSymbolSet = *mapscriptc::mapObj_setSymbolSet;
*getNumSymbols = *mapscriptc::mapObj_getNumSymbols;
*setFontSet = *mapscriptc::mapObj_setFontSet;
*saveMapContext = *mapscriptc::mapObj_saveMapContext;
*loadMapContext = *mapscriptc::mapObj_loadMapContext;
*moveLayerUp = *mapscriptc::mapObj_moveLayerUp;
*moveLayerDown = *mapscriptc::mapObj_moveLayerDown;
*getLayersDrawingOrder = *mapscriptc::mapObj_getLayersDrawingOrder;
*setLayersDrawingOrder = *mapscriptc::mapObj_setLayersDrawingOrder;
*setConfigOption = *mapscriptc::mapObj_setConfigOption;
*getConfigOption = *mapscriptc::mapObj_getConfigOption;
*applyConfigOptions = *mapscriptc::mapObj_applyConfigOptions;
*applySLD = *mapscriptc::mapObj_applySLD;
*applySLDURL = *mapscriptc::mapObj_applySLDURL;
*generateSLD = *mapscriptc::mapObj_generateSLD;
*processTemplate = *mapscriptc::mapObj_processTemplate;
*processLegendTemplate = *mapscriptc::mapObj_processLegendTemplate;
*processQueryTemplate = *mapscriptc::mapObj_processQueryTemplate;
*getOutputFormatByName = *mapscriptc::mapObj_getOutputFormatByName;
*appendOutputFormat = *mapscriptc::mapObj_appendOutputFormat;
*removeOutputFormat = *mapscriptc::mapObj_removeOutputFormat;
*loadOWSParameters = *mapscriptc::mapObj_loadOWSParameters;
*OWSDispatch = *mapscriptc::mapObj_OWSDispatch;
*zoomPoint = *mapscriptc::mapObj_zoomPoint;
*zoomRectangle = *mapscriptc::mapObj_zoomRectangle;
*zoomScale = *mapscriptc::mapObj_zoomScale;
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 : mapscript::imageObj ##############

package mapscript::imageObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_width_get = *mapscriptc::imageObj_width_get;
*swig_width_set = *mapscriptc::imageObj_width_set;
*swig_height_get = *mapscriptc::imageObj_height_get;
*swig_height_set = *mapscriptc::imageObj_height_set;
*swig_resolution_get = *mapscriptc::imageObj_resolution_get;
*swig_resolution_set = *mapscriptc::imageObj_resolution_set;
*swig_resolutionfactor_get = *mapscriptc::imageObj_resolutionfactor_get;
*swig_resolutionfactor_set = *mapscriptc::imageObj_resolutionfactor_set;
*swig_imagepath_get = *mapscriptc::imageObj_imagepath_get;
*swig_imagepath_set = *mapscriptc::imageObj_imagepath_set;
*swig_imageurl_get = *mapscriptc::imageObj_imageurl_get;
*swig_imageurl_set = *mapscriptc::imageObj_imageurl_set;
*swig_format_get = *mapscriptc::imageObj_format_get;
*swig_format_set = *mapscriptc::imageObj_format_set;
*swig_buffer_format_get = *mapscriptc::imageObj_buffer_format_get;
*swig_buffer_format_set = *mapscriptc::imageObj_buffer_format_set;
*swig_renderer_get = *mapscriptc::imageObj_renderer_get;
*swig_renderer_set = *mapscriptc::imageObj_renderer_set;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_imageObj(@_);
    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}) {
        mapscriptc::delete_imageObj($self);
        delete $OWNER{$self};
    }
}

*save = *mapscriptc::imageObj_save;
*write = *mapscriptc::imageObj_write;
*getBytes = *mapscriptc::imageObj_getBytes;
*getSize = *mapscriptc::imageObj_getSize;
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 : mapscript::strokeStyleObj ##############

package mapscript::strokeStyleObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_width_get = *mapscriptc::strokeStyleObj_width_get;
*swig_width_set = *mapscriptc::strokeStyleObj_width_set;
*swig_patternlength_get = *mapscriptc::strokeStyleObj_patternlength_get;
*swig_patternlength_set = *mapscriptc::strokeStyleObj_patternlength_set;
*swig_pattern_get = *mapscriptc::strokeStyleObj_pattern_get;
*swig_pattern_set = *mapscriptc::strokeStyleObj_pattern_set;
*swig_color_get = *mapscriptc::strokeStyleObj_color_get;
*swig_color_set = *mapscriptc::strokeStyleObj_color_set;
*swig_linecap_get = *mapscriptc::strokeStyleObj_linecap_get;
*swig_linecap_set = *mapscriptc::strokeStyleObj_linecap_set;
*swig_linejoin_get = *mapscriptc::strokeStyleObj_linejoin_get;
*swig_linejoin_set = *mapscriptc::strokeStyleObj_linejoin_set;
*swig_linejoinmaxsize_get = *mapscriptc::strokeStyleObj_linejoinmaxsize_get;
*swig_linejoinmaxsize_set = *mapscriptc::strokeStyleObj_linejoinmaxsize_set;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_strokeStyleObj(@_);
    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}) {
        mapscriptc::delete_strokeStyleObj($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 : mapscript::fillStyleObj ##############

package mapscript::fillStyleObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_color_get = *mapscriptc::fillStyleObj_color_get;
*swig_color_set = *mapscriptc::fillStyleObj_color_set;
*swig_tile_get = *mapscriptc::fillStyleObj_tile_get;
*swig_tile_set = *mapscriptc::fillStyleObj_tile_set;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_fillStyleObj(@_);
    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}) {
        mapscriptc::delete_fillStyleObj($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 : mapscript::symbolStyleObj ##############

package mapscript::symbolStyleObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_color_get = *mapscriptc::symbolStyleObj_color_get;
*swig_color_set = *mapscriptc::symbolStyleObj_color_set;
*swig_backgroundcolor_get = *mapscriptc::symbolStyleObj_backgroundcolor_get;
*swig_backgroundcolor_set = *mapscriptc::symbolStyleObj_backgroundcolor_set;
*swig_outlinewidth_get = *mapscriptc::symbolStyleObj_outlinewidth_get;
*swig_outlinewidth_set = *mapscriptc::symbolStyleObj_outlinewidth_set;
*swig_outlinecolor_get = *mapscriptc::symbolStyleObj_outlinecolor_get;
*swig_outlinecolor_set = *mapscriptc::symbolStyleObj_outlinecolor_set;
*swig_scale_get = *mapscriptc::symbolStyleObj_scale_get;
*swig_scale_set = *mapscriptc::symbolStyleObj_scale_set;
*swig_rotation_get = *mapscriptc::symbolStyleObj_rotation_get;
*swig_rotation_set = *mapscriptc::symbolStyleObj_rotation_set;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_symbolStyleObj(@_);
    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}) {
        mapscriptc::delete_symbolStyleObj($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 : mapscript::tilecache ##############

package mapscript::tilecache;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_symbol_get = *mapscriptc::tilecache_symbol_get;
*swig_symbol_set = *mapscriptc::tilecache_symbol_set;
*swig_style_get = *mapscriptc::tilecache_style_get;
*swig_style_set = *mapscriptc::tilecache_style_set;
*swig_width_get = *mapscriptc::tilecache_width_get;
*swig_width_set = *mapscriptc::tilecache_width_set;
*swig_height_get = *mapscriptc::tilecache_height_get;
*swig_height_set = *mapscriptc::tilecache_height_set;
*swig_data_get = *mapscriptc::tilecache_data_get;
*swig_data_set = *mapscriptc::tilecache_data_set;
*swig_next_get = *mapscriptc::tilecache_next_get;
*swig_next_set = *mapscriptc::tilecache_next_set;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_tilecache(@_);
    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}) {
        mapscriptc::delete_tilecache($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 : mapscript::labelStyleObj ##############

package mapscript::labelStyleObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_font_get = *mapscriptc::labelStyleObj_font_get;
*swig_font_set = *mapscriptc::labelStyleObj_font_set;
*swig_size_get = *mapscriptc::labelStyleObj_size_get;
*swig_size_set = *mapscriptc::labelStyleObj_size_set;
*swig_rotation_get = *mapscriptc::labelStyleObj_rotation_get;
*swig_rotation_set = *mapscriptc::labelStyleObj_rotation_set;
*swig_color_get = *mapscriptc::labelStyleObj_color_get;
*swig_color_set = *mapscriptc::labelStyleObj_color_set;
*swig_outlinewidth_get = *mapscriptc::labelStyleObj_outlinewidth_get;
*swig_outlinewidth_set = *mapscriptc::labelStyleObj_outlinewidth_set;
*swig_outlinecolor_get = *mapscriptc::labelStyleObj_outlinecolor_get;
*swig_outlinecolor_set = *mapscriptc::labelStyleObj_outlinecolor_set;
*swig_shadowsizex_get = *mapscriptc::labelStyleObj_shadowsizex_get;
*swig_shadowsizex_set = *mapscriptc::labelStyleObj_shadowsizex_set;
*swig_shadowsizey_get = *mapscriptc::labelStyleObj_shadowsizey_get;
*swig_shadowsizey_set = *mapscriptc::labelStyleObj_shadowsizey_set;
*swig_shadowcolor_get = *mapscriptc::labelStyleObj_shadowcolor_get;
*swig_shadowcolor_set = *mapscriptc::labelStyleObj_shadowcolor_set;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_labelStyleObj(@_);
    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}) {
        mapscriptc::delete_labelStyleObj($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 : mapscript::rectObj ##############

package mapscript::rectObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_minx_get = *mapscriptc::rectObj_minx_get;
*swig_minx_set = *mapscriptc::rectObj_minx_set;
*swig_miny_get = *mapscriptc::rectObj_miny_get;
*swig_miny_set = *mapscriptc::rectObj_miny_set;
*swig_maxx_get = *mapscriptc::rectObj_maxx_get;
*swig_maxx_set = *mapscriptc::rectObj_maxx_set;
*swig_maxy_get = *mapscriptc::rectObj_maxy_get;
*swig_maxy_set = *mapscriptc::rectObj_maxy_set;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_rectObj(@_);
    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}) {
        mapscriptc::delete_rectObj($self);
        delete $OWNER{$self};
    }
}

*project = *mapscriptc::rectObj_project;
*fit = *mapscriptc::rectObj_fit;
*draw = *mapscriptc::rectObj_draw;
*getCenter = *mapscriptc::rectObj_getCenter;
*toPolygon = *mapscriptc::rectObj_toPolygon;
*toString = *mapscriptc::rectObj_toString;
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 : mapscript::pointObj ##############

package mapscript::pointObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_x_get = *mapscriptc::pointObj_x_get;
*swig_x_set = *mapscriptc::pointObj_x_set;
*swig_y_get = *mapscriptc::pointObj_y_get;
*swig_y_set = *mapscriptc::pointObj_y_set;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_pointObj(@_);
    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}) {
        mapscriptc::delete_pointObj($self);
        delete $OWNER{$self};
    }
}

*project = *mapscriptc::pointObj_project;
*draw = *mapscriptc::pointObj_draw;
*distanceToPoint = *mapscriptc::pointObj_distanceToPoint;
*distanceToSegment = *mapscriptc::pointObj_distanceToSegment;
*distanceToShape = *mapscriptc::pointObj_distanceToShape;
*setXY = *mapscriptc::pointObj_setXY;
*setXYZ = *mapscriptc::pointObj_setXYZ;
*setXYZM = *mapscriptc::pointObj_setXYZM;
*toString = *mapscriptc::pointObj_toString;
*toShape = *mapscriptc::pointObj_toShape;
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 : mapscript::lineObj ##############

package mapscript::lineObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_numpoints_get = *mapscriptc::lineObj_numpoints_get;
*swig_numpoints_set = *mapscriptc::lineObj_numpoints_set;
*swig_point_get = *mapscriptc::lineObj_point_get;
*swig_point_set = *mapscriptc::lineObj_point_set;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_lineObj(@_);
    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}) {
        mapscriptc::delete_lineObj($self);
        delete $OWNER{$self};
    }
}

*project = *mapscriptc::lineObj_project;
*get = *mapscriptc::lineObj_get;
*add = *mapscriptc::lineObj_add;
*set = *mapscriptc::lineObj_set;
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 : mapscript::shapeObj ##############

package mapscript::shapeObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_numlines_get = *mapscriptc::shapeObj_numlines_get;
*swig_numlines_set = *mapscriptc::shapeObj_numlines_set;
*swig_numvalues_get = *mapscriptc::shapeObj_numvalues_get;
*swig_numvalues_set = *mapscriptc::shapeObj_numvalues_set;
*swig_line_get = *mapscriptc::shapeObj_line_get;
*swig_line_set = *mapscriptc::shapeObj_line_set;
*swig_values_get = *mapscriptc::shapeObj_values_get;
*swig_values_set = *mapscriptc::shapeObj_values_set;
*swig_bounds_get = *mapscriptc::shapeObj_bounds_get;
*swig_bounds_set = *mapscriptc::shapeObj_bounds_set;
*swig_type_get = *mapscriptc::shapeObj_type_get;
*swig_type_set = *mapscriptc::shapeObj_type_set;
*swig_index_get = *mapscriptc::shapeObj_index_get;
*swig_index_set = *mapscriptc::shapeObj_index_set;
*swig_tileindex_get = *mapscriptc::shapeObj_tileindex_get;
*swig_tileindex_set = *mapscriptc::shapeObj_tileindex_set;
*swig_classindex_get = *mapscriptc::shapeObj_classindex_get;
*swig_classindex_set = *mapscriptc::shapeObj_classindex_set;
*swig_text_get = *mapscriptc::shapeObj_text_get;
*swig_text_set = *mapscriptc::shapeObj_text_set;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_shapeObj(@_);
    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}) {
        mapscriptc::delete_shapeObj($self);
        delete $OWNER{$self};
    }
}

*fromWKT = *mapscriptc::shapeObj_fromWKT;
*project = *mapscriptc::shapeObj_project;
*get = *mapscriptc::shapeObj_get;
*add = *mapscriptc::shapeObj_add;
*draw = *mapscriptc::shapeObj_draw;
*setBounds = *mapscriptc::shapeObj_setBounds;
*clone = *mapscriptc::shapeObj_clone;
*copy = *mapscriptc::shapeObj_copy;
*toWKT = *mapscriptc::shapeObj_toWKT;
*buffer = *mapscriptc::shapeObj_buffer;
*simplify = *mapscriptc::shapeObj_simplify;
*topologyPreservingSimplify = *mapscriptc::shapeObj_topologyPreservingSimplify;
*convexHull = *mapscriptc::shapeObj_convexHull;
*boundary = *mapscriptc::shapeObj_boundary;
*getCentroid = *mapscriptc::shapeObj_getCentroid;
*Union = *mapscriptc::shapeObj_Union;
*intersection = *mapscriptc::shapeObj_intersection;
*difference = *mapscriptc::shapeObj_difference;
*symDifference = *mapscriptc::shapeObj_symDifference;
*overlaps = *mapscriptc::shapeObj_overlaps;
*within = *mapscriptc::shapeObj_within;
*crosses = *mapscriptc::shapeObj_crosses;
*intersects = *mapscriptc::shapeObj_intersects;
*touches = *mapscriptc::shapeObj_touches;
*equals = *mapscriptc::shapeObj_equals;
*disjoint = *mapscriptc::shapeObj_disjoint;
*getArea = *mapscriptc::shapeObj_getArea;
*getLength = *mapscriptc::shapeObj_getLength;
*getValue = *mapscriptc::shapeObj_getValue;
*contains = *mapscriptc::shapeObj_contains;
*distanceToPoint = *mapscriptc::shapeObj_distanceToPoint;
*distanceToShape = *mapscriptc::shapeObj_distanceToShape;
*getLabelPoint = *mapscriptc::shapeObj_getLabelPoint;
*setValue = *mapscriptc::shapeObj_setValue;
*initValues = *mapscriptc::shapeObj_initValues;
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 : mapscript::DBFInfo ##############

package mapscript::DBFInfo;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_fp_get = *mapscriptc::DBFInfo_fp_get;
*swig_fp_set = *mapscriptc::DBFInfo_fp_set;
*swig_nRecords_get = *mapscriptc::DBFInfo_nRecords_get;
*swig_nRecords_set = *mapscriptc::DBFInfo_nRecords_set;
*swig_nRecordLength_get = *mapscriptc::DBFInfo_nRecordLength_get;
*swig_nRecordLength_set = *mapscriptc::DBFInfo_nRecordLength_set;
*swig_nHeaderLength_get = *mapscriptc::DBFInfo_nHeaderLength_get;
*swig_nHeaderLength_set = *mapscriptc::DBFInfo_nHeaderLength_set;
*swig_nFields_get = *mapscriptc::DBFInfo_nFields_get;
*swig_nFields_set = *mapscriptc::DBFInfo_nFields_set;
*swig_panFieldOffset_get = *mapscriptc::DBFInfo_panFieldOffset_get;
*swig_panFieldOffset_set = *mapscriptc::DBFInfo_panFieldOffset_set;
*swig_panFieldSize_get = *mapscriptc::DBFInfo_panFieldSize_get;
*swig_panFieldSize_set = *mapscriptc::DBFInfo_panFieldSize_set;
*swig_panFieldDecimals_get = *mapscriptc::DBFInfo_panFieldDecimals_get;
*swig_panFieldDecimals_set = *mapscriptc::DBFInfo_panFieldDecimals_set;
*swig_pachFieldType_get = *mapscriptc::DBFInfo_pachFieldType_get;
*swig_pachFieldType_set = *mapscriptc::DBFInfo_pachFieldType_set;
*swig_pszHeader_get = *mapscriptc::DBFInfo_pszHeader_get;
*swig_pszHeader_set = *mapscriptc::DBFInfo_pszHeader_set;
*swig_nCurrentRecord_get = *mapscriptc::DBFInfo_nCurrentRecord_get;
*swig_nCurrentRecord_set = *mapscriptc::DBFInfo_nCurrentRecord_set;
*swig_bCurrentRecordModified_get = *mapscriptc::DBFInfo_bCurrentRecordModified_get;
*swig_bCurrentRecordModified_set = *mapscriptc::DBFInfo_bCurrentRecordModified_set;
*swig_pszCurrentRecord_get = *mapscriptc::DBFInfo_pszCurrentRecord_get;
*swig_pszCurrentRecord_set = *mapscriptc::DBFInfo_pszCurrentRecord_set;
*swig_bNoHeader_get = *mapscriptc::DBFInfo_bNoHeader_get;
*swig_bNoHeader_set = *mapscriptc::DBFInfo_bNoHeader_set;
*swig_bUpdated_get = *mapscriptc::DBFInfo_bUpdated_get;
*swig_bUpdated_set = *mapscriptc::DBFInfo_bUpdated_set;
*swig_pszStringField_get = *mapscriptc::DBFInfo_pszStringField_get;
*swig_pszStringField_set = *mapscriptc::DBFInfo_pszStringField_set;
*swig_nStringFieldLen_get = *mapscriptc::DBFInfo_nStringFieldLen_get;
*swig_nStringFieldLen_set = *mapscriptc::DBFInfo_nStringFieldLen_set;
*getFieldName = *mapscriptc::DBFInfo_getFieldName;
*getFieldWidth = *mapscriptc::DBFInfo_getFieldWidth;
*getFieldDecimals = *mapscriptc::DBFInfo_getFieldDecimals;
*getFieldType = *mapscriptc::DBFInfo_getFieldType;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_DBFInfo(@_);
    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}) {
        mapscriptc::delete_DBFInfo($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 : mapscript::shapefileObj ##############

package mapscript::shapefileObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_source_get = *mapscriptc::shapefileObj_source_get;
*swig_source_set = *mapscriptc::shapefileObj_source_set;
*swig_type_get = *mapscriptc::shapefileObj_type_get;
*swig_type_set = *mapscriptc::shapefileObj_type_set;
*swig_numshapes_get = *mapscriptc::shapefileObj_numshapes_get;
*swig_numshapes_set = *mapscriptc::shapefileObj_numshapes_set;
*swig_bounds_get = *mapscriptc::shapefileObj_bounds_get;
*swig_bounds_set = *mapscriptc::shapefileObj_bounds_set;
*swig_lastshape_get = *mapscriptc::shapefileObj_lastshape_get;
*swig_lastshape_set = *mapscriptc::shapefileObj_lastshape_set;
*swig_status_get = *mapscriptc::shapefileObj_status_get;
*swig_status_set = *mapscriptc::shapefileObj_status_set;
*swig_statusbounds_get = *mapscriptc::shapefileObj_statusbounds_get;
*swig_statusbounds_set = *mapscriptc::shapefileObj_statusbounds_set;
*swig_isopen_get = *mapscriptc::shapefileObj_isopen_get;
*swig_isopen_set = *mapscriptc::shapefileObj_isopen_set;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_shapefileObj(@_);
    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}) {
        mapscriptc::delete_shapefileObj($self);
        delete $OWNER{$self};
    }
}

*get = *mapscriptc::shapefileObj_get;
*getShape = *mapscriptc::shapefileObj_getShape;
*getPoint = *mapscriptc::shapefileObj_getPoint;
*getTransformed = *mapscriptc::shapefileObj_getTransformed;
*getExtent = *mapscriptc::shapefileObj_getExtent;
*add = *mapscriptc::shapefileObj_add;
*addPoint = *mapscriptc::shapefileObj_addPoint;
*getDBF = *mapscriptc::shapefileObj_getDBF;
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 : mapscript::projectionObj ##############

package mapscript::projectionObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_numargs_get = *mapscriptc::projectionObj_numargs_get;
*swig_numargs_set = *mapscriptc::projectionObj_numargs_set;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_projectionObj(@_);
    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}) {
        mapscriptc::delete_projectionObj($self);
        delete $OWNER{$self};
    }
}

*setWKTProjection = *mapscriptc::projectionObj_setWKTProjection;
*getUnits = *mapscriptc::projectionObj_getUnits;
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 : mapscript::colorObj ##############

package mapscript::colorObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_pen_get = *mapscriptc::colorObj_pen_get;
*swig_pen_set = *mapscriptc::colorObj_pen_set;
*swig_red_get = *mapscriptc::colorObj_red_get;
*swig_red_set = *mapscriptc::colorObj_red_set;
*swig_green_get = *mapscriptc::colorObj_green_get;
*swig_green_set = *mapscriptc::colorObj_green_set;
*swig_blue_get = *mapscriptc::colorObj_blue_get;
*swig_blue_set = *mapscriptc::colorObj_blue_set;
*swig_alpha_get = *mapscriptc::colorObj_alpha_get;
*swig_alpha_set = *mapscriptc::colorObj_alpha_set;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_colorObj(@_);
    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}) {
        mapscriptc::delete_colorObj($self);
        delete $OWNER{$self};
    }
}

*setRGB = *mapscriptc::colorObj_setRGB;
*setHex = *mapscriptc::colorObj_setHex;
*toHex = *mapscriptc::colorObj_toHex;
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 : mapscript::symbolObj ##############

package mapscript::symbolObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_name_get = *mapscriptc::symbolObj_name_get;
*swig_name_set = *mapscriptc::symbolObj_name_set;
*swig_type_get = *mapscriptc::symbolObj_type_get;
*swig_type_set = *mapscriptc::symbolObj_type_set;
*swig_sizex_get = *mapscriptc::symbolObj_sizex_get;
*swig_sizex_set = *mapscriptc::symbolObj_sizex_set;
*swig_sizey_get = *mapscriptc::symbolObj_sizey_get;
*swig_sizey_set = *mapscriptc::symbolObj_sizey_set;
*swig_minx_get = *mapscriptc::symbolObj_minx_get;
*swig_minx_set = *mapscriptc::symbolObj_minx_set;
*swig_miny_get = *mapscriptc::symbolObj_miny_get;
*swig_miny_set = *mapscriptc::symbolObj_miny_set;
*swig_maxx_get = *mapscriptc::symbolObj_maxx_get;
*swig_maxx_set = *mapscriptc::symbolObj_maxx_set;
*swig_maxy_get = *mapscriptc::symbolObj_maxy_get;
*swig_maxy_set = *mapscriptc::symbolObj_maxy_set;
*swig_refcount_get = *mapscriptc::symbolObj_refcount_get;
*swig_refcount_set = *mapscriptc::symbolObj_refcount_set;
*swig_numpoints_get = *mapscriptc::symbolObj_numpoints_get;
*swig_numpoints_set = *mapscriptc::symbolObj_numpoints_set;
*swig_filled_get = *mapscriptc::symbolObj_filled_get;
*swig_filled_set = *mapscriptc::symbolObj_filled_set;
*swig_patternlength_get = *mapscriptc::symbolObj_patternlength_get;
*swig_patternlength_set = *mapscriptc::symbolObj_patternlength_set;
*swig_pattern_get = *mapscriptc::symbolObj_pattern_get;
*swig_pattern_set = *mapscriptc::symbolObj_pattern_set;
*swig_imagepath_get = *mapscriptc::symbolObj_imagepath_get;
*swig_imagepath_set = *mapscriptc::symbolObj_imagepath_set;
*swig_transparent_get = *mapscriptc::symbolObj_transparent_get;
*swig_transparent_set = *mapscriptc::symbolObj_transparent_set;
*swig_transparentcolor_get = *mapscriptc::symbolObj_transparentcolor_get;
*swig_transparentcolor_set = *mapscriptc::symbolObj_transparentcolor_set;
*swig_character_get = *mapscriptc::symbolObj_character_get;
*swig_character_set = *mapscriptc::symbolObj_character_set;
*swig_antialias_get = *mapscriptc::symbolObj_antialias_get;
*swig_antialias_set = *mapscriptc::symbolObj_antialias_set;
*swig_font_get = *mapscriptc::symbolObj_font_get;
*swig_font_set = *mapscriptc::symbolObj_font_set;
*swig_gap_get = *mapscriptc::symbolObj_gap_get;
*swig_gap_set = *mapscriptc::symbolObj_gap_set;
*swig_position_get = *mapscriptc::symbolObj_position_get;
*swig_position_set = *mapscriptc::symbolObj_position_set;
*swig_linecap_get = *mapscriptc::symbolObj_linecap_get;
*swig_linecap_set = *mapscriptc::symbolObj_linecap_set;
*swig_linejoin_get = *mapscriptc::symbolObj_linejoin_get;
*swig_linejoin_set = *mapscriptc::symbolObj_linejoin_set;
*swig_linejoinmaxsize_get = *mapscriptc::symbolObj_linejoinmaxsize_get;
*swig_linejoinmaxsize_set = *mapscriptc::symbolObj_linejoinmaxsize_set;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_symbolObj(@_);
    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}) {
        mapscriptc::delete_symbolObj($self);
        delete $OWNER{$self};
    }
}

*setImagepath = *mapscriptc::symbolObj_setImagepath;
*setPoints = *mapscriptc::symbolObj_setPoints;
*getPoints = *mapscriptc::symbolObj_getPoints;
*setPattern = *mapscriptc::symbolObj_setPattern;
*getImage = *mapscriptc::symbolObj_getImage;
*setImage = *mapscriptc::symbolObj_setImage;
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 : mapscript::errorObj ##############

package mapscript::errorObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_code_get = *mapscriptc::errorObj_code_get;
*swig_code_set = *mapscriptc::errorObj_code_set;
*swig_routine_get = *mapscriptc::errorObj_routine_get;
*swig_routine_set = *mapscriptc::errorObj_routine_set;
*swig_message_get = *mapscriptc::errorObj_message_get;
*swig_message_set = *mapscriptc::errorObj_message_set;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_errorObj(@_);
    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}) {
        mapscriptc::delete_errorObj($self);
        delete $OWNER{$self};
    }
}

*next = *mapscriptc::errorObj_next;
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 : mapscript::hashTableObj ##############

package mapscript::hashTableObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_numitems_get = *mapscriptc::hashTableObj_numitems_get;
*swig_numitems_set = *mapscriptc::hashTableObj_numitems_set;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_hashTableObj(@_);
    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}) {
        mapscriptc::delete_hashTableObj($self);
        delete $OWNER{$self};
    }
}

*set = *mapscriptc::hashTableObj_set;
*get = *mapscriptc::hashTableObj_get;
*remove = *mapscriptc::hashTableObj_remove;
*clear = *mapscriptc::hashTableObj_clear;
*nextKey = *mapscriptc::hashTableObj_nextKey;
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 : mapscript::OWSRequest ##############

package mapscript::OWSRequest;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_NumParams_get = *mapscriptc::OWSRequest_NumParams_get;
*swig_NumParams_set = *mapscriptc::OWSRequest_NumParams_set;
*swig_type_get = *mapscriptc::OWSRequest_type_get;
*swig_type_set = *mapscriptc::OWSRequest_type_set;
*swig_contenttype_get = *mapscriptc::OWSRequest_contenttype_get;
*swig_contenttype_set = *mapscriptc::OWSRequest_contenttype_set;
*swig_postrequest_get = *mapscriptc::OWSRequest_postrequest_get;
*swig_postrequest_set = *mapscriptc::OWSRequest_postrequest_set;
*swig_httpcookiedata_get = *mapscriptc::OWSRequest_httpcookiedata_get;
*swig_httpcookiedata_set = *mapscriptc::OWSRequest_httpcookiedata_set;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_OWSRequest(@_);
    bless $self, $pkg if defined($self);
}

*loadParams = *mapscriptc::OWSRequest_loadParams;
*setParameter = *mapscriptc::OWSRequest_setParameter;
*getName = *mapscriptc::OWSRequest_getName;
*getValue = *mapscriptc::OWSRequest_getValue;
*getValueByName = *mapscriptc::OWSRequest_getValueByName;
sub DESTROY {
    return unless $_[0]->isa('HASH');
    my $self = tied(%{$_[0]});
    return unless defined $self;
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        mapscriptc::delete_OWSRequest($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 mapscript;

*MS_VERSION = *mapscriptc::MS_VERSION;
*MS_VERSION_MAJOR = *mapscriptc::MS_VERSION_MAJOR;
*MS_VERSION_MINOR = *mapscriptc::MS_VERSION_MINOR;
*MS_VERSION_REV = *mapscriptc::MS_VERSION_REV;
*MS_VERSION_NUM = *mapscriptc::MS_VERSION_NUM;
*MS_TRUE = *mapscriptc::MS_TRUE;
*MS_FALSE = *mapscriptc::MS_FALSE;
*MS_UNKNOWN = *mapscriptc::MS_UNKNOWN;
*MS_ON = *mapscriptc::MS_ON;
*MS_OFF = *mapscriptc::MS_OFF;
*MS_DEFAULT = *mapscriptc::MS_DEFAULT;
*MS_EMBED = *mapscriptc::MS_EMBED;
*MS_DELETE = *mapscriptc::MS_DELETE;
*MS_YES = *mapscriptc::MS_YES;
*MS_NO = *mapscriptc::MS_NO;
*MS_GD_ALPHA = *mapscriptc::MS_GD_ALPHA;
*MS_LAYER_ALLOCSIZE = *mapscriptc::MS_LAYER_ALLOCSIZE;
*MS_CLASS_ALLOCSIZE = *mapscriptc::MS_CLASS_ALLOCSIZE;
*MS_STYLE_ALLOCSIZE = *mapscriptc::MS_STYLE_ALLOCSIZE;
*MS_MAX_LABEL_PRIORITY = *mapscriptc::MS_MAX_LABEL_PRIORITY;
*MS_DEFAULT_LABEL_PRIORITY = *mapscriptc::MS_DEFAULT_LABEL_PRIORITY;
*MS_FILE_MAP = *mapscriptc::MS_FILE_MAP;
*MS_FILE_SYMBOL = *mapscriptc::MS_FILE_SYMBOL;
*MS_INCHES = *mapscriptc::MS_INCHES;
*MS_FEET = *mapscriptc::MS_FEET;
*MS_MILES = *mapscriptc::MS_MILES;
*MS_METERS = *mapscriptc::MS_METERS;
*MS_KILOMETERS = *mapscriptc::MS_KILOMETERS;
*MS_NAUTICALMILES = *mapscriptc::MS_NAUTICALMILES;
*MS_DD = *mapscriptc::MS_DD;
*MS_PIXELS = *mapscriptc::MS_PIXELS;
*MS_PERCENTAGES = *mapscriptc::MS_PERCENTAGES;
*MS_SHAPE_POINT = *mapscriptc::MS_SHAPE_POINT;
*MS_SHAPE_LINE = *mapscriptc::MS_SHAPE_LINE;
*MS_SHAPE_POLYGON = *mapscriptc::MS_SHAPE_POLYGON;
*MS_SHAPE_NULL = *mapscriptc::MS_SHAPE_NULL;
*MS_LAYER_POINT = *mapscriptc::MS_LAYER_POINT;
*MS_LAYER_LINE = *mapscriptc::MS_LAYER_LINE;
*MS_LAYER_POLYGON = *mapscriptc::MS_LAYER_POLYGON;
*MS_LAYER_RASTER = *mapscriptc::MS_LAYER_RASTER;
*MS_LAYER_ANNOTATION = *mapscriptc::MS_LAYER_ANNOTATION;
*MS_LAYER_QUERY = *mapscriptc::MS_LAYER_QUERY;
*MS_LAYER_CIRCLE = *mapscriptc::MS_LAYER_CIRCLE;
*MS_LAYER_TILEINDEX = *mapscriptc::MS_LAYER_TILEINDEX;
*MS_LAYER_CHART = *mapscriptc::MS_LAYER_CHART;
*MS_TRUETYPE = *mapscriptc::MS_TRUETYPE;
*MS_BITMAP = *mapscriptc::MS_BITMAP;
*MS_POSITIONS_LENGTH = *mapscriptc::MS_POSITIONS_LENGTH;
*MS_UL = *mapscriptc::MS_UL;
*MS_LR = *mapscriptc::MS_LR;
*MS_UR = *mapscriptc::MS_UR;
*MS_LL = *mapscriptc::MS_LL;
*MS_CR = *mapscriptc::MS_CR;
*MS_CL = *mapscriptc::MS_CL;
*MS_UC = *mapscriptc::MS_UC;
*MS_LC = *mapscriptc::MS_LC;
*MS_CC = *mapscriptc::MS_CC;
*MS_AUTO = *mapscriptc::MS_AUTO;
*MS_XY = *mapscriptc::MS_XY;
*MS_FOLLOW = *mapscriptc::MS_FOLLOW;
*MS_TINY = *mapscriptc::MS_TINY;
*MS_SMALL = *mapscriptc::MS_SMALL;
*MS_MEDIUM = *mapscriptc::MS_MEDIUM;
*MS_LARGE = *mapscriptc::MS_LARGE;
*MS_GIANT = *mapscriptc::MS_GIANT;
*MS_NORMAL = *mapscriptc::MS_NORMAL;
*MS_HILITE = *mapscriptc::MS_HILITE;
*MS_SELECTED = *mapscriptc::MS_SELECTED;
*MS_INLINE = *mapscriptc::MS_INLINE;
*MS_SHAPEFILE = *mapscriptc::MS_SHAPEFILE;
*MS_TILED_SHAPEFILE = *mapscriptc::MS_TILED_SHAPEFILE;
*MS_SDE = *mapscriptc::MS_SDE;
*MS_OGR = *mapscriptc::MS_OGR;
*MS_UNUSED_1 = *mapscriptc::MS_UNUSED_1;
*MS_POSTGIS = *mapscriptc::MS_POSTGIS;
*MS_WMS = *mapscriptc::MS_WMS;
*MS_ORACLESPATIAL = *mapscriptc::MS_ORACLESPATIAL;
*MS_WFS = *mapscriptc::MS_WFS;
*MS_GRATICULE = *mapscriptc::MS_GRATICULE;
*MS_MYGIS = *mapscriptc::MS_MYGIS;
*MS_RASTER = *mapscriptc::MS_RASTER;
*MS_PLUGIN = *mapscriptc::MS_PLUGIN;
*MS_DB_XBASE = *mapscriptc::MS_DB_XBASE;
*MS_DB_CSV = *mapscriptc::MS_DB_CSV;
*MS_DB_MYSQL = *mapscriptc::MS_DB_MYSQL;
*MS_DB_ORACLE = *mapscriptc::MS_DB_ORACLE;
*MS_DB_POSTGRES = *mapscriptc::MS_DB_POSTGRES;
*MS_JOIN_ONE_TO_ONE = *mapscriptc::MS_JOIN_ONE_TO_ONE;
*MS_JOIN_ONE_TO_MANY = *mapscriptc::MS_JOIN_ONE_TO_MANY;
*MS_SINGLE = *mapscriptc::MS_SINGLE;
*MS_MULTIPLE = *mapscriptc::MS_MULTIPLE;
*MS_QUERY_SINGLE = *mapscriptc::MS_QUERY_SINGLE;
*MS_QUERY_MULTIPLE = *mapscriptc::MS_QUERY_MULTIPLE;
*MS_QUERY_IS_NULL = *mapscriptc::MS_QUERY_IS_NULL;
*MS_QUERY_BY_POINT = *mapscriptc::MS_QUERY_BY_POINT;
*MS_QUERY_BY_RECT = *mapscriptc::MS_QUERY_BY_RECT;
*MS_QUERY_BY_SHAPE = *mapscriptc::MS_QUERY_BY_SHAPE;
*MS_QUERY_BY_ATTRIBUTE = *mapscriptc::MS_QUERY_BY_ATTRIBUTE;
*MS_QUERY_BY_INDEX = *mapscriptc::MS_QUERY_BY_INDEX;
*MS_QUERY_BY_OPERATOR = *mapscriptc::MS_QUERY_BY_OPERATOR;
*MS_ALIGN_LEFT = *mapscriptc::MS_ALIGN_LEFT;
*MS_ALIGN_CENTER = *mapscriptc::MS_ALIGN_CENTER;
*MS_ALIGN_RIGHT = *mapscriptc::MS_ALIGN_RIGHT;
*MS_CJC_NONE = *mapscriptc::MS_CJC_NONE;
*MS_CJC_BEVEL = *mapscriptc::MS_CJC_BEVEL;
*MS_CJC_BUTT = *mapscriptc::MS_CJC_BUTT;
*MS_CJC_MITER = *mapscriptc::MS_CJC_MITER;
*MS_CJC_ROUND = *mapscriptc::MS_CJC_ROUND;
*MS_CJC_SQUARE = *mapscriptc::MS_CJC_SQUARE;
*MS_CJC_TRIANGLE = *mapscriptc::MS_CJC_TRIANGLE;
*MS_SUCCESS = *mapscriptc::MS_SUCCESS;
*MS_FAILURE = *mapscriptc::MS_FAILURE;
*MS_DONE = *mapscriptc::MS_DONE;
*MS_IMAGEMODE_PC256 = *mapscriptc::MS_IMAGEMODE_PC256;
*MS_IMAGEMODE_RGB = *mapscriptc::MS_IMAGEMODE_RGB;
*MS_IMAGEMODE_RGBA = *mapscriptc::MS_IMAGEMODE_RGBA;
*MS_IMAGEMODE_INT16 = *mapscriptc::MS_IMAGEMODE_INT16;
*MS_IMAGEMODE_FLOAT32 = *mapscriptc::MS_IMAGEMODE_FLOAT32;
*MS_IMAGEMODE_BYTE = *mapscriptc::MS_IMAGEMODE_BYTE;
*MS_IMAGEMODE_NULL = *mapscriptc::MS_IMAGEMODE_NULL;
*MS_GEOS_EQUALS = *mapscriptc::MS_GEOS_EQUALS;
*MS_GEOS_DISJOINT = *mapscriptc::MS_GEOS_DISJOINT;
*MS_GEOS_TOUCHES = *mapscriptc::MS_GEOS_TOUCHES;
*MS_GEOS_OVERLAPS = *mapscriptc::MS_GEOS_OVERLAPS;
*MS_GEOS_CROSSES = *mapscriptc::MS_GEOS_CROSSES;
*MS_GEOS_INTERSECTS = *mapscriptc::MS_GEOS_INTERSECTS;
*MS_GEOS_WITHIN = *mapscriptc::MS_GEOS_WITHIN;
*MS_GEOS_CONTAINS = *mapscriptc::MS_GEOS_CONTAINS;
*MS_GEOS_BEYOND = *mapscriptc::MS_GEOS_BEYOND;
*MS_GEOS_DWITHIN = *mapscriptc::MS_GEOS_DWITHIN;
*MS_NOOVERRIDE = *mapscriptc::MS_NOOVERRIDE;
*MS_STYLE_BINDING_LENGTH = *mapscriptc::MS_STYLE_BINDING_LENGTH;
*MS_STYLE_BINDING_SIZE = *mapscriptc::MS_STYLE_BINDING_SIZE;
*MS_STYLE_BINDING_WIDTH = *mapscriptc::MS_STYLE_BINDING_WIDTH;
*MS_STYLE_BINDING_ANGLE = *mapscriptc::MS_STYLE_BINDING_ANGLE;
*MS_STYLE_BINDING_COLOR = *mapscriptc::MS_STYLE_BINDING_COLOR;
*MS_STYLE_BINDING_OUTLINECOLOR = *mapscriptc::MS_STYLE_BINDING_OUTLINECOLOR;
*MS_STYLE_BINDING_SYMBOL = *mapscriptc::MS_STYLE_BINDING_SYMBOL;
*MS_STYLE_BINDING_OUTLINEWIDTH = *mapscriptc::MS_STYLE_BINDING_OUTLINEWIDTH;
*MS_STYLE_BINDING_OPACITY = *mapscriptc::MS_STYLE_BINDING_OPACITY;
*MS_LABEL_BINDING_LENGTH = *mapscriptc::MS_LABEL_BINDING_LENGTH;
*MS_LABEL_BINDING_SIZE = *mapscriptc::MS_LABEL_BINDING_SIZE;
*MS_LABEL_BINDING_ANGLE = *mapscriptc::MS_LABEL_BINDING_ANGLE;
*MS_LABEL_BINDING_COLOR = *mapscriptc::MS_LABEL_BINDING_COLOR;
*MS_LABEL_BINDING_OUTLINECOLOR = *mapscriptc::MS_LABEL_BINDING_OUTLINECOLOR;
*MS_LABEL_BINDING_FONT = *mapscriptc::MS_LABEL_BINDING_FONT;
*MS_LABEL_BINDING_PRIORITY = *mapscriptc::MS_LABEL_BINDING_PRIORITY;
*SHX_BUFFER_PAGE = *mapscriptc::SHX_BUFFER_PAGE;
*MS_SHAPEFILE_POINT = *mapscriptc::MS_SHAPEFILE_POINT;
*MS_SHAPEFILE_ARC = *mapscriptc::MS_SHAPEFILE_ARC;
*MS_SHAPEFILE_POLYGON = *mapscriptc::MS_SHAPEFILE_POLYGON;
*MS_SHAPEFILE_MULTIPOINT = *mapscriptc::MS_SHAPEFILE_MULTIPOINT;
*MS_SHP_POINTZ = *mapscriptc::MS_SHP_POINTZ;
*MS_SHP_ARCZ = *mapscriptc::MS_SHP_ARCZ;
*MS_SHP_POLYGONZ = *mapscriptc::MS_SHP_POLYGONZ;
*MS_SHP_MULTIPOINTZ = *mapscriptc::MS_SHP_MULTIPOINTZ;
*MS_SHP_POINTM = *mapscriptc::MS_SHP_POINTM;
*MS_SHP_ARCM = *mapscriptc::MS_SHP_ARCM;
*MS_SHP_POLYGONM = *mapscriptc::MS_SHP_POLYGONM;
*MS_SHP_MULTIPOINTM = *mapscriptc::MS_SHP_MULTIPOINTM;
*FTString = *mapscriptc::FTString;
*FTInteger = *mapscriptc::FTInteger;
*FTDouble = *mapscriptc::FTDouble;
*FTInvalid = *mapscriptc::FTInvalid;
*MS_SYMBOL_SIMPLE = *mapscriptc::MS_SYMBOL_SIMPLE;
*MS_SYMBOL_VECTOR = *mapscriptc::MS_SYMBOL_VECTOR;
*MS_SYMBOL_ELLIPSE = *mapscriptc::MS_SYMBOL_ELLIPSE;
*MS_SYMBOL_PIXMAP = *mapscriptc::MS_SYMBOL_PIXMAP;
*MS_SYMBOL_TRUETYPE = *mapscriptc::MS_SYMBOL_TRUETYPE;
*MS_SYMBOL_CARTOLINE = *mapscriptc::MS_SYMBOL_CARTOLINE;
*MS_SYMBOL_HATCH = *mapscriptc::MS_SYMBOL_HATCH;
*MS_SYMBOL_ALLOCSIZE = *mapscriptc::MS_SYMBOL_ALLOCSIZE;
*MS_MAXVECTORPOINTS = *mapscriptc::MS_MAXVECTORPOINTS;
*MS_MAXPATTERNLENGTH = *mapscriptc::MS_MAXPATTERNLENGTH;
*MS_IMAGECACHESIZE = *mapscriptc::MS_IMAGECACHESIZE;
*MS_NOERR = *mapscriptc::MS_NOERR;
*MS_IOERR = *mapscriptc::MS_IOERR;
*MS_MEMERR = *mapscriptc::MS_MEMERR;
*MS_TYPEERR = *mapscriptc::MS_TYPEERR;
*MS_SYMERR = *mapscriptc::MS_SYMERR;
*MS_REGEXERR = *mapscriptc::MS_REGEXERR;
*MS_TTFERR = *mapscriptc::MS_TTFERR;
*MS_DBFERR = *mapscriptc::MS_DBFERR;
*MS_GDERR = *mapscriptc::MS_GDERR;
*MS_IDENTERR = *mapscriptc::MS_IDENTERR;
*MS_EOFERR = *mapscriptc::MS_EOFERR;
*MS_PROJERR = *mapscriptc::MS_PROJERR;
*MS_MISCERR = *mapscriptc::MS_MISCERR;
*MS_CGIERR = *mapscriptc::MS_CGIERR;
*MS_WEBERR = *mapscriptc::MS_WEBERR;
*MS_IMGERR = *mapscriptc::MS_IMGERR;
*MS_HASHERR = *mapscriptc::MS_HASHERR;
*MS_JOINERR = *mapscriptc::MS_JOINERR;
*MS_NOTFOUND = *mapscriptc::MS_NOTFOUND;
*MS_SHPERR = *mapscriptc::MS_SHPERR;
*MS_PARSEERR = *mapscriptc::MS_PARSEERR;
*MS_SDEERR = *mapscriptc::MS_SDEERR;
*MS_OGRERR = *mapscriptc::MS_OGRERR;
*MS_QUERYERR = *mapscriptc::MS_QUERYERR;
*MS_WMSERR = *mapscriptc::MS_WMSERR;
*MS_WMSCONNERR = *mapscriptc::MS_WMSCONNERR;
*MS_ORACLESPATIALERR = *mapscriptc::MS_ORACLESPATIALERR;
*MS_WFSERR = *mapscriptc::MS_WFSERR;
*MS_WFSCONNERR = *mapscriptc::MS_WFSCONNERR;
*MS_MAPCONTEXTERR = *mapscriptc::MS_MAPCONTEXTERR;
*MS_HTTPERR = *mapscriptc::MS_HTTPERR;
*MS_CHILDERR = *mapscriptc::MS_CHILDERR;
*MS_WCSERR = *mapscriptc::MS_WCSERR;
*MS_GEOSERR = *mapscriptc::MS_GEOSERR;
*MS_RECTERR = *mapscriptc::MS_RECTERR;
*MS_TIMEERR = *mapscriptc::MS_TIMEERR;
*MS_GMLERR = *mapscriptc::MS_GMLERR;
*MS_SOSERR = *mapscriptc::MS_SOSERR;
*MS_NULLPARENTERR = *mapscriptc::MS_NULLPARENTERR;
*MS_AGGERR = *mapscriptc::MS_AGGERR;
*MS_OWSERR = *mapscriptc::MS_OWSERR;
*MS_NUMERRORCODES = *mapscriptc::MS_NUMERRORCODES;
*MS_OGLERR = *mapscriptc::MS_OGLERR;
*MESSAGELENGTH = *mapscriptc::MESSAGELENGTH;
*ROUTINELENGTH = *mapscriptc::ROUTINELENGTH;
*MS_ERROR_LANGUAGE = *mapscriptc::MS_ERROR_LANGUAGE;
*MS_DEBUGLEVEL_ERRORSONLY = *mapscriptc::MS_DEBUGLEVEL_ERRORSONLY;
*MS_DEBUGLEVEL_DEBUG = *mapscriptc::MS_DEBUGLEVEL_DEBUG;
*MS_DEBUGLEVEL_TUNING = *mapscriptc::MS_DEBUGLEVEL_TUNING;
*MS_DEBUGLEVEL_V = *mapscriptc::MS_DEBUGLEVEL_V;
*MS_DEBUGLEVEL_VV = *mapscriptc::MS_DEBUGLEVEL_VV;
*MS_DEBUGLEVEL_VVV = *mapscriptc::MS_DEBUGLEVEL_VVV;
*MS_HASHSIZE = *mapscriptc::MS_HASHSIZE;
*MS_MAX_CGI_PARAMS = *mapscriptc::MS_MAX_CGI_PARAMS;
*MS_GET_REQUEST = *mapscriptc::MS_GET_REQUEST;
*MS_POST_REQUEST = *mapscriptc::MS_POST_REQUEST;

        %PARENT_PTRS=();
        sub RFC24_ADD_PARENT_REF {
                my ($child, $parent)=@_;
                $PARENT_PTRS{ $$child }=$parent;
        }
        sub RFC24_DEL_PARENT_REF {
                my ($child)=@_;
                delete $PARENT_PTRS{ $$child };
        }

        # USE THIS function only for debugging!
        sub getPARENT_PTRS {
                return \%PARENT_PTRS;
        }
1;
