UniRange.vala
/*
Copyright (C) 2012 Johan Mattsson
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
namespace Supplement {
public class UniRange : GLib.Object {
public unichar start;
public unichar stop;
public UniRange (unichar start, unichar stop) {
this.start = start;
this.stop = stop;
}
public unichar length () {
return stop - start + 1;
}
public unichar get_char (unichar index) {
unichar result = start + index;
if (unlikely (index < 0)) {
warning ("Index is negative in UniRange.");
}
if (unlikely (!(start <= result <= stop))) {
warning ("Index out of range in UniRange (%u <= %u <= %u) (index: %u)\n", start, result, stop, index);
}
return result;
}
}
}