4 // Author: Rafael Teixeira (rafaelteixeirabr@hotmail.com)
6 // (C) 2002 Rafael Teixeira
10 // Permission is hereby granted, free of charge, to any person obtaining
11 // a copy of this software and associated documentation files (the
12 // "Software"), to deal in the Software without restriction, including
13 // without limitation the rights to use, copy, modify, merge, publish,
14 // distribute, sublicense, and/or sell copies of the Software, and to
15 // permit persons to whom the Software is furnished to do so, subject to
16 // the following conditions:
18 // The above copyright notice and this permission notice shall be
19 // included in all copies or substantial portions of the Software.
21 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
25 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
26 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
27 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31 namespace Mono
.GetOptions
34 [AttributeUsage(AttributeTargets
.Field
| AttributeTargets
.Property
| AttributeTargets
.Method
)]
35 public class OptionAttribute
: Attribute
37 public string ShortDescription
;
38 public char ShortForm
;
39 public string LongForm
;
40 public string AlternateForm
;
41 public int MaxOccurs
; // negative means there is no limit
43 private void SetValues(
44 string shortDescription
,
50 ShortDescription
= shortDescription
;
51 ShortForm
= shortForm
;
53 MaxOccurs
= maxOccurs
;
54 AlternateForm
= alternateForm
;
57 public OptionAttribute(string shortDescription
)
59 SetValues(shortDescription
, ' ', string.Empty
, string.Empty
, 1);
62 public OptionAttribute(string shortDescription
, char shortForm
)
64 SetValues(shortDescription
, shortForm
, string.Empty
, string.Empty
, 1);
67 public OptionAttribute(string shortDescription
, char shortForm
, string longForm
)
69 SetValues(shortDescription
, shortForm
, longForm
, string.Empty
, 1);
72 public OptionAttribute(string shortDescription
, string longForm
)
74 SetValues(shortDescription
, ' ', longForm
, string.Empty
, 1);
77 public OptionAttribute(string shortDescription
, char shortForm
, string longForm
, string alternateForm
)
79 SetValues(shortDescription
, shortForm
, longForm
, alternateForm
, 1);
82 public OptionAttribute(string shortDescription
, string longForm
, string alternateForm
)
84 SetValues(shortDescription
, ' ', longForm
, alternateForm
, 1);
87 public OptionAttribute(int maxOccurs
, string shortDescription
)
89 SetValues(shortDescription
, ' ', string.Empty
, string.Empty
, maxOccurs
);
92 public OptionAttribute(int maxOccurs
, string shortDescription
, char shortForm
)
94 SetValues(shortDescription
, shortForm
, string.Empty
, string.Empty
, maxOccurs
);
97 public OptionAttribute(int maxOccurs
, string shortDescription
, char shortForm
, string longForm
)
99 SetValues(shortDescription
, shortForm
, longForm
, string.Empty
, maxOccurs
);
102 public OptionAttribute(int maxOccurs
, string shortDescription
, string longForm
)
104 SetValues(shortDescription
, ' ', longForm
, string.Empty
, maxOccurs
);
107 public OptionAttribute(int maxOccurs
, string shortDescription
, char shortForm
, string longForm
, string alternateForm
)
109 SetValues(shortDescription
, shortForm
, longForm
, alternateForm
, maxOccurs
);
112 public OptionAttribute(int maxOccurs
, string shortDescription
, string longForm
, string alternateForm
)
114 SetValues(shortDescription
, ' ', longForm
, alternateForm
, maxOccurs
);