# This file was automatically generated by SWIG (https://www.swig.org).
# Version 4.4.1
#
# Do not make changes to this file unless you know what you are doing - modify
# the SWIG interface file 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;
*msLoadConfig = *mapscriptc::msLoadConfig;
*msFreeConfig = *mapscriptc::msFreeConfig;
*msConfigGetEnv = *mapscriptc::msConfigGetEnv;
*msConfigGetMap = *mapscriptc::msConfigGetMap;
*msConfigGetPlugin = *mapscriptc::msConfigGetPlugin;
*msConnPoolCloseUnreferenced = *mapscriptc::msConnPoolCloseUnreferenced;
*msIO_resetHandlers = *mapscriptc::msIO_resetHandlers;
*msIO_installStdoutToBuffer = *mapscriptc::msIO_installStdoutToBuffer;
*msIO_installStdinFromBuffer = *mapscriptc::msIO_installStdinFromBuffer;
*msIO_stripStdoutBufferContentType = *mapscriptc::msIO_stripStdoutBufferContentType;
*msIO_stripStdoutBufferContentHeaders = *mapscriptc::msIO_stripStdoutBufferContentHeaders;
*msIO_getStdoutBufferString = *mapscriptc::msIO_getStdoutBufferString;
*msIO_getStdoutBufferBytes = *mapscriptc::msIO_getStdoutBufferBytes;
*msIO_getAndStripStdoutBufferMimeHeaders = *mapscriptc::msIO_getAndStripStdoutBufferMimeHeaders;

############# 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::CompositingFilter ##############

package mapscript::CompositingFilter;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_filter_get = *mapscriptc::CompositingFilter_filter_get;
*swig_filter_set = *mapscriptc::CompositingFilter_filter_set;
*swig_next_get = *mapscriptc::CompositingFilter_next_get;
*swig_next_set = *mapscriptc::CompositingFilter_next_set;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_CompositingFilter(@_);
    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_CompositingFilter($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::LayerCompositer ##############

package mapscript::LayerCompositer;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_comp_op_get = *mapscriptc::LayerCompositer_comp_op_get;
*swig_comp_op_set = *mapscriptc::LayerCompositer_comp_op_set;
*swig_opacity_get = *mapscriptc::LayerCompositer_opacity_get;
*swig_opacity_set = *mapscriptc::LayerCompositer_opacity_set;
*swig_filter_get = *mapscriptc::LayerCompositer_filter_get;
*swig_filter_set = *mapscriptc::LayerCompositer_filter_set;
*swig_next_get = *mapscriptc::LayerCompositer_next_get;
*swig_next_set = *mapscriptc::LayerCompositer_next_set;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_LayerCompositer(@_);
    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_LayerCompositer($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::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::clusterObj ##############

package mapscript::clusterObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_maxdistance_get = *mapscriptc::clusterObj_maxdistance_get;
*swig_maxdistance_set = *mapscriptc::clusterObj_maxdistance_set;
*swig_buffer_get = *mapscriptc::clusterObj_buffer_get;
*swig_buffer_set = *mapscriptc::clusterObj_buffer_set;
*swig_region_get = *mapscriptc::clusterObj_region_get;
*swig_region_set = *mapscriptc::clusterObj_region_set;
*updateFromString = *mapscriptc::clusterObj_updateFromString;
*convertToString = *mapscriptc::clusterObj_convertToString;
*setGroup = *mapscriptc::clusterObj_setGroup;
*getGroupString = *mapscriptc::clusterObj_getGroupString;
*setFilter = *mapscriptc::clusterObj_setFilter;
*getFilterString = *mapscriptc::clusterObj_getFilterString;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_clusterObj(@_);
    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_clusterObj($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_numformatoptions_get = *mapscriptc::outputFormatObj_numformatoptions_get;
*swig_numformatoptions_set = *mapscriptc::outputFormatObj_numformatoptions_set;
*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_inmapfile_get = *mapscriptc::outputFormatObj_inmapfile_get;
*swig_inmapfile_set = *mapscriptc::outputFormatObj_inmapfile_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;
*getOptionAt = *mapscriptc::outputFormatObj_getOptionAt;
*attachDevice = *mapscriptc::outputFormatObj_attachDevice;
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_map_get = *mapscriptc::queryMapObj_map_get;
*swig_map_set = *mapscriptc::queryMapObj_map_set;
*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;
*convertToString = *mapscriptc::queryMapObj_convertToString;
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::webObj ##############

package mapscript::webObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*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;
*swig_map_get = *mapscriptc::webObj_map_get;
*swig_map_set = *mapscriptc::webObj_map_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_temppath_get = *mapscriptc::webObj_temppath_get;
*swig_temppath_set = *mapscriptc::webObj_temppath_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_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_template_get = *mapscriptc::webObj_template_get;
*swig_template_set = *mapscriptc::webObj_template_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;
*convertToString = *mapscriptc::webObj_convertToString;
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_symbolname_get = *mapscriptc::styleObj_symbolname_get;
*swig_symbolname_set = *mapscriptc::styleObj_symbolname_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_angle_get = *mapscriptc::styleObj_angle_get;
*swig_angle_set = *mapscriptc::styleObj_angle_set;
*swig_autoangle_get = *mapscriptc::styleObj_autoangle_get;
*swig_autoangle_set = *mapscriptc::styleObj_autoangle_set;
*swig_antialiased_get = *mapscriptc::styleObj_antialiased_get;
*swig_antialiased_set = *mapscriptc::styleObj_antialiased_set;
*swig_color_get = *mapscriptc::styleObj_color_get;
*swig_color_set = *mapscriptc::styleObj_color_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_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_gap_get = *mapscriptc::styleObj_gap_get;
*swig_gap_set = *mapscriptc::styleObj_gap_set;
*swig_initialgap_get = *mapscriptc::styleObj_initialgap_get;
*swig_initialgap_set = *mapscriptc::styleObj_initialgap_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_polaroffsetpixel_get = *mapscriptc::styleObj_polaroffsetpixel_get;
*swig_polaroffsetpixel_set = *mapscriptc::styleObj_polaroffsetpixel_set;
*swig_polaroffsetangle_get = *mapscriptc::styleObj_polaroffsetangle_get;
*swig_polaroffsetangle_set = *mapscriptc::styleObj_polaroffsetangle_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;
*swig_sizeunits_get = *mapscriptc::styleObj_sizeunits_get;
*swig_sizeunits_set = *mapscriptc::styleObj_sizeunits_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;
*convertToString = *mapscriptc::styleObj_convertToString;
*clone = *mapscriptc::styleObj_clone;
*setSymbolByName = *mapscriptc::styleObj_setSymbolByName;
*removeBinding = *mapscriptc::styleObj_removeBinding;
*setBinding = *mapscriptc::styleObj_setBinding;
*getBinding = *mapscriptc::styleObj_getBinding;
*getGeomTransform = *mapscriptc::styleObj_getGeomTransform;
*setGeomTransform = *mapscriptc::styleObj_setGeomTransform;
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::labelLeaderObj ##############

package mapscript::labelLeaderObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_numstyles_get = *mapscriptc::labelLeaderObj_numstyles_get;
*swig_numstyles_set = *mapscriptc::labelLeaderObj_numstyles_set;
*swig_maxdistance_get = *mapscriptc::labelLeaderObj_maxdistance_get;
*swig_maxdistance_set = *mapscriptc::labelLeaderObj_maxdistance_set;
*swig_gridstep_get = *mapscriptc::labelLeaderObj_gridstep_get;
*swig_gridstep_set = *mapscriptc::labelLeaderObj_gridstep_set;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_labelLeaderObj(@_);
    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_labelLeaderObj($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_refcount_get = *mapscriptc::labelObj_refcount_get;
*swig_refcount_set = *mapscriptc::labelObj_refcount_set;
*swig_font_get = *mapscriptc::labelObj_font_get;
*swig_font_set = *mapscriptc::labelObj_font_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_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_anglemode_get = *mapscriptc::labelObj_anglemode_get;
*swig_anglemode_set = *mapscriptc::labelObj_anglemode_set;
*swig_buffer_get = *mapscriptc::labelObj_buffer_get;
*swig_buffer_set = *mapscriptc::labelObj_buffer_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_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_maxoverlapangle_get = *mapscriptc::labelObj_maxoverlapangle_get;
*swig_maxoverlapangle_set = *mapscriptc::labelObj_maxoverlapangle_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;
*swig_numstyles_get = *mapscriptc::labelObj_numstyles_get;
*swig_numstyles_set = *mapscriptc::labelObj_numstyles_set;
*swig_sizeunits_get = *mapscriptc::labelObj_sizeunits_get;
*swig_sizeunits_set = *mapscriptc::labelObj_sizeunits_set;
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};
    }
}

*updateFromString = *mapscriptc::labelObj_updateFromString;
*convertToString = *mapscriptc::labelObj_convertToString;
*removeBinding = *mapscriptc::labelObj_removeBinding;
*getBinding = *mapscriptc::labelObj_getBinding;
*setBinding = *mapscriptc::labelObj_setBinding;
*removeExpressionBinding = *mapscriptc::labelObj_removeExpressionBinding;
*getExpressionBinding = *mapscriptc::labelObj_getExpressionBinding;
*setExpressionBinding = *mapscriptc::labelObj_setExpressionBinding;
*setExpression = *mapscriptc::labelObj_setExpression;
*getExpressionString = *mapscriptc::labelObj_getExpressionString;
*setText = *mapscriptc::labelObj_setText;
*getTextString = *mapscriptc::labelObj_getTextString;
*getStyle = *mapscriptc::labelObj_getStyle;
*insertStyle = *mapscriptc::labelObj_insertStyle;
*removeStyle = *mapscriptc::labelObj_removeStyle;
*moveStyleUp = *mapscriptc::labelObj_moveStyleUp;
*moveStyleDown = *mapscriptc::labelObj_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::classObj ##############

package mapscript::classObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*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_numstyles_get = *mapscriptc::classObj_numstyles_get;
*swig_numstyles_set = *mapscriptc::classObj_numstyles_set;
*swig_numlabels_get = *mapscriptc::classObj_numlabels_get;
*swig_numlabels_set = *mapscriptc::classObj_numlabels_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_leader_get = *mapscriptc::classObj_leader_get;
*swig_leader_set = *mapscriptc::classObj_leader_set;
*swig_status_get = *mapscriptc::classObj_status_get;
*swig_status_set = *mapscriptc::classObj_status_set;
*swig_isfallback_get = *mapscriptc::classObj_isfallback_get;
*swig_isfallback_set = *mapscriptc::classObj_isfallback_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_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_minfeaturesize_get = *mapscriptc::classObj_minfeaturesize_get;
*swig_minfeaturesize_set = *mapscriptc::classObj_minfeaturesize_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;
*swig_sizeunits_get = *mapscriptc::classObj_sizeunits_get;
*swig_sizeunits_set = *mapscriptc::classObj_sizeunits_set;
*swig_template_get = *mapscriptc::classObj_template_get;
*swig_template_set = *mapscriptc::classObj_template_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;
*convertToString = *mapscriptc::classObj_convertToString;
*clone = *mapscriptc::classObj_clone;
*setExpression = *mapscriptc::classObj_setExpression;
*getExpressionString = *mapscriptc::classObj_getExpressionString;
*setText = *mapscriptc::classObj_setText;
*getTextString = *mapscriptc::classObj_getTextString;
*drawLegendIcon = *mapscriptc::classObj_drawLegendIcon;
*createLegendIcon = *mapscriptc::classObj_createLegendIcon;
*getLabel = *mapscriptc::classObj_getLabel;
*addLabel = *mapscriptc::classObj_addLabel;
*removeLabel = *mapscriptc::classObj_removeLabel;
*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_numtextsymbols_get = *mapscriptc::labelCacheMemberObj_numtextsymbols_get;
*swig_numtextsymbols_set = *mapscriptc::labelCacheMemberObj_numtextsymbols_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_status_get = *mapscriptc::labelCacheMemberObj_status_get;
*swig_status_set = *mapscriptc::labelCacheMemberObj_status_set;
*swig_markerid_get = *mapscriptc::labelCacheMemberObj_markerid_get;
*swig_markerid_set = *mapscriptc::labelCacheMemberObj_markerid_set;
*swig_point_get = *mapscriptc::labelCacheMemberObj_point_get;
*swig_point_set = *mapscriptc::labelCacheMemberObj_point_set;
*swig_bbox_get = *mapscriptc::labelCacheMemberObj_bbox_get;
*swig_bbox_set = *mapscriptc::labelCacheMemberObj_bbox_set;
*swig_leaderline_get = *mapscriptc::labelCacheMemberObj_leaderline_get;
*swig_leaderline_set = *mapscriptc::labelCacheMemberObj_leaderline_set;
*swig_leaderbbox_get = *mapscriptc::labelCacheMemberObj_leaderbbox_get;
*swig_leaderbbox_set = *mapscriptc::labelCacheMemberObj_leaderbbox_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_bounds_get = *mapscriptc::markerCacheMemberObj_bounds_get;
*swig_bounds_set = *mapscriptc::markerCacheMemberObj_bounds_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_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_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;
*swig_labels_get = *mapscriptc::labelCacheSlotObj_labels_get;
*swig_labels_set = *mapscriptc::labelCacheSlotObj_labels_set;
*swig_markers_get = *mapscriptc::labelCacheSlotObj_markers_get;
*swig_markers_set = *mapscriptc::labelCacheSlotObj_markers_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_num_rendered_members_get = *mapscriptc::labelCacheObj_num_rendered_members_get;
*swig_num_rendered_members_set = *mapscriptc::labelCacheObj_num_rendered_members_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::resultObj ##############

package mapscript::resultObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_shapeindex_get = *mapscriptc::resultObj_shapeindex_get;
*swig_shapeindex_set = *mapscriptc::resultObj_shapeindex_set;
*swig_tileindex_get = *mapscriptc::resultObj_tileindex_get;
*swig_tileindex_set = *mapscriptc::resultObj_tileindex_set;
*swig_resultindex_get = *mapscriptc::resultObj_resultindex_get;
*swig_resultindex_set = *mapscriptc::resultObj_resultindex_set;
*swig_classindex_get = *mapscriptc::resultObj_classindex_get;
*swig_classindex_set = *mapscriptc::resultObj_classindex_set;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_resultObj(@_);
    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_resultObj($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_hasnext_get = *mapscriptc::resultCacheObj_hasnext_get;
*swig_hasnext_set = *mapscriptc::resultCacheObj_hasnext_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_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;
*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;
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_map_get = *mapscriptc::referenceMapObj_map_get;
*swig_map_set = *mapscriptc::referenceMapObj_map_set;
*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;
*updateFromString = *mapscriptc::referenceMapObj_updateFromString;
*convertToString = *mapscriptc::referenceMapObj_convertToString;
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_transparent_get = *mapscriptc::scalebarObj_transparent_get;
*swig_transparent_set = *mapscriptc::scalebarObj_transparent_set;
*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;
*swig_offsetx_get = *mapscriptc::scalebarObj_offsetx_get;
*swig_offsetx_set = *mapscriptc::scalebarObj_offsetx_set;
*swig_offsety_get = *mapscriptc::scalebarObj_offsety_get;
*swig_offsety_set = *mapscriptc::scalebarObj_offsety_set;
*updateFromString = *mapscriptc::scalebarObj_updateFromString;
*convertToString = *mapscriptc::scalebarObj_convertToString;
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_label_get = *mapscriptc::legendObj_label_get;
*swig_label_set = *mapscriptc::legendObj_label_set;
*swig_map_get = *mapscriptc::legendObj_map_get;
*swig_map_set = *mapscriptc::legendObj_map_set;
*swig_transparent_get = *mapscriptc::legendObj_transparent_get;
*swig_transparent_set = *mapscriptc::legendObj_transparent_set;
*swig_imagecolor_get = *mapscriptc::legendObj_imagecolor_get;
*swig_imagecolor_set = *mapscriptc::legendObj_imagecolor_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;
*updateFromString = *mapscriptc::legendObj_updateFromString;
*convertToString = *mapscriptc::legendObj_convertToString;
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::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;
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;
*pasteImage = *mapscriptc::imageObj_pasteImage;
*saveWebImage = *mapscriptc::imageObj_saveWebImage;
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::scaleTokenEntryObj ##############

package mapscript::scaleTokenEntryObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_minscale_get = *mapscriptc::scaleTokenEntryObj_minscale_get;
*swig_minscale_set = *mapscriptc::scaleTokenEntryObj_minscale_set;
*swig_maxscale_get = *mapscriptc::scaleTokenEntryObj_maxscale_get;
*swig_maxscale_set = *mapscriptc::scaleTokenEntryObj_maxscale_set;
*swig_value_get = *mapscriptc::scaleTokenEntryObj_value_get;
*swig_value_set = *mapscriptc::scaleTokenEntryObj_value_set;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_scaleTokenEntryObj(@_);
    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_scaleTokenEntryObj($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::scaleTokenObj ##############

package mapscript::scaleTokenObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_name_get = *mapscriptc::scaleTokenObj_name_get;
*swig_name_set = *mapscriptc::scaleTokenObj_name_set;
*swig_n_entries_get = *mapscriptc::scaleTokenObj_n_entries_get;
*swig_n_entries_set = *mapscriptc::scaleTokenObj_n_entries_set;
*swig_tokens_get = *mapscriptc::scaleTokenObj_tokens_get;
*swig_tokens_set = *mapscriptc::scaleTokenObj_tokens_set;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_scaleTokenObj(@_);
    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_scaleTokenObj($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_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_numitems_get = *mapscriptc::layerObj_numitems_get;
*swig_numitems_set = *mapscriptc::layerObj_numitems_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_bindvals_get = *mapscriptc::layerObj_bindvals_get;
*swig_bindvals_set = *mapscriptc::layerObj_bindvals_set;
*swig_connectionoptions_get = *mapscriptc::layerObj_connectionoptions_get;
*swig_connectionoptions_set = *mapscriptc::layerObj_connectionoptions_set;
*swig_cluster_get = *mapscriptc::layerObj_cluster_get;
*swig_cluster_set = *mapscriptc::layerObj_cluster_set;
*swig_extent_get = *mapscriptc::layerObj_extent_get;
*swig_extent_set = *mapscriptc::layerObj_extent_set;
*swig_numjoins_get = *mapscriptc::layerObj_numjoins_get;
*swig_numjoins_set = *mapscriptc::layerObj_numjoins_set;
*swig_utfdata_get = *mapscriptc::layerObj_utfdata_get;
*swig_utfdata_set = *mapscriptc::layerObj_utfdata_set;
*swig_compositer_get = *mapscriptc::layerObj_compositer_get;
*swig_compositer_set = *mapscriptc::layerObj_compositer_set;
*swig_classitem_get = *mapscriptc::layerObj_classitem_get;
*swig_classitem_set = *mapscriptc::layerObj_classitem_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_rendermode_get = *mapscriptc::layerObj_rendermode_get;
*swig_rendermode_set = *mapscriptc::layerObj_rendermode_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_connectiontype_get = *mapscriptc::layerObj_connectiontype_get;
*swig_connectiontype_set = *mapscriptc::layerObj_connectiontype_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_identificationclassauto_get = *mapscriptc::layerObj_identificationclassauto_get;
*swig_identificationclassauto_set = *mapscriptc::layerObj_identificationclassauto_set;
*swig_identificationclassgroup_get = *mapscriptc::layerObj_identificationclassgroup_get;
*swig_identificationclassgroup_set = *mapscriptc::layerObj_identificationclassgroup_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_minfeaturesize_get = *mapscriptc::layerObj_minfeaturesize_get;
*swig_minfeaturesize_set = *mapscriptc::layerObj_minfeaturesize_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_startindex_get = *mapscriptc::layerObj_startindex_get;
*swig_startindex_set = *mapscriptc::layerObj_startindex_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_tilesrs_get = *mapscriptc::layerObj_tilesrs_get;
*swig_tilesrs_set = *mapscriptc::layerObj_tilesrs_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_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_debug_get = *mapscriptc::layerObj_debug_get;
*swig_debug_set = *mapscriptc::layerObj_debug_set;
*swig_classgroup_get = *mapscriptc::layerObj_classgroup_get;
*swig_classgroup_set = *mapscriptc::layerObj_classgroup_set;
*swig_mask_get = *mapscriptc::layerObj_mask_get;
*swig_mask_set = *mapscriptc::layerObj_mask_set;
*swig_encoding_get = *mapscriptc::layerObj_encoding_get;
*swig_encoding_set = *mapscriptc::layerObj_encoding_set;
*swig_utfitem_get = *mapscriptc::layerObj_utfitem_get;
*swig_utfitem_set = *mapscriptc::layerObj_utfitem_set;
*swig_utfitemindex_get = *mapscriptc::layerObj_utfitemindex_get;
*swig_utfitemindex_set = *mapscriptc::layerObj_utfitemindex_set;
*swig_numprocessing_get = *mapscriptc::layerObj_numprocessing_get;
*swig_numprocessing_set = *mapscriptc::layerObj_numprocessing_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;
}

*setOpacity = *mapscriptc::layerObj_setOpacity;
*getOpacity = *mapscriptc::layerObj_getOpacity;
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;
*convertToString = *mapscriptc::layerObj_convertToString;
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;
*getShape = *mapscriptc::layerObj_getShape;
*getNumResults = *mapscriptc::layerObj_getNumResults;
*getResultsBounds = *mapscriptc::layerObj_getResultsBounds;
*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;
*setItems = *mapscriptc::layerObj_setItems;
*draw = *mapscriptc::layerObj_draw;
*drawQuery = *mapscriptc::layerObj_drawQuery;
*queryByFilter = *mapscriptc::layerObj_queryByFilter;
*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;
*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;
*addProcessing = *mapscriptc::layerObj_addProcessing;
*getNumProcessing = *mapscriptc::layerObj_getNumProcessing;
*getProcessing = *mapscriptc::layerObj_getProcessing;
*getProcessingKey = *mapscriptc::layerObj_getProcessingKey;
*clearProcessing = *mapscriptc::layerObj_clearProcessing;
*setConnectionType = *mapscriptc::layerObj_setConnectionType;
*getClassIndex = *mapscriptc::layerObj_getClassIndex;
*getGeomTransform = *mapscriptc::layerObj_getGeomTransform;
*setGeomTransform = *mapscriptc::layerObj_setGeomTransform;
*getItemType = *mapscriptc::layerObj_getItemType;
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_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_configoptions_get = *mapscriptc::mapObj_configoptions_get;
*swig_configoptions_set = *mapscriptc::mapObj_configoptions_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_numoutputformats_get = *mapscriptc::mapObj_numoutputformats_get;
*swig_numoutputformats_set = *mapscriptc::mapObj_numoutputformats_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_config_get = *mapscriptc::mapObj_config_get;
*swig_config_set = *mapscriptc::mapObj_config_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_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_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_sldurl_get = *mapscriptc::mapObj_sldurl_get;
*swig_sldurl_set = *mapscriptc::mapObj_sldurl_set;
*swig_imagecolor_get = *mapscriptc::mapObj_imagecolor_get;
*swig_imagecolor_set = *mapscriptc::mapObj_imagecolor_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;
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;
*pixelToGeoref = *mapscriptc::mapObj_pixelToGeoref;
*getRotation = *mapscriptc::mapObj_getRotation;
*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;
*getOutputFormat = *mapscriptc::mapObj_getOutputFormat;
*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;
*queryByFilter = *mapscriptc::mapObj_queryByFilter;
*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;
*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;
*convertToString = *mapscriptc::mapObj_convertToString;
*applyDefaultSubstitutions = *mapscriptc::mapObj_applyDefaultSubstitutions;
*applySubstitutions = *mapscriptc::mapObj_applySubstitutions;
*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::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;
*swig_z_get = *mapscriptc::pointObj_z_get;
*swig_z_set = *mapscriptc::pointObj_z_set;
*swig_m_get = *mapscriptc::pointObj_m_get;
*swig_m_set = *mapscriptc::pointObj_m_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;
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_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;
*swig_scratch_get = *mapscriptc::shapeObj_scratch_get;
*swig_scratch_set = *mapscriptc::shapeObj_scratch_set;
*swig_resultindex_get = *mapscriptc::shapeObj_resultindex_get;
*swig_resultindex_set = *mapscriptc::shapeObj_resultindex_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::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;
*swig_http_status_get = *mapscriptc::errorObj_http_status_get;
*swig_http_status_set = *mapscriptc::errorObj_http_status_set;
*swig_isreported_get = *mapscriptc::errorObj_isreported_get;
*swig_isreported_set = *mapscriptc::errorObj_isreported_set;
*swig_errorcount_get = *mapscriptc::errorObj_errorcount_get;
*swig_errorcount_set = *mapscriptc::errorObj_errorcount_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::DBFInfo ##############

package mapscript::DBFInfo;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_nRecords_get = *mapscriptc::DBFInfo_nRecords_get;
*swig_nRecords_set = *mapscriptc::DBFInfo_nRecords_set;
*swig_nFields_get = *mapscriptc::DBFInfo_nFields_get;
*swig_nFields_set = *mapscriptc::DBFInfo_nFields_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_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;
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;
*swig_generation_number_get = *mapscriptc::projectionObj_generation_number_get;
*swig_generation_number_set = *mapscriptc::projectionObj_generation_number_set;
*swig_wellknownprojection_get = *mapscriptc::projectionObj_wellknownprojection_get;
*swig_wellknownprojection_set = *mapscriptc::projectionObj_wellknownprojection_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::reprojectionObj ##############

package mapscript::reprojectionObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_generation_number_in_get = *mapscriptc::reprojectionObj_generation_number_in_get;
*swig_generation_number_in_set = *mapscriptc::reprojectionObj_generation_number_in_set;
*swig_generation_number_out_get = *mapscriptc::reprojectionObj_generation_number_out_get;
*swig_generation_number_out_set = *mapscriptc::reprojectionObj_generation_number_out_set;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_reprojectionObj(@_);
    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_reprojectionObj($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::colorObj ##############

package mapscript::colorObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*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_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_imagepath_get = *mapscriptc::symbolObj_imagepath_get;
*swig_imagepath_set = *mapscriptc::symbolObj_imagepath_set;
*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_inmapfile_get = *mapscriptc::symbolObj_inmapfile_get;
*swig_inmapfile_set = *mapscriptc::symbolObj_inmapfile_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_filled_get = *mapscriptc::symbolObj_filled_get;
*swig_filled_set = *mapscriptc::symbolObj_filled_set;
*swig_anchorpoint_x_get = *mapscriptc::symbolObj_anchorpoint_x_get;
*swig_anchorpoint_x_set = *mapscriptc::symbolObj_anchorpoint_x_set;
*swig_anchorpoint_y_get = *mapscriptc::symbolObj_anchorpoint_y_get;
*swig_anchorpoint_y_set = *mapscriptc::symbolObj_anchorpoint_y_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_font_get = *mapscriptc::symbolObj_font_get;
*swig_font_set = *mapscriptc::symbolObj_font_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;
*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::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::configObj ##############

package mapscript::configObj;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( mapscript );
%OWNER = ();
%ITERATORS = ();
*swig_env_get = *mapscriptc::configObj_env_get;
*swig_env_set = *mapscriptc::configObj_env_set;
*swig_maps_get = *mapscriptc::configObj_maps_get;
*swig_maps_set = *mapscriptc::configObj_maps_set;
*swig_plugins_get = *mapscriptc::configObj_plugins_get;
*swig_plugins_set = *mapscriptc::configObj_plugins_set;
sub new {
    my $pkg = shift;
    my $self = mapscriptc::new_configObj(@_);
    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_configObj($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::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);
}

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

*loadParams = *mapscriptc::OWSRequest_loadParams;
*loadParamsFromURL = *mapscriptc::OWSRequest_loadParamsFromURL;
*loadParamsFromPost = *mapscriptc::OWSRequest_loadParamsFromPost;
*setParameter = *mapscriptc::OWSRequest_setParameter;
*addParameter = *mapscriptc::OWSRequest_addParameter;
*getName = *mapscriptc::OWSRequest_getName;
*getValue = *mapscriptc::OWSRequest_getValue;
*getValueByName = *mapscriptc::OWSRequest_getValueByName;
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_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_LAYER_ALLOCSIZE = *mapscriptc::MS_LAYER_ALLOCSIZE;
*MS_CLASS_ALLOCSIZE = *mapscriptc::MS_CLASS_ALLOCSIZE;
*MS_STYLE_ALLOCSIZE = *mapscriptc::MS_STYLE_ALLOCSIZE;
*MS_LABEL_ALLOCSIZE = *mapscriptc::MS_LABEL_ALLOCSIZE;
*MS_MAX_LABEL_PRIORITY = *mapscriptc::MS_MAX_LABEL_PRIORITY;
*MS_MAX_LABEL_FONTS = *mapscriptc::MS_MAX_LABEL_FONTS;
*MS_DEFAULT_LABEL_PRIORITY = *mapscriptc::MS_DEFAULT_LABEL_PRIORITY;
*MS_LABEL_FORCE_GROUP = *mapscriptc::MS_LABEL_FORCE_GROUP;
*MS_RENDER_WITH_SWF = *mapscriptc::MS_RENDER_WITH_SWF;
*MS_RENDER_WITH_RAWDATA = *mapscriptc::MS_RENDER_WITH_RAWDATA;
*MS_RENDER_WITH_IMAGEMAP = *mapscriptc::MS_RENDER_WITH_IMAGEMAP;
*MS_RENDER_WITH_TEMPLATE = *mapscriptc::MS_RENDER_WITH_TEMPLATE;
*MS_RENDER_WITH_OGR = *mapscriptc::MS_RENDER_WITH_OGR;
*MS_RENDER_WITH_PLUGIN = *mapscriptc::MS_RENDER_WITH_PLUGIN;
*MS_RENDER_WITH_CAIRO_RASTER = *mapscriptc::MS_RENDER_WITH_CAIRO_RASTER;
*MS_RENDER_WITH_CAIRO_PDF = *mapscriptc::MS_RENDER_WITH_CAIRO_PDF;
*MS_RENDER_WITH_CAIRO_SVG = *mapscriptc::MS_RENDER_WITH_CAIRO_SVG;
*MS_RENDER_WITH_OGL = *mapscriptc::MS_RENDER_WITH_OGL;
*MS_RENDER_WITH_AGG = *mapscriptc::MS_RENDER_WITH_AGG;
*MS_RENDER_WITH_KML = *mapscriptc::MS_RENDER_WITH_KML;
*MS_RENDER_WITH_UTFGRID = *mapscriptc::MS_RENDER_WITH_UTFGRID;
*MS_RENDER_WITH_MVT = *mapscriptc::MS_RENDER_WITH_MVT;
*MS_NUM_CHECK_NONE = *mapscriptc::MS_NUM_CHECK_NONE;
*MS_NUM_CHECK_RANGE = *mapscriptc::MS_NUM_CHECK_RANGE;
*MS_NUM_CHECK_GT = *mapscriptc::MS_NUM_CHECK_GT;
*MS_NUM_CHECK_GTE = *mapscriptc::MS_NUM_CHECK_GTE;
*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_DD = *mapscriptc::MS_DD;
*MS_PIXELS = *mapscriptc::MS_PIXELS;
*MS_PERCENTAGES = *mapscriptc::MS_PERCENTAGES;
*MS_NAUTICALMILES = *mapscriptc::MS_NAUTICALMILES;
*MS_INHERIT = *mapscriptc::MS_INHERIT;
*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_FIRST_MATCHING_CLASS = *mapscriptc::MS_FIRST_MATCHING_CLASS;
*MS_ALL_MATCHING_CLASSES = *mapscriptc::MS_ALL_MATCHING_CLASSES;
*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_NONE = *mapscriptc::MS_NONE;
*MS_AUTO2 = *mapscriptc::MS_AUTO2;
*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_UNUSED_2 = *mapscriptc::MS_UNUSED_2;
*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_MYSQL = *mapscriptc::MS_MYSQL;
*MS_RASTER = *mapscriptc::MS_RASTER;
*MS_PLUGIN = *mapscriptc::MS_PLUGIN;
*MS_UNION = *mapscriptc::MS_UNION;
*MS_UVRASTER = *mapscriptc::MS_UVRASTER;
*MS_CONTOUR = *mapscriptc::MS_CONTOUR;
*MS_KERNELDENSITY = *mapscriptc::MS_KERNELDENSITY;
*MS_IDW = *mapscriptc::MS_IDW;
*MS_FLATGEOBUF = *mapscriptc::MS_FLATGEOBUF;
*MS_RASTER_LABEL = *mapscriptc::MS_RASTER_LABEL;
*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_FILTER = *mapscriptc::MS_QUERY_BY_FILTER;
*MS_ALIGN_DEFAULT = *mapscriptc::MS_ALIGN_DEFAULT;
*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_CJC_DEFAULT_JOIN_MAXSIZE = *mapscriptc::MS_CJC_DEFAULT_JOIN_MAXSIZE;
*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_FEATURE = *mapscriptc::MS_IMAGEMODE_FEATURE;
*MS_IMAGEMODE_NULL = *mapscriptc::MS_IMAGEMODE_NULL;
*MS_IMAGEMODE_FLOAT64 = *mapscriptc::MS_IMAGEMODE_FLOAT64;
*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_TRANSFORM_NONE = *mapscriptc::MS_TRANSFORM_NONE;
*MS_TRANSFORM_ROUND = *mapscriptc::MS_TRANSFORM_ROUND;
*MS_TRANSFORM_SNAPTOGRID = *mapscriptc::MS_TRANSFORM_SNAPTOGRID;
*MS_TRANSFORM_FULLRESOLUTION = *mapscriptc::MS_TRANSFORM_FULLRESOLUTION;
*MS_TRANSFORM_SIMPLIFY = *mapscriptc::MS_TRANSFORM_SIMPLIFY;
*MS_COMPOP_CLEAR = *mapscriptc::MS_COMPOP_CLEAR;
*MS_COMPOP_SRC = *mapscriptc::MS_COMPOP_SRC;
*MS_COMPOP_DST = *mapscriptc::MS_COMPOP_DST;
*MS_COMPOP_SRC_OVER = *mapscriptc::MS_COMPOP_SRC_OVER;
*MS_COMPOP_DST_OVER = *mapscriptc::MS_COMPOP_DST_OVER;
*MS_COMPOP_SRC_IN = *mapscriptc::MS_COMPOP_SRC_IN;
*MS_COMPOP_DST_IN = *mapscriptc::MS_COMPOP_DST_IN;
*MS_COMPOP_SRC_OUT = *mapscriptc::MS_COMPOP_SRC_OUT;
*MS_COMPOP_DST_OUT = *mapscriptc::MS_COMPOP_DST_OUT;
*MS_COMPOP_SRC_ATOP = *mapscriptc::MS_COMPOP_SRC_ATOP;
*MS_COMPOP_DST_ATOP = *mapscriptc::MS_COMPOP_DST_ATOP;
*MS_COMPOP_XOR = *mapscriptc::MS_COMPOP_XOR;
*MS_COMPOP_PLUS = *mapscriptc::MS_COMPOP_PLUS;
*MS_COMPOP_MINUS = *mapscriptc::MS_COMPOP_MINUS;
*MS_COMPOP_MULTIPLY = *mapscriptc::MS_COMPOP_MULTIPLY;
*MS_COMPOP_SCREEN = *mapscriptc::MS_COMPOP_SCREEN;
*MS_COMPOP_OVERLAY = *mapscriptc::MS_COMPOP_OVERLAY;
*MS_COMPOP_DARKEN = *mapscriptc::MS_COMPOP_DARKEN;
*MS_COMPOP_LIGHTEN = *mapscriptc::MS_COMPOP_LIGHTEN;
*MS_COMPOP_COLOR_DODGE = *mapscriptc::MS_COMPOP_COLOR_DODGE;
*MS_COMPOP_COLOR_BURN = *mapscriptc::MS_COMPOP_COLOR_BURN;
*MS_COMPOP_HARD_LIGHT = *mapscriptc::MS_COMPOP_HARD_LIGHT;
*MS_COMPOP_SOFT_LIGHT = *mapscriptc::MS_COMPOP_SOFT_LIGHT;
*MS_COMPOP_DIFFERENCE = *mapscriptc::MS_COMPOP_DIFFERENCE;
*MS_COMPOP_EXCLUSION = *mapscriptc::MS_COMPOP_EXCLUSION;
*MS_COMPOP_CONTRAST = *mapscriptc::MS_COMPOP_CONTRAST;
*MS_COMPOP_INVERT = *mapscriptc::MS_COMPOP_INVERT;
*MS_COMPOP_INVERT_RGB = *mapscriptc::MS_COMPOP_INVERT_RGB;
*MS_COMPOP_HSL_HUE = *mapscriptc::MS_COMPOP_HSL_HUE;
*MS_COMPOP_HSL_LUMINOSITY = *mapscriptc::MS_COMPOP_HSL_LUMINOSITY;
*MS_COMPOP_HSL_SATURATION = *mapscriptc::MS_COMPOP_HSL_SATURATION;
*MS_COMPOP_HSL_COLOR = *mapscriptc::MS_COMPOP_HSL_COLOR;
*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_STYLE_BINDING_OFFSET_X = *mapscriptc::MS_STYLE_BINDING_OFFSET_X;
*MS_STYLE_BINDING_OFFSET_Y = *mapscriptc::MS_STYLE_BINDING_OFFSET_Y;
*MS_STYLE_BINDING_POLAROFFSET_PIXEL = *mapscriptc::MS_STYLE_BINDING_POLAROFFSET_PIXEL;
*MS_STYLE_BINDING_POLAROFFSET_ANGLE = *mapscriptc::MS_STYLE_BINDING_POLAROFFSET_ANGLE;
*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;
*MS_LABEL_BINDING_POSITION = *mapscriptc::MS_LABEL_BINDING_POSITION;
*MS_LABEL_BINDING_SHADOWSIZEX = *mapscriptc::MS_LABEL_BINDING_SHADOWSIZEX;
*MS_LABEL_BINDING_SHADOWSIZEY = *mapscriptc::MS_LABEL_BINDING_SHADOWSIZEY;
*MS_LABEL_BINDING_OFFSET_X = *mapscriptc::MS_LABEL_BINDING_OFFSET_X;
*MS_LABEL_BINDING_OFFSET_Y = *mapscriptc::MS_LABEL_BINDING_OFFSET_Y;
*MS_LABEL_BINDING_ALIGN = *mapscriptc::MS_LABEL_BINDING_ALIGN;
*MS_TOKEN_LOGICAL_AND = *mapscriptc::MS_TOKEN_LOGICAL_AND;
*MS_TOKEN_LOGICAL_OR = *mapscriptc::MS_TOKEN_LOGICAL_OR;
*MS_TOKEN_LOGICAL_NOT = *mapscriptc::MS_TOKEN_LOGICAL_NOT;
*MS_TOKEN_LITERAL_NUMBER = *mapscriptc::MS_TOKEN_LITERAL_NUMBER;
*MS_TOKEN_LITERAL_STRING = *mapscriptc::MS_TOKEN_LITERAL_STRING;
*MS_TOKEN_LITERAL_TIME = *mapscriptc::MS_TOKEN_LITERAL_TIME;
*MS_TOKEN_LITERAL_SHAPE = *mapscriptc::MS_TOKEN_LITERAL_SHAPE;
*MS_TOKEN_LITERAL_BOOLEAN = *mapscriptc::MS_TOKEN_LITERAL_BOOLEAN;
*MS_TOKEN_COMPARISON_EQ = *mapscriptc::MS_TOKEN_COMPARISON_EQ;
*MS_TOKEN_COMPARISON_NE = *mapscriptc::MS_TOKEN_COMPARISON_NE;
*MS_TOKEN_COMPARISON_GT = *mapscriptc::MS_TOKEN_COMPARISON_GT;
*MS_TOKEN_COMPARISON_LT = *mapscriptc::MS_TOKEN_COMPARISON_LT;
*MS_TOKEN_COMPARISON_LE = *mapscriptc::MS_TOKEN_COMPARISON_LE;
*MS_TOKEN_COMPARISON_GE = *mapscriptc::MS_TOKEN_COMPARISON_GE;
*MS_TOKEN_COMPARISON_IEQ = *mapscriptc::MS_TOKEN_COMPARISON_IEQ;
*MS_TOKEN_COMPARISON_RE = *mapscriptc::MS_TOKEN_COMPARISON_RE;
*MS_TOKEN_COMPARISON_IRE = *mapscriptc::MS_TOKEN_COMPARISON_IRE;
*MS_TOKEN_COMPARISON_IN = *mapscriptc::MS_TOKEN_COMPARISON_IN;
*MS_TOKEN_COMPARISON_LIKE = *mapscriptc::MS_TOKEN_COMPARISON_LIKE;
*MS_TOKEN_COMPARISON_INTERSECTS = *mapscriptc::MS_TOKEN_COMPARISON_INTERSECTS;
*MS_TOKEN_COMPARISON_DISJOINT = *mapscriptc::MS_TOKEN_COMPARISON_DISJOINT;
*MS_TOKEN_COMPARISON_TOUCHES = *mapscriptc::MS_TOKEN_COMPARISON_TOUCHES;
*MS_TOKEN_COMPARISON_OVERLAPS = *mapscriptc::MS_TOKEN_COMPARISON_OVERLAPS;
*MS_TOKEN_COMPARISON_CROSSES = *mapscriptc::MS_TOKEN_COMPARISON_CROSSES;
*MS_TOKEN_COMPARISON_WITHIN = *mapscriptc::MS_TOKEN_COMPARISON_WITHIN;
*MS_TOKEN_COMPARISON_CONTAINS = *mapscriptc::MS_TOKEN_COMPARISON_CONTAINS;
*MS_TOKEN_COMPARISON_EQUALS = *mapscriptc::MS_TOKEN_COMPARISON_EQUALS;
*MS_TOKEN_COMPARISON_BEYOND = *mapscriptc::MS_TOKEN_COMPARISON_BEYOND;
*MS_TOKEN_COMPARISON_DWITHIN = *mapscriptc::MS_TOKEN_COMPARISON_DWITHIN;
*MS_TOKEN_FUNCTION_LENGTH = *mapscriptc::MS_TOKEN_FUNCTION_LENGTH;
*MS_TOKEN_FUNCTION_TOSTRING = *mapscriptc::MS_TOKEN_FUNCTION_TOSTRING;
*MS_TOKEN_FUNCTION_COMMIFY = *mapscriptc::MS_TOKEN_FUNCTION_COMMIFY;
*MS_TOKEN_FUNCTION_AREA = *mapscriptc::MS_TOKEN_FUNCTION_AREA;
*MS_TOKEN_FUNCTION_ROUND = *mapscriptc::MS_TOKEN_FUNCTION_ROUND;
*MS_TOKEN_FUNCTION_FROMTEXT = *mapscriptc::MS_TOKEN_FUNCTION_FROMTEXT;
*MS_TOKEN_FUNCTION_BUFFER = *mapscriptc::MS_TOKEN_FUNCTION_BUFFER;
*MS_TOKEN_FUNCTION_DIFFERENCE = *mapscriptc::MS_TOKEN_FUNCTION_DIFFERENCE;
*MS_TOKEN_FUNCTION_SIMPLIFY = *mapscriptc::MS_TOKEN_FUNCTION_SIMPLIFY;
*MS_TOKEN_FUNCTION_SIMPLIFYPT = *mapscriptc::MS_TOKEN_FUNCTION_SIMPLIFYPT;
*MS_TOKEN_FUNCTION_GENERALIZE = *mapscriptc::MS_TOKEN_FUNCTION_GENERALIZE;
*MS_TOKEN_FUNCTION_SMOOTHSIA = *mapscriptc::MS_TOKEN_FUNCTION_SMOOTHSIA;
*MS_TOKEN_FUNCTION_CENTERLINE = *mapscriptc::MS_TOKEN_FUNCTION_CENTERLINE;
*MS_TOKEN_FUNCTION_DENSIFY = *mapscriptc::MS_TOKEN_FUNCTION_DENSIFY;
*MS_TOKEN_FUNCTION_OUTER = *mapscriptc::MS_TOKEN_FUNCTION_OUTER;
*MS_TOKEN_FUNCTION_INNER = *mapscriptc::MS_TOKEN_FUNCTION_INNER;
*MS_TOKEN_FUNCTION_JAVASCRIPT = *mapscriptc::MS_TOKEN_FUNCTION_JAVASCRIPT;
*MS_TOKEN_FUNCTION_UPPER = *mapscriptc::MS_TOKEN_FUNCTION_UPPER;
*MS_TOKEN_FUNCTION_LOWER = *mapscriptc::MS_TOKEN_FUNCTION_LOWER;
*MS_TOKEN_FUNCTION_INITCAP = *mapscriptc::MS_TOKEN_FUNCTION_INITCAP;
*MS_TOKEN_FUNCTION_FIRSTCAP = *mapscriptc::MS_TOKEN_FUNCTION_FIRSTCAP;
*MS_TOKEN_BINDING_DOUBLE = *mapscriptc::MS_TOKEN_BINDING_DOUBLE;
*MS_TOKEN_BINDING_INTEGER = *mapscriptc::MS_TOKEN_BINDING_INTEGER;
*MS_TOKEN_BINDING_STRING = *mapscriptc::MS_TOKEN_BINDING_STRING;
*MS_TOKEN_BINDING_TIME = *mapscriptc::MS_TOKEN_BINDING_TIME;
*MS_TOKEN_BINDING_SHAPE = *mapscriptc::MS_TOKEN_BINDING_SHAPE;
*MS_TOKEN_BINDING_MAP_CELLSIZE = *mapscriptc::MS_TOKEN_BINDING_MAP_CELLSIZE;
*MS_TOKEN_BINDING_DATA_CELLSIZE = *mapscriptc::MS_TOKEN_BINDING_DATA_CELLSIZE;
*MS_PARSE_TYPE_BOOLEAN = *mapscriptc::MS_PARSE_TYPE_BOOLEAN;
*MS_PARSE_TYPE_STRING = *mapscriptc::MS_PARSE_TYPE_STRING;
*MS_PARSE_TYPE_SHAPE = *mapscriptc::MS_PARSE_TYPE_SHAPE;
*MS_PARSE_TYPE_SLD = *mapscriptc::MS_PARSE_TYPE_SLD;
*MS_NOOVERRIDE = *mapscriptc::MS_NOOVERRIDE;
*MS_STYLE_SINGLE_SIDED_OFFSET = *mapscriptc::MS_STYLE_SINGLE_SIDED_OFFSET;
*MS_STYLE_DOUBLE_SIDED_OFFSET = *mapscriptc::MS_STYLE_DOUBLE_SIDED_OFFSET;
*MS_LABEL_PERPENDICULAR_OFFSET = *mapscriptc::MS_LABEL_PERPENDICULAR_OFFSET;
*MS_LABEL_PERPENDICULAR_TOP_OFFSET = *mapscriptc::MS_LABEL_PERPENDICULAR_TOP_OFFSET;
*MS_SCALEBAR_INTERVALS_MIN = *mapscriptc::MS_SCALEBAR_INTERVALS_MIN;
*MS_SCALEBAR_INTERVALS_MAX = *mapscriptc::MS_SCALEBAR_INTERVALS_MAX;
*MS_SCALEBAR_WIDTH_MIN = *mapscriptc::MS_SCALEBAR_WIDTH_MIN;
*MS_SCALEBAR_WIDTH_MAX = *mapscriptc::MS_SCALEBAR_WIDTH_MAX;
*MS_SCALEBAR_HEIGHT_MIN = *mapscriptc::MS_SCALEBAR_HEIGHT_MIN;
*MS_SCALEBAR_HEIGHT_MAX = *mapscriptc::MS_SCALEBAR_HEIGHT_MAX;
*MS_SCALEBAR_OFFSET_MIN = *mapscriptc::MS_SCALEBAR_OFFSET_MIN;
*MS_SCALEBAR_OFFSET_MAX = *mapscriptc::MS_SCALEBAR_OFFSET_MAX;
*MS_LEGEND_KEYSIZE_MIN = *mapscriptc::MS_LEGEND_KEYSIZE_MIN;
*MS_LEGEND_KEYSIZE_MAX = *mapscriptc::MS_LEGEND_KEYSIZE_MAX;
*MS_LEGEND_KEYSPACING_MIN = *mapscriptc::MS_LEGEND_KEYSPACING_MIN;
*MS_LEGEND_KEYSPACING_MAX = *mapscriptc::MS_LEGEND_KEYSPACING_MAX;
*MS_RESOLUTION_MAX = *mapscriptc::MS_RESOLUTION_MAX;
*MS_RESOLUTION_MIN = *mapscriptc::MS_RESOLUTION_MIN;
*MS_VERSION_MAJOR = *mapscriptc::MS_VERSION_MAJOR;
*MS_VERSION_MINOR = *mapscriptc::MS_VERSION_MINOR;
*MS_VERSION_REV = *mapscriptc::MS_VERSION_REV;
*MS_VERSION = *mapscriptc::MS_VERSION;
*MS_VERSION_NUM = *mapscriptc::MS_VERSION_NUM;
*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_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_UNUSEDERR = *mapscriptc::MS_UNUSEDERR;
*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_OGLERR = *mapscriptc::MS_OGLERR;
*MS_RENDERERERR = *mapscriptc::MS_RENDERERERR;
*MS_V8ERR = *mapscriptc::MS_V8ERR;
*MS_OGCAPIERR = *mapscriptc::MS_OGCAPIERR;
*MS_FGBERR = *mapscriptc::MS_FGBERR;
*MS_NUMERRORCODES = *mapscriptc::MS_NUMERRORCODES;
*MESSAGELENGTH = *mapscriptc::MESSAGELENGTH;
*ROUTINELENGTH = *mapscriptc::ROUTINELENGTH;
*HTTPSTATUSLENGTH = *mapscriptc::HTTPSTATUSLENGTH;
*MS_ERROR_LANGUAGE = *mapscriptc::MS_ERROR_LANGUAGE;
*MS_HTTP_400_BAD_REQUEST = *mapscriptc::MS_HTTP_400_BAD_REQUEST;
*MS_HTTP_500_INTERNAL_SERVER_ERROR = *mapscriptc::MS_HTTP_500_INTERNAL_SERVER_ERROR;
*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_DEBUGLEVEL_DEVDEBUG = *mapscriptc::MS_DEBUGLEVEL_DEVDEBUG;
*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;
*wkp_none = *mapscriptc::wkp_none;
*wkp_lonlat = *mapscriptc::wkp_lonlat;
*wkp_gmerc = *mapscriptc::wkp_gmerc;
*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_HATCH = *mapscriptc::MS_SYMBOL_HATCH;
*MS_SYMBOL_SVG = *mapscriptc::MS_SYMBOL_SVG;
*MS_SYMBOL_ALLOCSIZE = *mapscriptc::MS_SYMBOL_ALLOCSIZE;
*MS_MAXVECTORPOINTS = *mapscriptc::MS_MAXVECTORPOINTS;
*MS_MAXPATTERNLENGTH = *mapscriptc::MS_MAXPATTERNLENGTH;
*MS_IMAGECACHESIZE = *mapscriptc::MS_IMAGECACHESIZE;
*MS_HASHSIZE = *mapscriptc::MS_HASHSIZE;
*MS_CONFIG_SECTION = *mapscriptc::MS_CONFIG_SECTION;
*MS_CONFIG_SECTION_ENV = *mapscriptc::MS_CONFIG_SECTION_ENV;
*MS_CONFIG_SECTION_MAPS = *mapscriptc::MS_CONFIG_SECTION_MAPS;
*MS_CONFIG_SECTION_PLUGINS = *mapscriptc::MS_CONFIG_SECTION_PLUGINS;
*MS_DEFAULT_CGI_PARAMS = *mapscriptc::MS_DEFAULT_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;
