updating to the latest module.
[mono.git] / mcs / class / System.Web / System.Web / HttpFileCollection.cs
1 // \r
2 // System.Web.HttpFileCollection\r
3 //\r
4 // Author:\r
5 //   Patrik Torstensson (Patrik.Torstensson@labs2.com)\r
6 //\r
7
8 //
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
16 // 
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
19 // 
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27 //
28 using System;\r
29 using System.Collections.Specialized;\r
30 \r
31 namespace System.Web {\r
32    public sealed class HttpFileCollection : NameObjectCollectionBase {\r
33       private HttpPostedFile [] _AllFiles;\r
34       private string [] _AllKeys;\r
35 \r
36       internal HttpFileCollection() : base() {\r
37       }\r
38 \r
39       internal void AddFile(string name, HttpPostedFile file) {\r
40          _AllFiles = null;\r
41          _AllKeys = null;\r
42 \r
43          BaseAdd(name, file);\r
44       }\r
45 \r
46       public void CopyTo(Array Dest, int index) {\r
47          if (null == _AllFiles) {\r
48             _AllFiles = new HttpPostedFile[Count];\r
49             for (int i = 0; i != Count; i++) {\r
50                _AllFiles[i] = Get(i);\r
51             }\r
52          }\r
53 \r
54          if (null != _AllFiles) {\r
55             _AllFiles.CopyTo(Dest, index);\r
56          }\r
57       }\r
58 \r
59       public HttpPostedFile Get(string Name) {\r
60          return (HttpPostedFile) BaseGet(Name);\r
61       }\r
62 \r
63       public HttpPostedFile Get(int index) {\r
64          return (HttpPostedFile) BaseGet(index);\r
65       }\r
66 \r
67       public string GetKey(int index) {\r
68          return BaseGetKey(index);\r
69       }\r
70 \r
71       public string [] AllKeys {\r
72          get {\r
73             if (null == _AllKeys) {\r
74                _AllKeys = BaseGetAllKeys();\r
75             }\r
76 \r
77             return _AllKeys;\r
78          }\r
79       }\r
80       \r
81       public HttpPostedFile this [string name] {\r
82          get {\r
83             return Get(name);\r
84          }\r
85       }\r
86 \r
87       public HttpPostedFile this [int index] {\r
88          get {\r
89             return Get(index);\r
90          }\r
91       }\r
92    \r
93    }\r
94 }\r