// automatically generated by props.pl at $ Tue Feb 21 20:59:55 2006 $
template<class Code> struct CodeRange {
	Code first, last;
	bool operator <(Code rhs) const {return first < rhs;}
};
struct PropertyRange {
	CodePoint first, last;
	uchar property;
	bool operator <(CodePoint rhs) const {return first < rhs;}
};
template<class Element> static const Element* findInRange(const Element* first, const Element* last, CodePoint cp) {
	const Element* p = std::lower_bound(first, last, cp);
	if(p == last) return 0;
	else if(p->first == cp) return p;
	else if(p->first > cp && p != first && p[-1].last >= cp) return p - 1;
	else return 0;
}
static const PropertyRange categories_[];
static const std::size_t categoryCount_;
static const PropertyRange blocks_[];
static const std::size_t blockCount_;
static const PropertyRange scripts_[];
static const std::size_t scriptCount_;
static const char_t tableOfBp__White_Space_[];
static const CodeRange<char_t> tableOfBp__Bidi_Control_[];
static const CodeRange<char_t> tableOfBp__Join_Control_[];
static const char_t tableOfBp__Dash_[];
static const char_t tableOfBp__Hyphen_[];
static const char_t tableOfBp__Quotation_Mark_[];
static const CodeRange<char_t> tableOfBp__Terminal_Punctuation_[];
static const CodeRange<CodePoint> tableOfBp__Other_Math_[];
static const CodeRange<char_t> tableOfBp__Hex_Digit_[];
static const CodeRange<char_t> tableOfBp__ASCII_Hex_Digit_[];
static const CodeRange<CodePoint> tableOfBp__Other_Alphabetic_[];
static const CodeRange<CodePoint> tableOfBp__Ideographic_[];
static const CodeRange<CodePoint> tableOfBp__Diacritic_[];
static const char_t tableOfBp__Extender_[];
static const CodeRange<char_t> tableOfBp__Other_Lowercase_[];
static const CodeRange<char_t> tableOfBp__Other_Uppercase_[];
static const CodeRange<CodePoint> tableOfBp__Noncharacter_Code_Point_[];
static const CodePoint tableOfBp__Other_Grapheme_Extend_[];
static const CodePoint tableOfBp__Grapheme_Link_[];
static const CodeRange<char_t> tableOfBp__IDS_Binary_Operator_[];
static const CodeRange<char_t> tableOfBp__IDS_Trinary_Operator_[];
static const CodeRange<char_t> tableOfBp__Radical_[];
static const CodeRange<CodePoint> tableOfBp__Unified_Ideograph_[];
static const CodeRange<CodePoint> tableOfBp__Other_Default_Ignorable_Code_Point_[];
static const CodeRange<char_t> tableOfBp__Deprecated_[];
static const CodeRange<CodePoint> tableOfBp__Soft_Dotted_[];
static const CodeRange<char_t> tableOfBp__Logical_Order_Exception_[];
static const char_t tableOfBp__Other_ID_Start_[];
static const CodeRange<char_t> tableOfBp__Other_ID_Continue_[];
static const char_t tableOfBp__STerm_[];
static const CodeRange<CodePoint> tableOfBp__Variation_Selector_[];
static const char_t tableOfBp__Pattern_White_Space_[];
static const CodeRange<char_t> tableOfBp__Pattern_Syntax_[];
static const CodePoint NFD_SRC[];static const CodePoint NFD_RES[];