428
+ − 1 /* XEmacs routines to deal with range tables.
+ − 2 Copyright (C) 1995 Sun Microsystems, Inc.
2421
+ − 3 Copyright (C) 1995, 2004 Ben Wing.
428
+ − 4
+ − 5 This file is part of XEmacs.
+ − 6
+ − 7 XEmacs is free software; you can redistribute it and/or modify it
+ − 8 under the terms of the GNU General Public License as published by the
+ − 9 Free Software Foundation; either version 2, or (at your option) any
+ − 10 later version.
+ − 11
+ − 12 XEmacs is distributed in the hope that it will be useful, but WITHOUT
+ − 13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ − 14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ − 15 for more details.
+ − 16
+ − 17 You should have received a copy of the GNU General Public License
+ − 18 along with XEmacs; see the file COPYING. If not, write to
+ − 19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ − 20 Boston, MA 02111-1307, USA. */
+ − 21
+ − 22 /* Synched up with: Not in FSF. */
+ − 23
+ − 24 /* Extracted from rangetab.c by O. Galibert, 1998. */
+ − 25
440
+ − 26 #ifndef INCLUDED_rangetab_h_
+ − 27 #define INCLUDED_rangetab_h_
428
+ − 28
+ − 29 typedef struct range_table_entry range_table_entry;
+ − 30 struct range_table_entry
+ − 31 {
+ − 32 EMACS_INT first;
+ − 33 EMACS_INT last;
+ − 34 Lisp_Object val;
+ − 35 };
+ − 36
+ − 37 typedef struct
+ − 38 {
+ − 39 Dynarr_declare (range_table_entry);
+ − 40 } range_table_entry_dynarr;
+ − 41
2421
+ − 42 enum range_table_type
+ − 43 {
+ − 44 RANGE_START_CLOSED_END_OPEN,
+ − 45 RANGE_START_CLOSED_END_CLOSED,
+ − 46 RANGE_START_OPEN_END_CLOSED,
+ − 47 RANGE_START_OPEN_END_OPEN
+ − 48 };
+ − 49
428
+ − 50 struct Lisp_Range_Table
+ − 51 {
3017
+ − 52 struct LCRECORD_HEADER header;
428
+ − 53 range_table_entry_dynarr *entries;
2421
+ − 54 enum range_table_type type;
428
+ − 55 };
440
+ − 56 typedef struct Lisp_Range_Table Lisp_Range_Table;
428
+ − 57
440
+ − 58 DECLARE_LRECORD (range_table, Lisp_Range_Table);
+ − 59 #define XRANGE_TABLE(x) XRECORD (x, range_table, Lisp_Range_Table)
617
+ − 60 #define wrap_range_table(p) wrap_record (p, range_table)
428
+ − 61 #define RANGE_TABLEP(x) RECORDP (x, range_table)
+ − 62 #define CHECK_RANGE_TABLE(x) CHECK_RECORD (x, range_table)
+ − 63
440
+ − 64 #endif /* INCLUDED_rangetab_h_ */