class Gecode::Set::Cardinality::SetSizeOperand

Public Instance Methods

constrain_equal(int_operand, constrain, propagation_options) click to toggle source
# File doc/tmp/rdoc_dev/gecoder/interface/constraints/set/cardinality.rb, line 34
def constrain_equal(int_operand, constrain, propagation_options)
  set = @set.to_set_var
  if constrain
    int_operand.must_be.in set.lower_bound.size..set.upper_bound.size
  end
  
  Gecode::Raw::cardinality(@model.active_space, set.bind, 
    int_operand.to_int_var.bind)
end
construct_receiver(params) click to toggle source
# File doc/tmp/rdoc_dev/gecoder/interface/constraints/set/cardinality.rb, line 45
def construct_receiver(params)
  receiver = pre_cardinality_construct_receiver(params)
  set = @set
  receiver.instance_eval{ @set = set }
  class <<receiver 
    alias_method :in_without_short_circuit, :in
    def in(range, options = {})
      if range.kind_of?(Range) and !@params[:negate] and 
          !options.has_key?(:reify)
        @params.update(:lhs => @set, :range => range)
        @model.add_constraint CardinalityConstraint.new(@model, @params)
      else
        in_without_short_circuit(range, options)
      end
    end
  end
  return receiver
end
pre_cardinality_construct_receiver(params)
Alias for: construct_receiver

Public Class Methods

new(model, set_op) click to toggle source
# File doc/tmp/rdoc_dev/gecoder/interface/constraints/set/cardinality.rb, line 29
def initialize(model, set_op)
  super model
  @set = set_op
end