def define_value(short_name, long_name, description, flag, default_value, validate = nil)
			short_name = short_name.to_s
			long_name = long_name.to_s
			
			if (short_name.length != 1)
				raise ArgumentError, "Short name must be one character long (#{short_name})"
			end
			if (long_name.length < 2)
				raise ArgumentError, "Long name must be more than one character long (#{long_name})"
			end
			
			info = Info.new(short_name, long_name, description, flag, default_value, nil, validate)
			@options[long_name] = info
			@options[short_name] = info
			
			@order.push(info)
			
			method_name = long_name.gsub('-','_')
			method_name << "?" if (flag)
			(class <<self; self; end).class_eval do
				define_method(method_name.to_sym) do
					return @options[long_name].value || @options[long_name].default_value
				end
			end
			
			return self
		end
def define_value(short_name, long_name, description, flag, default_value, validate = nil)
			short_name = short_name.to_s
			long_name = long_name.to_s
			
			if (short_name.length != 1)
				raise ArgumentError, "Short name must be one character long (#{short_name})"
			end
			if (long_name.length < 2)
				raise ArgumentError, "Long name must be more than one character long (#{long_name})"
			end
			
			info = Info.new(short_name, long_name, description, flag, default_value, nil, validate)
			@options[long_name] = info
			@options[short_name] = info
			
			@order.push(info)
			
			method_name = long_name.gsub('-','_')
			method_name << "?" if (flag)
			(class <<self; self; end).class_eval do
				define_method(method_name.to_sym) do
					return @options[long_name].value || @options[long_name].default_value
				end
			end
			
			return self
		end
If a block is passed in, it is given self.