extended type system to use symbolic references
[cacao.git] / src / vm / access.h
1 /* src/vm/access.h - checking access rights
2
3    Copyright (C) 1996-2005 R. Grafl, A. Krall, C. Kruegel, C. Oates,
4    R. Obermaisser, M. Platter, M. Probst, S. Ring, E. Steiner,
5    C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich, J. Wenninger,
6    Institut f. Computersprachen - TU Wien
7
8    This file is part of CACAO.
9
10    This program is free software; you can redistribute it and/or
11    modify it under the terms of the GNU General Public License as
12    published by the Free Software Foundation; either version 2, or (at
13    your option) any later version.
14
15    This program is distributed in the hope that it will be useful, but
16    WITHOUT ANY WARRANTY; without even the implied warranty of
17    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
18    General Public License for more details.
19
20    You should have received a copy of the GNU General Public License
21    along with this program; if not, write to the Free Software
22    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
23    02111-1307, USA.
24
25    Contact: cacao@complang.tuwien.ac.at
26
27    Authors: Edwin Steiner
28
29    Changes:
30
31    $Id: access.h 2181 2005-04-01 16:53:33Z edwin $
32
33 */
34
35 #ifndef _ACCESS_H
36 #define _ACCESS_H
37
38 #include "vm/references.h"
39
40
41 /* macros *********************************************************************/
42
43 #define SAME_PACKAGE(a,b)                                  \
44                         ((a)->classloader == (b)->classloader &&       \
45                          (a)->packagename == (b)->packagename)
46
47 /* function prototypes ********************************************************/
48
49 /* is_accessible_class *********************************************************
50  
51    Check if a class is accessible from another class
52   
53    IN:
54        referer..........the class containing the reference
55        cls..............the result of resolving the reference
56   
57    RETURN VALUE:
58        true.............access permitted
59        false............access denied
60    
61    NOTE:
62        This function performs the checks listed in section 5.4.4.
63            "Access Control" of "The Java(TM) Virtual Machine Specification,
64            Second Edition".
65
66 *******************************************************************************/
67
68 bool
69 is_accessible_class(classinfo *referer,classinfo *cls);
70
71 /* is_accessible_member ********************************************************
72  
73    Check if a field or method is accessible from a given class
74   
75    IN:
76        referer..........the class containing the reference
77        cls..............the class declaring the member
78        memberflags......the access flags of the member
79   
80    RETURN VALUE:
81        true.............access permitted
82        false............access denied
83
84    NOTE:
85        This function only performs the checks listed in section 5.4.4.
86            "Access Control" of "The Java(TM) Virtual Machine Specification,
87            Second Edition".
88
89            In particular a special condition for protected access with is
90            part of the verification process according to the spec is not
91            checked in this function.
92    
93 *******************************************************************************/
94
95 bool
96 is_accessible_member(classinfo *referer,classinfo *declarer,s4 memberflags);
97
98 #endif /* _ACCESS_H */
99
100 /*
101  * These are local overrides for various environment variables in Emacs.
102  * Please do not remove this and leave it at the end of the file, where
103  * Emacs will automagically detect them.
104  * ---------------------------------------------------------------------
105  * Local variables:
106  * mode: c
107  * indent-tabs-mode: t
108  * c-basic-offset: 4
109  * tab-width: 4
110  * End:
111  * vim:noexpandtab:sw=4:ts=4:
112  */
113