import random import string import sys # Parameters for tweaking: MAX_CLASSES = 10 MAX_FUNC_PER_CLASS = 10 # Only the unique suffix, not counting "Class" or "Function" CLASS_NAME_LEN = 6 FUNC_NAME_LEN = 8 def random_camel_case(length: int) -> str: """Return a random string with first letter capitalized.""" return "".join( [ random.choice(string.ascii_uppercase), *random.choices(string.ascii_lowercase, k=length - 1), ] ) # If the first parameter is an integer, use it as the seed. try: seed = int(sys.argv[1]) except (IndexError, ValueError): seed = random.randint(0, 10000) random.seed(seed) print(f"// Seed: {seed}\n") num_classes = random.randint(1, MAX_CLASSES) for i in range(num_classes): class_name = "Class" + random_camel_case(CLASS_NAME_LEN) print(f"class {class_name} {{") num_functions = random.randint(1, MAX_FUNC_PER_CLASS) for j in range(num_functions): function_name = "Function" + random_camel_case(FUNC_NAME_LEN) print(f"\tinline void {function_name}() {{}}") print(f"}};\n") print()