perlchunks.h

text/x-chdr

Filename: perlchunks.h
Type: text/x-chdr
Part: 3
Message: Re: pl/perl extension fails on Windows
/*
 * DO NOT EDIT - THIS FILE IS AUTOGENERATED - CHANGES WILL BE LOST
 * Written by ./text2macro.pl from plc_perlboot.pl plc_trusted.pl
 */
#define PLC_PERLBOOT \
"use strict;\n" \
"use 5.008001;\n" \
"use vars qw(%_SHARED $_TD);\n" \
"PostgreSQL::InServer::Util::bootstrap();\n" \
"sub ::is_array_ref\n" \
"{\n" \
"	return ref($_[0]) =~ m/^(?:PostgreSQL::InServer::)?ARRAY$/;\n" \
"}\n" \
"sub ::encode_array_literal\n" \
"{\n" \
"	my ($arg, $delim) = @_;\n" \
"	return $arg unless (::is_array_ref($arg));\n" \
"	$delim = ', ' unless defined $delim;\n" \
"	my $res = '';\n" \
"	foreach my $elem (@$arg)\n" \
"	{\n" \
"		$res .= $delim if length $res;\n" \
"		if (ref $elem)\n" \
"		{\n" \
"			$res .= ::encode_array_literal($elem, $delim);\n" \
"		}\n" \
"		elsif (defined $elem)\n" \
"		{\n" \
"			(my $str = $elem) =~ s/([\"\\\\])/\\\\$1/g;\n" \
"			$res .= qq(\"$str\");\n" \
"		}\n" \
"		else\n" \
"		{\n" \
"			$res .= 'NULL';\n" \
"		}\n" \
"	}\n" \
"	return qq({$res});\n" \
"}\n" \
"sub ::encode_array_constructor\n" \
"{\n" \
"	my $arg = shift;\n" \
"	return ::quote_nullable($arg) unless ::is_array_ref($arg);\n" \
"	my $res = join \", \",\n" \
"	  map { (ref $_) ? ::encode_array_constructor($_) : ::quote_nullable($_) }\n" \
"	  @$arg;\n" \
"	return \"ARRAY[$res]\";\n" \
"}\n" \
"{\n" \
"	package PostgreSQL::InServer\n" \
"	  ;    ## no critic (RequireFilenameMatchesPackage);\n" \
"	use strict;\n" \
"	use warnings;\n" \
"	sub plperl_warn\n" \
"	{\n" \
"		(my $msg = shift) =~ s/\\(eval \\d+\\) //g;\n" \
"		chomp $msg;\n" \
"		&::elog(&::WARNING, $msg);\n" \
"	}\n" \
"	$SIG{__WARN__} = \\&plperl_warn;\n" \
"	sub plperl_die\n" \
"	{\n" \
"		(my $msg = shift) =~ s/\\(eval \\d+\\) //g;\n" \
"		die $msg;\n" \
"	}\n" \
"	$SIG{__DIE__} = \\&plperl_die;\n" \
"	sub mkfuncsrc\n" \
"	{\n" \
"		my ($name, $imports, $prolog, $src) = @_;\n" \
"		my $BEGIN = join \"\\n\", map {\n" \
"			my $names = $imports->{$_} || [];\n" \
"			\"$_->import(qw(@$names));\"\n" \
"		} sort keys %$imports;\n" \
"		$BEGIN &&= \"BEGIN { $BEGIN }\";\n" \
"		return qq[ package main; sub { $BEGIN $prolog $src } ];\n" \
"	}\n" \
"	sub mkfunc\n" \
"	{\n" \
"		## no critic (ProhibitNoStrict, ProhibitStringyEval);\n" \
"		no strict;      # default to no strict for the eval\n" \
"		no warnings;    # default to no warnings for the eval\n" \
"		my $ret = eval(mkfuncsrc(@_));\n" \
"		$@ =~ s/\\(eval \\d+\\) //g if $@;\n" \
"		return $ret;\n" \
"		## use critic\n" \
"	}\n" \
"	1;\n" \
"}\n" \
"{\n" \
"	package PostgreSQL::InServer::ARRAY;\n" \
"	use strict;\n" \
"	use warnings;\n" \
"	use overload\n" \
"	  '\"\"'  => \\&to_str,\n" \
"	  '@{}' => \\&to_arr;\n" \
"	sub to_str\n" \
"	{\n" \
"		my $self = shift;\n" \
"		return ::encode_typed_literal($self->{'array'}, $self->{'typeoid'});\n" \
"	}\n" \
"	sub to_arr\n" \
"	{\n" \
"		return shift->{'array'};\n" \
"	}\n" \
"	1;\n" \
"}\n" \
""

#define PLC_TRUSTED \
"package PostgreSQL::InServer::safe\n" \
"  ;    ## no critic (RequireFilenameMatchesPackage);\n" \
"require strict;\n" \
"require Carp;\n" \
"require Carp::Heavy;\n" \
"require warnings;\n" \
"require feature if $] >= 5.010000;\n" \
""

/* end */