+static int
+_parse_extensions(struct parse_context *ctx,
+ struct parse_state *ps)
+{
+ for (;;) {
+ const struct sl_pp_token_info *input = _fetch_token(ctx, ps->in);
+ unsigned int enable;
+
+ if (!input) {
+ return -1;
+ }
+
+ switch (input->token) {
+ case SL_PP_EXTENSION_REQUIRE:
+ case SL_PP_EXTENSION_ENABLE:
+ case SL_PP_EXTENSION_WARN:
+ enable = 1;
+ break;
+ case SL_PP_EXTENSION_DISABLE:
+ enable = 0;
+ break;
+ default:
+ return 0;
+ }
+
+ ps->in++;
+ if (input->data.extension == ctx->dict.all) {
+ ctx->fragment_coord_conventions = enable;
+ }
+ else if (input->data.extension == ctx->dict._GL_ARB_fragment_coord_conventions) {
+ ctx->fragment_coord_conventions = enable;
+ }
+ }
+}
+
+