Range Tables
************

A range table is a table that efficiently associated values with ranges of integers.

Note that range tables have a read syntax, like this:

     #s(range-table data ((-3 2) foo (5 20) bar))

This maps integers in the range (-3, 2) to foo and integers in the range (5, 20) to bar.

 -- Function: range-table-p object
     Return non-nil if OBJECT is a range table.

Introduction to Range Tables
============================

 -- Function: make-range-table
     Make a new, empty range table.

 -- Function: copy-range-table old-table
     Make a new range table which contains the same values for the same ranges as the given table.  The values will not themselves be copied.

Working With Range Tables
=========================

 -- Function: get-range-table pos table &optional default
     This function finds value for position POS in TABLE.  If there is no corresponding value, return DEFAULT (defaults to nil).

 -- Function: put-range-table start end val table
     This function sets the value for range (START, END) to be VAL in TABLE.

 -- Function: remove-range-table start end table
     This function removes the value for range (START, END) in TABLE.

 -- Function: clear-range-table table
     This function flushes TABLE.

 -- Function: map-range-table function table
     This function maps FUNCTION over entries in TABLE, calling it with three args, the beginning and end of the range and the corresponding value.