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.
29 namespace Mono
.GetOptions
33 [AttributeUsage(AttributeTargets
.Field
| AttributeTargets
.Property
| AttributeTargets
.Method
)]
34 public class OptionAttribute
: Attribute
36 public string ShortDescription
;
37 public char ShortForm
;
38 public string LongForm
;
39 public string AlternateForm
;
40 public int MaxOccurs
; // negative means there is no limit
42 public bool VBCStyleBoolean
;
43 public bool SecondLevelHelp
;
45 private void SetValues(
46 string shortDescription
,
52 ShortDescription
= shortDescription
;
53 ShortForm
= shortForm
;
55 MaxOccurs
= maxOccurs
;
56 AlternateForm
= alternateForm
;
59 public OptionAttribute(string shortDescription
)
61 SetValues(shortDescription
, ' ', string.Empty
, string.Empty
, 1);
64 public OptionAttribute(string shortDescription
, char shortForm
)
66 SetValues(shortDescription
, shortForm
, string.Empty
, string.Empty
, 1);
69 public OptionAttribute(string shortDescription
, char shortForm
, string longForm
)
71 SetValues(shortDescription
, shortForm
, longForm
, string.Empty
, 1);
74 public OptionAttribute(string shortDescription
, string longForm
)
76 SetValues(shortDescription
, ' ', longForm
, string.Empty
, 1);
79 public OptionAttribute(string shortDescription
, char shortForm
, string longForm
, string alternateForm
)
81 SetValues(shortDescription
, shortForm
, longForm
, alternateForm
, 1);
84 public OptionAttribute(string shortDescription
, string longForm
, string alternateForm
)
86 SetValues(shortDescription
, ' ', longForm
, alternateForm
, 1);
89 public OptionAttribute(int maxOccurs
, string shortDescription
)
91 SetValues(shortDescription
, ' ', string.Empty
, string.Empty
, maxOccurs
);
94 public OptionAttribute(int maxOccurs
, string shortDescription
, char shortForm
)
96 SetValues(shortDescription
, shortForm
, string.Empty
, string.Empty
, maxOccurs
);
99 public OptionAttribute(int maxOccurs
, string shortDescription
, char shortForm
, string longForm
)
101 SetValues(shortDescription
, shortForm
, longForm
, string.Empty
, maxOccurs
);
104 public OptionAttribute(int maxOccurs
, string shortDescription
, string longForm
)
106 SetValues(shortDescription
, ' ', longForm
, string.Empty
, maxOccurs
);
109 public OptionAttribute(int maxOccurs
, string shortDescription
, char shortForm
, string longForm
, string alternateForm
)
111 SetValues(shortDescription
, shortForm
, longForm
, alternateForm
, maxOccurs
);
114 public OptionAttribute(int maxOccurs
, string shortDescription
, string longForm
, string alternateForm
)
116 SetValues(shortDescription
, ' ', longForm
, alternateForm
, maxOccurs
);