/* * call-seq: * RangeFilter.new(field, options = {}) -> range_query * * Create a new RangeFilter on field +field+. There are two ways to build a * range filter. With the old-style options; +:lower+, +:upper+, * +:include_lower+ and +:include_upper+ or the new style options; +:<+, * +:<=+, +:>+ and +:>=+. The options' names should speak for themselves. * In the old-style options, limits are inclusive by default. * * == Examples * * f = RangeFilter.new(:date, :lower => "200501", :include_lower => false) * # is equivalent to * f = RangeFilter.new(:date, :< => "200501") * # is equivalent to * f = RangeFilter.new(:date, :lower_exclusive => "200501") * * f = RangeFilter.new(:date, :lower => "200501", :upper => 200502) * # is equivalent to * f = RangeFilter.new(:date, :>= => "200501", :<= => 200502) */ static VALUE frb_rf_init(VALUE self, VALUE rfield, VALUE roptions) { Filter *f; char *lterm = NULL; char *uterm = NULL; bool include_lower = false; bool include_upper = false; get_range_params(roptions, <erm, &uterm, &include_lower, &include_upper); f = rfilt_new(frb_field(rfield), lterm, uterm, include_lower, include_upper); Frt_Wrap_Struct(self, NULL, &frb_f_free, f); object_add(f, self); return self; }