// automatically generated by tools/gen-uprops.py at $ Sun Sep 18 16:51:34 2011 $
	}
}
namespace detail {
	struct CharacterPropertyPartition {
		CodePoint beginning;
		int property;
#if defined(ASCENSION_COMPILER_MSVC) && defined(_SECURE_SCL)
		bool operator<(const CharacterPropertyPartition& other) const {return beginning < other.beginning;}
#endif
	};
	template<typename CharT> struct CharacterPropertyRange {
		CharT beginning, end;
		int property;
#if defined(ASCENSION_COMPILER_MSVC) && defined(_SECURE_SCL)
		bool operator<(const CharacterPropertyRange& other) const {return beginning < other.beginning;}
#endif
	};
	template<typename T, typename CharT> struct CharacterPropertyRangeComparer {
		bool operator()(const T& lhs, CharT rhs) const {return lhs.beginning < rhs;}
		bool operator()(CharT lhs, const T& rhs) const {return lhs < rhs.beginning;}
#if defined(ASCENSION_COMPILER_MSVC) && defined(_SECURE_SCL)
		bool operator()(const T& lhs, const T& rhs) const {return lhs.beginning < rhs.beginning;}
#endif
	};
	struct CharacterPropertyValueName {
		const char* const name;
		const int value;
	};
	struct CharacterPropertyValueNameComparer {
		template<typename CharType>
		bool operator()(const CharacterPropertyValueName& lhs, const CharType* rhs) const {return text::ucd::PropertyNameComparer::compare(lhs.name, rhs) < 0;}
		template<typename CharType>
		bool operator()(const CharType* lhs, const CharacterPropertyValueName& rhs) const {return text::ucd::PropertyNameComparer::compare(lhs, rhs.name) < 0;}
#if defined(ASCENSION_COMPILER_MSVC) && defined(_SECURE_SCL)
		bool operator()(const CharacterPropertyValueName& lhs, const CharacterPropertyValueName& rhs) const {return text::ucd::PropertyNameComparer::compare(lhs.name, rhs.name) < 0;}
#endif
	};
}
namespace text {
	namespace ucd {
