module BinData::AcceptedParametersPlugin

def accepted_parameters #:nodoc:

:nodoc:
def accepted_parameters #:nodoc:
  unless defined? @accepted_parameters
    ancestor_params = superclass.respond_to?(:accepted_parameters) ?
                        superclass.accepted_parameters : nil
    @accepted_parameters = AcceptedParameters.new(ancestor_params)
  end
  @accepted_parameters
end

def default_parameters(*args)

Default parameters can be overridden when instantiating a data object.
def default_parameters(*args)
  accepted_parameters.default(*args)
end

def mandatory_parameters(*args)

Mandatory parameters must be present when instantiating a data object.
def mandatory_parameters(*args)
  accepted_parameters.mandatory(*args)
end

def mutually_exclusive_parameters(*args)

instantiating a data object.
Mutually exclusive parameters may not all be present when
def mutually_exclusive_parameters(*args)
  accepted_parameters.mutually_exclusive(*args)
end

def optional_parameters(*args)

Optional parameters may be present when instantiating a data object.
def optional_parameters(*args)
  accepted_parameters.optional(*args)
end