## IpatchRange IpatchRange — A boxed type which defines a number range |

## Stability Level

Stable, unless otherwise indicated

## Synopsis

                        IpatchRange;
                        IpatchParamSpecRange;
    #define             IPATCH_TYPE_RANGE
    #define             IPATCH_VALUE_HOLDS_RANGE            (value)
    #define             IPATCH_RANGE_SET_VALUES             (range, val1, val2)
    #define             IPATCH_RANGE_SET_NULL               (range)
    IpatchRange *       ipatch_range_new                    (int low,
                                                             int high);
    IpatchRange *       ipatch_range_copy                   (IpatchRange *range);
    void                ipatch_range_free                   (IpatchRange *range);
    void                ipatch_value_set_range              (GValue *value,
                                                             const IpatchRange *range);
    void                ipatch_value_set_static_range       (GValue *value,
                                                             IpatchRange *range);
    IpatchRange *       ipatch_value_get_range              (const GValue *value);
    #define             IPATCH_TYPE_PARAM_RANGE
    GType               ipatch_param_spec_range_get_type    (void);
    GParamSpec *        ipatch_param_spec_range             (const char *name,
                                                             const char *nick,
                                                             const char *blurb,
                                                             int min,
                                                             int max,
                                                             int default_low,
                                                             int default_high,
                                                             GParamFlags flags);

## Description

Boxed type used for GValue and GParamSpec properties. Consists of a low and a high integer value defining a range.

## Details

### IpatchRange

    typedef struct {
      int low;		/* low endpoint of range or -1 if undefined */
      int high;	       /* high endpoint of range or -1 if undefined */
    } IpatchRange;

### IpatchParamSpecRange

    typedef struct {
      GParamSpec parent_instance;	/* derived from GParamSpec */
      int min, max;		  /* min and max values for range endpoints */
      int default_low, default_high; /* default vals for low and high endpoints */
    } IpatchParamSpecRange;

### IPATCH_TYPE_RANGE

    #define IPATCH_TYPE_RANGE   (ipatch_range_get_type ())

### IPATCH_VALUE_HOLDS_RANGE()

    #define             IPATCH_VALUE_HOLDS_RANGE(value)

### IPATCH_RANGE_SET_VALUES()

    #define             IPATCH_RANGE_SET_VALUES(range, val1, val2)

### IPATCH_RANGE_SET_NULL()

    #define             IPATCH_RANGE_SET_NULL(range)

### ipatch_range_new ()

    IpatchRange *       ipatch_range_new                    (int low,
                                                             int high);

Create a new value range structure (to store an integer range).

`low` : | Low value to initialize range to
`high` : | High value to initialize range to
Returns : | Newly allocated integer range structure.

### ipatch_range_copy ()

    IpatchRange *       ipatch_range_copy                   (IpatchRange *range);

Duplicates an integer range structure.

`range` : | Range structure to duplicate
Returns : | New duplicate range structure.

### ipatch_range_free ()

    void                ipatch_range_free                   (IpatchRange *range);

Free a range structure previously allocated with `ipatch_range_new()`.

`range` : | Integer range structure to free

### ipatch_value_set_range ()

    void                ipatch_value_set_range              (GValue *value,
                                                             const IpatchRange *range);

Set the range values of a IPATCH_TYPE_RANGE GValue. The `range` structure is copied.

`value` : | a valid GValue of IPATCH_TYPE_RANGE boxed type
`range` : | Range structure to assign to `value`

### ipatch_value_set_static_range ()

    void                ipatch_value_set_static_range       (GValue *value,
                                                             IpatchRange *range);

Set the range values of a IPATCH_TYPE_RANGE GValue. This function uses `range` directly and so it should be static, use `ipatch_value_set_range()` if the `range` value should be duplicated.

`value` : | A valid GValue of IPATCH_TYPE_RANGE boxed type
`range` : | Range structure to assign to `value`

### ipatch_value_get_range ()

    IpatchRange *       ipatch_value_get_range              (const GValue *value);

Get the range structure from a IPATCH_TYPE_RANGE GValue.

`value` : | A valid GValue of IPATCH_TYPE_RANGE boxed type
Returns : | IpatchRange structure containing the range values of `value` or `NULL` if not set. The returned structure is NOT duplicated and is the same pointer used in `value`.

### IPATCH_TYPE_PARAM_RANGE

    #define IPATCH_TYPE_PARAM_RANGE (ipatch_param_spec_range_get_type ())

### ipatch_param_spec_range_get_type ()

    GType               ipatch_param_spec_range_get_type    (void);

### ipatch_param_spec_range ()

    GParamSpec *        ipatch_param_spec_range             (const char *name,
                                                             const char *nick,
                                                             const char *blurb,
                                                             int min,
                                                             int max,
                                                             int default_low,
                                                             int default_high,
                                                             GParamFlags flags);

Create a parameter specification for IPATCH_TYPE_RANGE GValues.

`name` : | Property name
`nick` : | Property nick name
`blurb` : | Property description blurb
`min` : | Minimum value for range end points (can be -1 to allow undefined ranges)
`max` : | Maximum value for range end points
`default_low` : | Default value for low endpoint of range
`default_high` : | Default value for high endpoint of range
`flags` : | Property flags
Returns : | New range parameter specification.