No longer directly accessing debuggee memory.
[wine] / tools / winapi_check / winapi_function.pm
1 package winapi_function;
2
3 use strict;
4
5 sub new {
6     my $proto = shift;
7     my $class = ref($proto) || $proto;
8     my $self  = {};
9     bless ($self, $class);
10
11     return $self;
12 }
13
14 sub file {
15     my $self = shift;
16     my $file = \${$self->{FILE}};
17
18     local $_ = shift;
19
20     if(defined($_)) { $$file = $_; }
21     
22     return $$file;
23 }
24
25 sub documentation {
26     my $self = shift;
27     my $documentation = \${$self->{DOCUMENTATION}};
28
29     local $_ = shift;
30
31     if(defined($_)) { $$documentation = $_; }
32     
33     return $$documentation;
34 }
35
36 sub return_type {
37     my $self = shift;
38     my $return_type = \${$self->{RETURN_TYPE}};
39
40     local $_ = shift;
41
42     if(defined($_)) { $$return_type = $_; }
43     
44     return $$return_type;
45 }
46
47 sub calling_convention {
48     my $self = shift;
49     my $calling_convention = \${$self->{CALLING_CONVENTION}};
50
51     local $_ = shift;
52
53     if(defined($_)) { $$calling_convention = $_; }
54     
55     return $$calling_convention;
56 }
57
58 sub name {
59     my $self = shift;
60     my $name = \${$self->{NAME}};
61
62     local $_ = shift;
63
64     if(defined($_)) { $$name = $_; }
65     
66     return $$name;
67 }
68
69 sub arguments {
70     my $self = shift;
71     my $arguments = \${$self->{ARGUMENTS}};
72
73     local $_ = shift;
74
75     if(defined($_)) { $$arguments = $_; }
76     
77     return $$arguments;
78 }
79
80 sub module16 {
81     my $self = shift;
82     my $module16 = \${$self->{MODULE16}};
83
84     local $_ = shift;
85
86     if(defined($_)) { $$module16 = $_; }
87     return $$module16;
88 }
89
90 sub module32 {
91     my $self = shift;
92     my $module32 = \${$self->{MODULE32}};
93
94     local $_ = shift;
95     
96     if(defined($_)) { $$module32 = $_; }        
97     return $$module32;
98 }
99
100 sub statements {
101     my $self = shift;
102     my $statements = \${$self->{STATEMENTS}};
103
104     local $_ = shift;
105
106     if(defined($_)) { $$statements = $_; }
107     
108     return $$statements;
109 }
110
111 sub module {
112     my $self = shift;
113     my $module16 = \${$self->{MODULE16}};
114     my $module32 = \${$self->{MODULE32}};
115
116     my $module;
117     if(defined($$module16) && defined($$module32)) {
118         $module = "$$module16 & $$module32";
119     } elsif(defined($$module16)) {
120         $module = $$module16;
121     } elsif(defined($$module32)) {
122         $module = $$module32;
123     } else {
124         $module = "";
125     }
126 }
127
128 sub function_called {    
129     my $self = shift;
130     my $called_function_names = \%{$self->{CALLED_FUNCTION_NAMES}};
131
132     my $name = shift;
133
134     $$called_function_names{$name}++;
135 }
136
137 sub function_called_by { 
138    my $self = shift;
139    my $called_by_function_names = \%{$self->{CALLED_BY_FUNCTION_NAMES}};
140
141    my $name = shift;
142
143    $$called_by_function_names{$name}++;
144 }
145
146 sub called_function_names {    
147     my $self = shift;
148     my $called_function_names = \%{$self->{CALLED_FUNCTION_NAMES}};
149
150     return sort(keys(%$called_function_names));
151 }
152
153 sub called_by_function_names {    
154     my $self = shift;
155     my $called_by_function_names = \%{$self->{CALLED_BY_FUNCTION_NAMES}};
156
157     return sort(keys(%$called_by_function_names));
158 }
159
160
161 1;