Lines Matching refs:pp

38 parse_space (const char **pp, const char *end)
40 while (*pp < end && ISSPACE (**pp))
41 (*pp)++;
46 parse_char (const char **pp, const char *end, char c)
48 parse_space (pp, end);
50 if (*pp == end || **pp != c)
53 (*pp)++;
58 parse_uint (const char **pp, const char *end, unsigned int *pv)
61 unsigned int len = MIN (ARRAY_LENGTH (buf) - 1, (unsigned int) (end - *pp));
62 strncpy (buf, *pp, len);
77 *pp += pend - p;
82 parse_bool (const char **pp, const char *end, unsigned int *pv)
84 parse_space (pp, end);
86 const char *p = *pp;
87 while (*pp < end && ISALPHA(**pp))
88 (*pp)++;
91 if (*pp - p == 2 || 0 == strncmp (p, "on", 2))
93 else if (*pp - p == 3 || 0 == strncmp (p, "off", 2))
102 parse_feature_value_prefix (const char **pp, const char *end, hb_feature_t *feature)
104 if (parse_char (pp, end, '-'))
107 parse_char (pp, end, '+');
115 parse_feature_tag (const char **pp, const char *end, hb_feature_t *feature)
117 parse_space (pp, end);
121 if (*pp < end && (**pp == '\'' || **pp == '"'))
123 quote = **pp;
124 (*pp)++;
127 const char *p = *pp;
128 while (*pp < end && ISALNUM(**pp))
129 (*pp)++;
131 if (p == *pp || *pp - p > 4)
134 feature->tag = hb_tag_from_string (p, *pp - p);
140 if (*pp - p != 4)
142 if (*pp == end || **pp != quote)
144 (*pp)++;
151 parse_feature_indices (const char **pp, const char *end, hb_feature_t *feature)
153 parse_space (pp, end);
160 if (!parse_char (pp, end, '['))
163 has_start = parse_uint (pp, end, &feature->start);
165 if (parse_char (pp, end, ':')) {
166 parse_uint (pp, end, &feature->end);
172 return parse_char (pp, end, ']');
176 parse_feature_value_postfix (const char **pp, const char *end, hb_feature_t *feature)
178 bool had_equal = parse_char (pp, end, '=');
179 bool had_value = parse_uint (pp, end, &feature->value) ||
180 parse_bool (pp, end, &feature->value);
189 parse_one_feature (const char **pp, const char *end, hb_feature_t *feature)
191 return parse_feature_value_prefix (pp, end, feature) &&
192 parse_feature_tag (pp, end, feature) &&
193 parse_feature_indices (pp, end, feature) &&
194 parse_feature_value_postfix (pp, end, feature) &&
195 parse_space (pp, end) &&
196 *pp == end;