/*! @brief HFRange is the 64 bit analog of NSRange, containing a 64 bit location and length. */
typedef struct {
    unsigned long long location;
    unsigned long long length;
} HFRange;

/*! @brief HFFPRange is a struct used for representing floating point ranges, similar to NSRange.  It contains two long doubles.

  This is useful for (for example) showing the range of visible lines.  A double-precision value has 53 significant bits in the mantissa - so we would start to have precision problems at the high end of the range we can represent.  Long double has a 64 bit mantissa on Intel, which means that we would start to run into trouble at the very very end of our range - barely acceptable. */
typedef struct {
    long double location;
    long double length;
} HFFPRange;