def store_constraint(constr)
      # Update the constraint to track the index in the model
      index = @constr_count + 1
      constr.model = self
      constr.index = index
      constr.freeze
      @constr_count += 1

      # Set constraint properties
      GLPK.glp_set_row_name(@ptr, index, constr.name)

      case constr.sense
      when :==
        lb = ub = constr.rhs
        type = GLPK::GLP_FX
      when :>=
        lb = constr.rhs
        ub = Float::INFINITY
        type = GLPK::GLP_LO
      when :<=
        lb = -Float::INFINITY
        ub = constr.rhs
        type = GLPK::GLP_UP
      end
      GLPK.glp_set_row_bnds(@ptr, index, type, lb, ub)
    end
def store_constraint(constr)
      # Update the constraint to track the index in the model
      index = @constr_count + 1
      constr.model = self
      constr.index = index
      constr.freeze
      @constr_count += 1

      # Set constraint properties
      GLPK.glp_set_row_name(@ptr, index, constr.name)

      case constr.sense
      when :==
        lb = ub = constr.rhs
        type = GLPK::GLP_FX
      when :>=
        lb = constr.rhs
        ub = Float::INFINITY
        type = GLPK::GLP_LO
      when :<=
        lb = -Float::INFINITY
        ub = constr.rhs
        type = GLPK::GLP_UP
      end
      GLPK.glp_set_row_bnds(@ptr, index, type, lb, ub)
    end
Save the constraint to the model and update the constraint pointers