Merge branch 'master' of ssh://git.samba.org/data/git/samba into regsrv
[kai/samba-autobuild/.git] / pidl / lib / Parse / Pidl / CUtil.pm
1 ###################################################
2 # C utility functions for pidl
3 # Copyright jelmer@samba.org 2005-2007
4 # released under the GNU GPL
5 package Parse::Pidl::CUtil;
6
7 require Exporter;
8 @ISA = qw(Exporter);
9 @EXPORT = qw(get_pointer_to get_value_of get_array_element);
10 use vars qw($VERSION);
11 $VERSION = '0.01';
12
13 use strict;
14
15 sub get_pointer_to($)
16 {
17         my $var_name = shift;
18         
19         if ($var_name =~ /^\*(.*)$/) {
20                 return $1;
21         } elsif ($var_name =~ /^\&(.*)$/) {
22                 return "&($var_name)";
23         } else {
24                 return "&$var_name";
25         }
26 }
27
28 sub get_value_of($)
29 {
30         my $var_name = shift;
31
32         if ($var_name =~ /^\&(.*)$/) {
33                 return $1;
34         } else {
35                 return "*$var_name";
36         }
37 }
38
39 sub get_array_element($$)
40 {
41         my ($var_name, $idx) = @_;
42
43         if ($var_name =~ /^\*.*$/) {
44                 $var_name = "($var_name)";
45         } elsif ($var_name =~ /^\&.*$/) {
46                 $var_name = "($var_name)";
47         }
48
49         return "$var_name"."[$idx]";
50 }
51
52 1;