53 lines
881 B
Perl
53 lines
881 B
Perl
|
###################################################
|
||
|
# C utility functions for pidl
|
||
|
# Copyright jelmer@samba.org 2005-2007
|
||
|
# released under the GNU GPL
|
||
|
package Parse::Pidl::CUtil;
|
||
|
|
||
|
require Exporter;
|
||
|
@ISA = qw(Exporter);
|
||
|
@EXPORT = qw(get_pointer_to get_value_of get_array_element);
|
||
|
use vars qw($VERSION);
|
||
|
$VERSION = '0.01';
|
||
|
|
||
|
use strict;
|
||
|
|
||
|
sub get_pointer_to($)
|
||
|
{
|
||
|
my $var_name = shift;
|
||
|
|
||
|
if ($var_name =~ /^\*(.*)$/) {
|
||
|
return $1;
|
||
|
} elsif ($var_name =~ /^\&(.*)$/) {
|
||
|
return "&($var_name)";
|
||
|
} else {
|
||
|
return "&$var_name";
|
||
|
}
|
||
|
}
|
||
|
|
||
|
sub get_value_of($)
|
||
|
{
|
||
|
my $var_name = shift;
|
||
|
|
||
|
if ($var_name =~ /^\&(.*)$/) {
|
||
|
return $1;
|
||
|
} else {
|
||
|
return "*$var_name";
|
||
|
}
|
||
|
}
|
||
|
|
||
|
sub get_array_element($$)
|
||
|
{
|
||
|
my ($var_name, $idx) = @_;
|
||
|
|
||
|
if ($var_name =~ /^\*.*$/) {
|
||
|
$var_name = "($var_name)";
|
||
|
} elsif ($var_name =~ /^\&.*$/) {
|
||
|
$var_name = "($var_name)";
|
||
|
}
|
||
|
|
||
|
return "$var_name"."[$idx]";
|
||
|
}
|
||
|
|
||
|
1;
|