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