static int property_name_to_ctype(OnigEncoding enc, UChar* p, UChar* end) { st_data_t ctype; PROPERTY_LIST_INIT_CHECK; if (onig_st_lookup_strend(PropertyNameTable, p, end, &ctype) == 0) { return onigenc_minimum_property_name_to_ctype(enc, p, end); } return ctype; }
extern int onigenc_unicode_property_name_to_ctype(OnigEncoding enc, UChar* name, UChar* end) { int len; UChar *p; OnigCodePoint code; const struct PropertyNameCtype* pc; char buf[PROPERTY_NAME_MAX_SIZE]; p = name; len = 0; while (p < end) { code = ONIGENC_MBC_TO_CODE(enc, p, end); if (code >= 0x80) return ONIGERR_INVALID_CHAR_PROPERTY_NAME; if (code != ' ' && code != '-' && code != '_') { buf[len++] = (char )code; if (len >= PROPERTY_NAME_MAX_SIZE) return ONIGERR_INVALID_CHAR_PROPERTY_NAME; } p += enclen(enc, p); } buf[len] = 0; if (UserDefinedPropertyTable != 0) { UserDefinedPropertyValue* e; e = (UserDefinedPropertyValue* )NULL; onig_st_lookup_strend(UserDefinedPropertyTable, (const UChar* )buf, (const UChar* )buf + len, (hash_data_type* )((void* )(&e))); if (e != 0) { return e->ctype; } } pc = unicode_lookup_property_name(buf, len); if (pc != 0) { /* fprintf(stderr, "LOOKUP: %s: %d\n", buf, pc->ctype); */ #ifndef USE_UNICODE_PROPERTIES if (pc->ctype > ONIGENC_MAX_STD_CTYPE) return ONIGERR_INVALID_CHAR_PROPERTY_NAME; #endif return pc->ctype; } return ONIGERR_INVALID_CHAR_PROPERTY_NAME; }
static int property_name_to_ctype(OnigEncoding enc, UChar* p, UChar* end) { hash_data_type ctype; UChar *s, *e; PROPERTY_LIST_INIT_CHECK; s = e = ALLOCA_N(UChar, end-p+1); for (; p < end; p++) { *e++ = ONIGENC_ASCII_CODE_TO_LOWER_CASE(*p); } if (onig_st_lookup_strend(PropertyNameTable, s, e, &ctype) == 0) { return onigenc_minimum_property_name_to_ctype(enc, s, e); } return (int)ctype; }