2002-01-08 Nick Drochak <ndrochak@gol.com>
[mono.git] / mcs / class / corlib / System.Security.Permissions / SecurityPermissionAttribute.cs
1 //------------------------------------------------------------------------------\r
2 // \r
3 // System.Security.Permissions.SecurityPermissionAttribute.cs \r
4 //\r
5 // Copyright (C) 2001 Nick Drochak, All Rights Reserved\r
6 // \r
7 // Author:         Nick Drochak, ndrochak@gol.com\r
8 // Created:        2002-01-06 \r
9 //\r
10 //------------------------------------------------------------------------------\r
11 \r
12 using System;\r
13 using System.Security;\r
14 using System.Security.Permissions;\r
15 \r
16 namespace System.Security.Permissions {\r
17         [System.AttributeUsage(\r
18                 System.AttributeTargets.Assembly \r
19                 | System.AttributeTargets.Class \r
20                 | System.AttributeTargets.Struct \r
21                 | System.AttributeTargets.Constructor \r
22                 | System.AttributeTargets.Method, \r
23                 AllowMultiple=true, \r
24                 Inherited=false)\r
25         ]\r
26         public sealed class SecurityPermissionAttribute : CodeAccessSecurityAttribute {\r
27                 private SecurityPermissionFlag m_Flags = SecurityPermissionFlag.NoFlags;\r
28 \r
29                 public SecurityPermissionAttribute(SecurityAction action) : base(action) {\r
30                         if (!SecurityAction.IsDefined(typeof(SecurityAction), action)) {\r
31                                 throw new System.ArgumentException(); \r
32                         }\r
33                 }\r
34 \r
35                 public bool Assertion {\r
36                         get{\r
37                                 return ((m_Flags & SecurityPermissionFlag.Assertion) != 0);\r
38                         }\r
39                         set{\r
40                                 if (value){\r
41                                         m_Flags |= SecurityPermissionFlag.Assertion;\r
42                                 }\r
43                                 else{\r
44                                         m_Flags -= SecurityPermissionFlag.Assertion;\r
45                                 }\r
46                         }\r
47                 }\r
48 \r
49                 public bool ControlAppDomain {\r
50                         get{\r
51                                 return ((m_Flags & SecurityPermissionFlag.ControlAppDomain) != 0);\r
52                         }\r
53                         set{\r
54                                 if (value){\r
55                                         m_Flags |= SecurityPermissionFlag.ControlAppDomain;\r
56                                 }\r
57                                 else{\r
58                                         m_Flags -= SecurityPermissionFlag.ControlAppDomain;\r
59                                 }\r
60                         }\r
61                 }\r
62 \r
63                 public bool ControlDomainPolicy {\r
64                         get{\r
65                                 return ((m_Flags & SecurityPermissionFlag.ControlDomainPolicy) != 0);\r
66                         }\r
67                         set{\r
68                                 if (value){\r
69                                         m_Flags |= SecurityPermissionFlag.ControlDomainPolicy;\r
70                                 }\r
71                                 else{\r
72                                         m_Flags -= SecurityPermissionFlag.ControlDomainPolicy;\r
73                                 }\r
74                         }\r
75                 }\r
76 \r
77                 public bool ControlEvidence {\r
78                         get{\r
79                                 return ((m_Flags & SecurityPermissionFlag.ControlEvidence) != 0);\r
80                         }\r
81                         set{\r
82                                 if (value){\r
83                                         m_Flags |= SecurityPermissionFlag.ControlEvidence;\r
84                                 }\r
85                                 else{\r
86                                         m_Flags -= SecurityPermissionFlag.ControlEvidence;\r
87                                 }\r
88                         }\r
89                 }\r
90                 \r
91                 public bool ControlPolicy {\r
92                         get{\r
93                                 return ((m_Flags & SecurityPermissionFlag.ControlPolicy) != 0);\r
94                         }\r
95                         set{\r
96                                 if (value){\r
97                                         m_Flags |= SecurityPermissionFlag.ControlPolicy;\r
98                                 }\r
99                                 else{\r
100                                         m_Flags -= SecurityPermissionFlag.ControlPolicy;\r
101                                 }\r
102                         }\r
103                 }\r
104                 \r
105                 public bool ControlPrincipal {\r
106                         get{\r
107                                 return ((m_Flags & SecurityPermissionFlag.ControlPrincipal) != 0);\r
108                         }\r
109                         set{\r
110                                 if (value){\r
111                                         m_Flags |= SecurityPermissionFlag.ControlPrincipal;\r
112                                 }\r
113                                 else{\r
114                                         m_Flags -= SecurityPermissionFlag.ControlPrincipal;\r
115                                 }\r
116                         }\r
117                 }\r
118 \r
119                 public bool ControlThread {\r
120                         get{\r
121                                 return ((m_Flags & SecurityPermissionFlag.ControlThread) != 0);\r
122                         }\r
123                         set{\r
124                                 if (value){\r
125                                         m_Flags |= SecurityPermissionFlag.ControlThread;\r
126                                 }\r
127                                 else{\r
128                                         m_Flags -= SecurityPermissionFlag.ControlThread;\r
129                                 }\r
130                         }\r
131                 }\r
132 \r
133                 public bool Execution {\r
134                         get{\r
135                                 return ((m_Flags & SecurityPermissionFlag.Execution) != 0);\r
136                         }\r
137                         set{\r
138                                 if (value){\r
139                                         m_Flags |= SecurityPermissionFlag.Execution;\r
140                                 }\r
141                                 else{\r
142                                         m_Flags -= SecurityPermissionFlag.Execution;\r
143                                 }\r
144                         }\r
145                 }\r
146 \r
147                 public bool Infrastructure {\r
148                         get{\r
149                                 return ((m_Flags & SecurityPermissionFlag.Infrastructure) != 0);\r
150                         }\r
151                         set{\r
152                                 if (value){\r
153                                         m_Flags |= SecurityPermissionFlag.Infrastructure;\r
154                                 }\r
155                                 else{\r
156                                         m_Flags -= SecurityPermissionFlag.Infrastructure;\r
157                                 }\r
158                         }\r
159                 }\r
160 \r
161                 public bool RemotingConfiguration {\r
162                         get{\r
163                                 return ((m_Flags & SecurityPermissionFlag.RemotingConfiguration) != 0);\r
164                         }\r
165                         set{\r
166                                 if (value){\r
167                                         m_Flags |= SecurityPermissionFlag.RemotingConfiguration;\r
168                                 }\r
169                                 else{\r
170                                         m_Flags -= SecurityPermissionFlag.RemotingConfiguration;\r
171                                 }\r
172                         }\r
173                 }\r
174                 \r
175                 public bool SerializationFormatter {\r
176                         get{\r
177                                 return ((m_Flags & SecurityPermissionFlag.SerializationFormatter) != 0);\r
178                         }\r
179                         set{\r
180                                 if (value){\r
181                                         m_Flags |= SecurityPermissionFlag.SerializationFormatter;\r
182                                 }\r
183                                 else{\r
184                                         m_Flags -= SecurityPermissionFlag.SerializationFormatter;\r
185                                 }\r
186                         }\r
187                 }\r
188                 \r
189                 public bool SkipVerification {\r
190                         get{\r
191                                 return ((m_Flags & SecurityPermissionFlag.SkipVerification) != 0);\r
192                         }\r
193                         set{\r
194                                 if (value){\r
195                                         m_Flags |= SecurityPermissionFlag.SkipVerification;\r
196                                 }\r
197                                 else{\r
198                                         m_Flags -= SecurityPermissionFlag.SkipVerification;\r
199                                 }\r
200                         }\r
201                 }\r
202 \r
203                 public override IPermission CreatePermission() {\r
204                         return new SecurityPermission(m_Flags);\r
205                 }\r
206 \r
207                 public SecurityPermissionFlag Flags {\r
208                         get {\r
209                                 return m_Flags;\r
210                         }\r
211                         set {\r
212                                 m_Flags = value;\r
213                         }\r
214                 }\r
215         }  // public sealed class SecurityPermissionAttribute \r
216 }  // namespace System.Security.Permissions\r