| package winapi_function; | |
| use strict; | |
| sub new { | |
| my $proto = shift; | |
| my $class = ref($proto) || $proto; | |
| my $self = {}; | |
| bless ($self, $class); | |
| return $self; | |
| } | |
| sub file { | |
| my $self = shift; | |
| my $file = \${$self->{FILE}}; | |
| local $_ = shift; | |
| if(defined($_)) { $$file = $_; } | |
| return $$file; | |
| } | |
| sub documentation { | |
| my $self = shift; | |
| my $documentation = \${$self->{DOCUMENTATION}}; | |
| local $_ = shift; | |
| if(defined($_)) { $$documentation = $_; } | |
| return $$documentation; | |
| } | |
| sub linkage { | |
| my $self = shift; | |
| my $linkage = \${$self->{LINKAGE}}; | |
| local $_ = shift; | |
| if(defined($_)) { $$linkage = $_; } | |
| return $$linkage; | |
| } | |
| sub return_type { | |
| my $self = shift; | |
| my $return_type = \${$self->{RETURN_TYPE}}; | |
| local $_ = shift; | |
| if(defined($_)) { $$return_type = $_; } | |
| return $$return_type; | |
| } | |
| sub calling_convention { | |
| my $self = shift; | |
| my $calling_convention = \${$self->{CALLING_CONVENTION}}; | |
| local $_ = shift; | |
| if(defined($_)) { $$calling_convention = $_; } | |
| return $$calling_convention; | |
| } | |
| sub name { | |
| my $self = shift; | |
| my $name = \${$self->{NAME}}; | |
| local $_ = shift; | |
| if(defined($_)) { $$name = $_; } | |
| return $$name; | |
| } | |
| sub arguments { | |
| my $self = shift; | |
| my $arguments = \${$self->{ARGUMENTS}}; | |
| local $_ = shift; | |
| if(defined($_)) { $$arguments = $_; } | |
| return $$arguments; | |
| } | |
| sub module16 { | |
| my $self = shift; | |
| my $module16 = \${$self->{MODULE16}}; | |
| local $_ = shift; | |
| if(defined($_)) { $$module16 = $_; } | |
| return $$module16; | |
| } | |
| sub module32 { | |
| my $self = shift; | |
| my $module32 = \${$self->{MODULE32}}; | |
| local $_ = shift; | |
| if(defined($_)) { $$module32 = $_; } | |
| return $$module32; | |
| } | |
| sub statements { | |
| my $self = shift; | |
| my $statements = \${$self->{STATEMENTS}}; | |
| local $_ = shift; | |
| if(defined($_)) { $$statements = $_; } | |
| return $$statements; | |
| } | |
| sub module { | |
| my $self = shift; | |
| my $module16 = \${$self->{MODULE16}}; | |
| my $module32 = \${$self->{MODULE32}}; | |
| my $module; | |
| if(defined($$module16) && defined($$module32)) { | |
| $module = "$$module16 & $$module32"; | |
| } elsif(defined($$module16)) { | |
| $module = $$module16; | |
| } elsif(defined($$module32)) { | |
| $module = $$module32; | |
| } else { | |
| $module = ""; | |
| } | |
| } | |
| sub function_called { | |
| my $self = shift; | |
| my $called_function_names = \%{$self->{CALLED_FUNCTION_NAMES}}; | |
| my $name = shift; | |
| $$called_function_names{$name}++; | |
| } | |
| sub function_called_by { | |
| my $self = shift; | |
| my $called_by_function_names = \%{$self->{CALLED_BY_FUNCTION_NAMES}}; | |
| my $name = shift; | |
| $$called_by_function_names{$name}++; | |
| } | |
| sub called_function_names { | |
| my $self = shift; | |
| my $called_function_names = \%{$self->{CALLED_FUNCTION_NAMES}}; | |
| return sort(keys(%$called_function_names)); | |
| } | |
| sub called_by_function_names { | |
| my $self = shift; | |
| my $called_by_function_names = \%{$self->{CALLED_BY_FUNCTION_NAMES}}; | |
| return sort(keys(%$called_by_function_names)); | |
| } | |
| 1; |