15bd8deadSopenharmony_ci#!/usr/bin/env python3
25bd8deadSopenharmony_ci#
35bd8deadSopenharmony_ci# Copyright 2017-2021 The Khronos Group Inc.
45bd8deadSopenharmony_ci# SPDX-License-Identifier: Apache-2.0
55bd8deadSopenharmony_ci
65bd8deadSopenharmony_ci# nextfree.py - determine the next unused extension numbers.
75bd8deadSopenharmony_ci# Use this when registering a new extension
85bd8deadSopenharmony_ci#
95bd8deadSopenharmony_ci# Use: nextfree.py
105bd8deadSopenharmony_ci
115bd8deadSopenharmony_ciimport copy, os, re, string, sys
125bd8deadSopenharmony_ci
135bd8deadSopenharmony_cidef write(*args, **kwargs):
145bd8deadSopenharmony_ci    file = kwargs.pop('file', sys.stdout)
155bd8deadSopenharmony_ci    end = kwargs.pop('end', '\n')
165bd8deadSopenharmony_ci    file.write(' '.join([str(arg) for arg in args]))
175bd8deadSopenharmony_ci    file.write(end)
185bd8deadSopenharmony_ci
195bd8deadSopenharmony_ci# Load the registry
205bd8deadSopenharmony_cifile = 'registry.py'
215bd8deadSopenharmony_ciexec(open(file).read())
225bd8deadSopenharmony_ci
235bd8deadSopenharmony_ci# Track each number separately
245bd8deadSopenharmony_cikeys = { 'arbnumber', 'number', 'esnumber', 'scnumber' }
255bd8deadSopenharmony_cimax = {}
265bd8deadSopenharmony_cifor k in keys:
275bd8deadSopenharmony_ci    max[k] = 0
285bd8deadSopenharmony_ci
295bd8deadSopenharmony_ci# Loop over all extensions updating the max value
305bd8deadSopenharmony_cifor name,v in registry.items():
315bd8deadSopenharmony_ci    for k in keys:
325bd8deadSopenharmony_ci        if k in v.keys():
335bd8deadSopenharmony_ci            n = v[k]
345bd8deadSopenharmony_ci            if (n > max[k]):
355bd8deadSopenharmony_ci                max[k] = n
365bd8deadSopenharmony_ci
375bd8deadSopenharmony_ci# Report next free values
385bd8deadSopenharmony_cifor k in keys:
395bd8deadSopenharmony_ci    write('Next free', k, '=', max[k] + 1)
40